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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (751) hide show
  1. package/dist/Agent-CN0EWRsR.d.mts +226 -0
  2. package/dist/Agent-RklVROrm.mjs +83 -0
  3. package/dist/Agent-RklVROrm.mjs.map +1 -0
  4. package/dist/AgentError-CggcAQ7V.d.mts +101 -0
  5. package/dist/AgentPolicy-CetmQrf3.d.mts +96 -0
  6. package/dist/AgentRuntime-BLyETCPo.mjs +4562 -0
  7. package/dist/AgentRuntime-BLyETCPo.mjs.map +1 -0
  8. package/dist/AgentRuntime-uxR_a4VM.d.mts +346 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-Dxu5zhOL.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-uggeJpv3.mjs +6368 -0
  13. package/dist/DurableAgentRuntime-uggeJpv3.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Oinuuedm.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/Ephemeral.d.mts +22 -0
  17. package/dist/Ephemeral.mjs +22 -0
  18. package/dist/Ephemeral.mjs.map +1 -0
  19. package/dist/EventSource-OqS_P9ug.d.mts +51 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  22. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  23. package/dist/Messaging-CkcIdt4I.d.mts +490 -0
  24. package/dist/MessagingHost-CRk0kXzT.d.mts +246 -0
  25. package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
  26. package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
  27. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  28. package/dist/Output-D6SkedVx.d.mts +25 -0
  29. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  30. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  31. package/dist/PreparedInputAdmission-C4HbjHgl.d.mts +38 -0
  32. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  33. package/dist/Records-BAGkekt8.d.mts +3570 -0
  34. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  35. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  36. package/dist/RunJournal-Cgg1kNvc.mjs +825 -0
  37. package/dist/RunJournal-Cgg1kNvc.mjs.map +1 -0
  38. package/dist/RunOptions-g1aigcKI.d.mts +915 -0
  39. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  40. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  41. package/dist/Schedule-H3SEYX9g.d.mts +842 -0
  42. package/dist/Scheduling-C9aIP8zT.mjs +691 -0
  43. package/dist/Scheduling-C9aIP8zT.mjs.map +1 -0
  44. package/dist/Subagent-Cy_hU1tv.mjs +1469 -0
  45. package/dist/Subagent-Cy_hU1tv.mjs.map +1 -0
  46. package/dist/Subagent-DyfzHNdv.d.mts +826 -0
  47. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  48. package/dist/SubagentHost-CJUBQlcc.d.mts +140 -0
  49. package/dist/Subscription-BEP8oQO5.d.mts +921 -0
  50. package/dist/SubscriptionInput-vAAOBrK7.d.mts +41 -0
  51. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  52. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  53. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  54. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  55. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  56. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  57. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  58. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  59. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  60. package/dist/ToolExposure.d.mts +6 -5
  61. package/dist/ToolExposure.mjs +17 -9
  62. package/dist/ToolExposure.mjs.map +1 -1
  63. package/dist/ToolReconciler-DQVaJfpE.d.mts +76 -0
  64. package/dist/ToolResult-DmmgoChv.d.mts +61 -0
  65. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  66. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  67. package/dist/Worker-CaPYykpe.d.mts +228 -0
  68. package/dist/agent-registration-CWDMOAZA.mjs +172 -0
  69. package/dist/agent-registration-CWDMOAZA.mjs.map +1 -0
  70. package/dist/capabilities/Approval.d.mts +114 -0
  71. package/dist/capabilities/Approval.mjs +226 -0
  72. package/dist/capabilities/Approval.mjs.map +1 -0
  73. package/dist/capabilities/Budget.d.mts +112 -0
  74. package/dist/capabilities/Budget.mjs +346 -0
  75. package/dist/capabilities/Budget.mjs.map +1 -0
  76. package/dist/capabilities/CodeMode.d.mts +157 -0
  77. package/dist/capabilities/CodeMode.mjs +522 -0
  78. package/dist/capabilities/CodeMode.mjs.map +1 -0
  79. package/dist/capabilities/Commands.d.mts +55 -0
  80. package/dist/capabilities/Commands.mjs +57 -0
  81. package/dist/capabilities/Commands.mjs.map +1 -0
  82. package/dist/capabilities/ContextTools.d.mts +321 -0
  83. package/dist/capabilities/ContextTools.mjs +126 -0
  84. package/dist/capabilities/ContextTools.mjs.map +1 -0
  85. package/dist/capabilities/Mcp.d.mts +108 -0
  86. package/dist/capabilities/Mcp.mjs +260 -0
  87. package/dist/capabilities/Mcp.mjs.map +1 -0
  88. package/dist/capabilities/McpClient.d.mts +115 -0
  89. package/dist/capabilities/McpClient.mjs +506 -0
  90. package/dist/capabilities/McpClient.mjs.map +1 -0
  91. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  92. package/dist/capabilities/MemoryNotes.mjs +128 -0
  93. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  94. package/dist/capabilities/Messaging.d.mts +3 -0
  95. package/dist/capabilities/Messaging.mjs +151 -0
  96. package/dist/capabilities/Messaging.mjs.map +1 -0
  97. package/dist/capabilities/ModelContext.d.mts +89 -0
  98. package/dist/capabilities/ModelContext.mjs +168 -0
  99. package/dist/capabilities/ModelContext.mjs.map +1 -0
  100. package/dist/capabilities/Redaction.d.mts +37 -0
  101. package/dist/capabilities/Redaction.mjs +104 -0
  102. package/dist/capabilities/Redaction.mjs.map +1 -0
  103. package/dist/capabilities/Remembering.d.mts +434 -0
  104. package/dist/capabilities/Remembering.mjs +290 -0
  105. package/dist/capabilities/Remembering.mjs.map +1 -0
  106. package/dist/capabilities/RunHooks.d.mts +82 -0
  107. package/dist/capabilities/RunHooks.mjs +144 -0
  108. package/dist/capabilities/RunHooks.mjs.map +1 -0
  109. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  110. package/dist/capabilities/SemanticMemory.mjs +315 -0
  111. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  112. package/dist/capabilities/Subagent.d.mts +4 -0
  113. package/dist/capabilities/Subagent.mjs +5 -0
  114. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  115. package/dist/capabilities/SubagentReservations.mjs +479 -0
  116. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  117. package/dist/capabilities/ToolDiscovery.d.mts +109 -0
  118. package/dist/capabilities/ToolDiscovery.mjs +211 -0
  119. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  120. package/dist/capabilities/WebCapture.d.mts +163 -0
  121. package/dist/capabilities/WebCapture.mjs +335 -0
  122. package/dist/capabilities/WebCapture.mjs.map +1 -0
  123. package/dist/capabilities/WebSearch.d.mts +71 -0
  124. package/dist/capabilities/WebSearch.mjs +112 -0
  125. package/dist/capabilities/WebSearch.mjs.map +1 -0
  126. package/dist/compaction-C2OTceKw.mjs +505 -0
  127. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  128. package/dist/core/Agent.d.mts +2 -0
  129. package/dist/core/Agent.mjs +2 -0
  130. package/dist/core/AgentError.d.mts +2 -0
  131. package/dist/core/AgentError.mjs +117 -0
  132. package/dist/core/AgentError.mjs.map +1 -0
  133. package/dist/core/AgentPolicy.d.mts +2 -0
  134. package/dist/core/AgentPolicy.mjs +94 -0
  135. package/dist/core/AgentPolicy.mjs.map +1 -0
  136. package/dist/core/AgentUpdates.d.mts +2 -0
  137. package/dist/core/AgentUpdates.mjs +63 -0
  138. package/dist/core/AgentUpdates.mjs.map +1 -0
  139. package/dist/core/IdGenerator.d.mts +26 -0
  140. package/dist/core/IdGenerator.mjs +27 -0
  141. package/dist/core/IdGenerator.mjs.map +1 -0
  142. package/dist/core/Identifiers.d.mts +2 -0
  143. package/dist/core/Identifiers.mjs +43 -0
  144. package/dist/core/Identifiers.mjs.map +1 -0
  145. package/dist/core/Memory.d.mts +57 -0
  146. package/dist/core/Memory.mjs +203 -0
  147. package/dist/core/Memory.mjs.map +1 -0
  148. package/dist/core/MemoryNamespace.d.mts +2 -0
  149. package/dist/core/MemoryNamespace.mjs +116 -0
  150. package/dist/core/MemoryNamespace.mjs.map +1 -0
  151. package/dist/core/MemoryReference.d.mts +2 -0
  152. package/dist/core/MemoryReference.mjs +109 -0
  153. package/dist/core/MemoryReference.mjs.map +1 -0
  154. package/dist/core/MemoryRevalidation.d.mts +65 -0
  155. package/dist/core/MemoryRevalidation.mjs +126 -0
  156. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  157. package/dist/core/MemoryStore.d.mts +186 -0
  158. package/dist/core/MemoryStore.mjs +243 -0
  159. package/dist/core/MemoryStore.mjs.map +1 -0
  160. package/dist/core/Receipt.d.mts +2 -0
  161. package/dist/core/Receipt.mjs +36 -0
  162. package/dist/core/Receipt.mjs.map +1 -0
  163. package/dist/core/RememberingStore.d.mts +1562 -0
  164. package/dist/core/RememberingStore.mjs +190 -0
  165. package/dist/core/RememberingStore.mjs.map +1 -0
  166. package/dist/core/RunEvent.d.mts +2 -0
  167. package/dist/core/RunEvent.mjs +337 -0
  168. package/dist/core/RunEvent.mjs.map +1 -0
  169. package/dist/core/RunPolicyUsage.d.mts +2 -0
  170. package/dist/core/RunPolicyUsage.mjs +21 -0
  171. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  172. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  173. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  174. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  175. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  176. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  177. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  178. package/dist/core/SubagentContract.d.mts +2 -0
  179. package/dist/core/SubagentContract.mjs +148 -0
  180. package/dist/core/SubagentContract.mjs.map +1 -0
  181. package/dist/core/Thread.d.mts +2 -0
  182. package/dist/core/Thread.mjs +250 -0
  183. package/dist/core/Thread.mjs.map +1 -0
  184. package/dist/core/ToolResult.d.mts +2 -0
  185. package/dist/core/ToolResult.mjs +140 -0
  186. package/dist/core/ToolResult.mjs.map +1 -0
  187. package/dist/core/Usage.d.mts +2 -0
  188. package/dist/core/Usage.mjs +319 -0
  189. package/dist/core/Usage.mjs.map +1 -0
  190. package/dist/core/Worker.d.mts +3 -0
  191. package/dist/core/Worker.mjs +147 -0
  192. package/dist/core/Worker.mjs.map +1 -0
  193. package/dist/durable/ActivityStore.d.mts +116 -0
  194. package/dist/durable/ActivityStore.mjs +131 -0
  195. package/dist/durable/ActivityStore.mjs.map +1 -0
  196. package/dist/durable/Admin.d.mts +2 -0
  197. package/dist/durable/Admin.mjs +328 -0
  198. package/dist/durable/Admin.mjs.map +1 -0
  199. package/dist/durable/AgentRegistration.d.mts +2 -0
  200. package/dist/durable/AgentRegistration.mjs +14 -0
  201. package/dist/durable/AgentRegistration.mjs.map +1 -0
  202. package/dist/durable/Certification.d.mts +111 -0
  203. package/dist/durable/Certification.mjs +159 -0
  204. package/dist/durable/Certification.mjs.map +1 -0
  205. package/dist/durable/CommittedActivity.d.mts +62 -0
  206. package/dist/durable/CommittedActivity.mjs +159 -0
  207. package/dist/durable/CommittedActivity.mjs.map +1 -0
  208. package/dist/durable/Digest.d.mts +2 -0
  209. package/dist/durable/Digest.mjs +50 -0
  210. package/dist/durable/Digest.mjs.map +1 -0
  211. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  212. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  213. package/dist/durable/DurableFailpoint.d.mts +2 -0
  214. package/dist/durable/DurableFailpoint.mjs +94 -0
  215. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  216. package/dist/durable/DurableFailpointTestControl.d.mts +15 -0
  217. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  218. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  219. package/dist/durable/EventSource.d.mts +2 -0
  220. package/dist/durable/EventSource.mjs +65 -0
  221. package/dist/durable/EventSource.mjs.map +1 -0
  222. package/dist/durable/GitHubWorkflowSource.d.mts +144 -0
  223. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  224. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  225. package/dist/durable/MessageDelivery.d.mts +492 -0
  226. package/dist/durable/MessageDelivery.mjs +495 -0
  227. package/dist/durable/MessageDelivery.mjs.map +1 -0
  228. package/dist/durable/MessageDeliveryStoreConformance.d.mts +358 -0
  229. package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
  230. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  231. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  232. package/dist/durable/OperationAuthorizer.mjs +70 -0
  233. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  234. package/dist/durable/PersistentHistory.d.mts +16 -0
  235. package/dist/durable/PersistentHistory.mjs +125 -0
  236. package/dist/durable/PersistentHistory.mjs.map +1 -0
  237. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  238. package/dist/durable/PreparedInputAdmission.mjs +34 -0
  239. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  240. package/dist/durable/Records.d.mts +2 -0
  241. package/dist/durable/Records.mjs +795 -0
  242. package/dist/durable/Records.mjs.map +1 -0
  243. package/dist/durable/Recovery.d.mts +2 -0
  244. package/dist/durable/Recovery.mjs +739 -0
  245. package/dist/durable/Recovery.mjs.map +1 -0
  246. package/dist/durable/RunJournal.d.mts +2 -0
  247. package/dist/durable/RunJournal.mjs +2 -0
  248. package/dist/durable/Schedule.d.mts +2 -0
  249. package/dist/durable/Schedule.mjs +382 -0
  250. package/dist/durable/Schedule.mjs.map +1 -0
  251. package/dist/durable/ScheduleStoreConformance.d.mts +18 -0
  252. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  253. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  254. package/dist/durable/ScheduleTransition.d.mts +24 -0
  255. package/dist/durable/ScheduleTransition.mjs +180 -0
  256. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  257. package/dist/durable/Scheduling.d.mts +54 -0
  258. package/dist/durable/Scheduling.mjs +2 -0
  259. package/dist/durable/SqlMemoryStore.d.mts +30 -0
  260. package/dist/durable/SqlMemoryStore.mjs +435 -0
  261. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  262. package/dist/durable/SqlMessageDeliveryStore.d.mts +40 -0
  263. package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
  264. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  265. package/dist/durable/SqlStorageV2Upgrade.d.mts +22 -0
  266. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  267. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  268. package/dist/durable/SqlSubscriptionStore.d.mts +63 -0
  269. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  270. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  271. package/dist/durable/SubmissionLedger.d.mts +3 -0
  272. package/dist/durable/SubmissionLedger.mjs +914 -0
  273. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  274. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  275. package/dist/durable/SubmissionLedgerConformance.mjs +1986 -0
  276. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  277. package/dist/durable/SubmissionStatus.d.mts +2 -0
  278. package/dist/durable/SubmissionStatus.mjs +18 -0
  279. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  280. package/dist/durable/Subscription.d.mts +2 -0
  281. package/dist/durable/Subscription.mjs +360 -0
  282. package/dist/durable/Subscription.mjs.map +1 -0
  283. package/dist/durable/SubscriptionInput.d.mts +2 -0
  284. package/dist/durable/SubscriptionInput.mjs +52 -0
  285. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  286. package/dist/durable/SubscriptionStoreConformance.d.mts +17 -0
  287. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  288. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  289. package/dist/durable/SubscriptionTools.d.mts +273 -0
  290. package/dist/durable/SubscriptionTools.mjs +190 -0
  291. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  292. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  293. package/dist/durable/SubscriptionTransition.mjs +148 -0
  294. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  295. package/dist/durable/Subscriptions.d.mts +73 -0
  296. package/dist/durable/Subscriptions.mjs +627 -0
  297. package/dist/durable/Subscriptions.mjs.map +1 -0
  298. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  299. package/dist/durable/ThreadContextHistory.mjs +152 -0
  300. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  301. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  302. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  303. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  304. package/dist/durable/ThreadInvariants.d.mts +74 -0
  305. package/dist/durable/ThreadInvariants.mjs +200 -0
  306. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  307. package/dist/durable/ThreadProjection.d.mts +78 -0
  308. package/dist/durable/ThreadProjection.mjs +158 -0
  309. package/dist/durable/ThreadProjection.mjs.map +1 -0
  310. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  311. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  312. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  313. package/dist/durable/ThreadStore.d.mts +2 -0
  314. package/dist/durable/ThreadStore.mjs +147 -0
  315. package/dist/durable/ThreadStore.mjs.map +1 -0
  316. package/dist/durable/ThreadStoreConformance.d.mts +29 -0
  317. package/dist/durable/ThreadStoreConformance.mjs +248 -0
  318. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  319. package/dist/durable/ToolReconciler.d.mts +2 -0
  320. package/dist/durable/ToolReconciler.mjs +81 -0
  321. package/dist/durable/ToolReconciler.mjs.map +1 -0
  322. package/dist/durable/WakeScheduler.d.mts +2 -0
  323. package/dist/durable/WakeScheduler.mjs +85 -0
  324. package/dist/durable/WakeScheduler.mjs.map +1 -0
  325. package/dist/durable/WorkerHost.d.mts +129 -0
  326. package/dist/durable/WorkerHost.mjs +77 -0
  327. package/dist/durable/WorkerHost.mjs.map +1 -0
  328. package/dist/engine/AgentRuntime.d.mts +2 -0
  329. package/dist/engine/AgentRuntime.mjs +2 -0
  330. package/dist/engine/Compaction.d.mts +7 -0
  331. package/dist/engine/Compaction.mjs +16 -0
  332. package/dist/engine/Compaction.mjs.map +1 -0
  333. package/dist/engine/ContextCompactor.d.mts +2 -0
  334. package/dist/engine/ContextCompactor.mjs +119 -0
  335. package/dist/engine/ContextCompactor.mjs.map +1 -0
  336. package/dist/engine/ContextHistory.d.mts +65 -0
  337. package/dist/engine/ContextHistory.mjs +76 -0
  338. package/dist/engine/ContextHistory.mjs.map +1 -0
  339. package/dist/engine/ContextWindow.d.mts +2 -0
  340. package/dist/engine/ContextWindow.mjs +59 -0
  341. package/dist/engine/ContextWindow.mjs.map +1 -0
  342. package/dist/engine/DurableStep.d.mts +2 -0
  343. package/dist/engine/DurableStep.mjs +62 -0
  344. package/dist/engine/DurableStep.mjs.map +1 -0
  345. package/dist/engine/MessagingHost.d.mts +2 -0
  346. package/dist/engine/MessagingHost.mjs +2 -0
  347. package/dist/engine/Output.d.mts +2 -0
  348. package/dist/engine/Output.mjs +8 -0
  349. package/dist/engine/Output.mjs.map +1 -0
  350. package/dist/engine/RunEventSink.d.mts +2 -0
  351. package/dist/engine/RunEventSink.mjs +22 -0
  352. package/dist/engine/RunEventSink.mjs.map +1 -0
  353. package/dist/engine/RunOptions.d.mts +2 -0
  354. package/dist/engine/RunOptions.mjs +122 -0
  355. package/dist/engine/RunOptions.mjs.map +1 -0
  356. package/dist/engine/SubagentHost.d.mts +2 -0
  357. package/dist/engine/SubagentHost.mjs +72 -0
  358. package/dist/engine/SubagentHost.mjs.map +1 -0
  359. package/dist/engine/ThreadHistory.d.mts +2 -0
  360. package/dist/engine/ThreadHistory.mjs +67 -0
  361. package/dist/engine/ThreadHistory.mjs.map +1 -0
  362. package/dist/engine/ToolBroker.d.mts +2 -0
  363. package/dist/engine/ToolBroker.mjs +42 -0
  364. package/dist/engine/ToolBroker.mjs.map +1 -0
  365. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  366. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  367. package/dist/index.d.mts +88 -54
  368. package/dist/index.mjs +97 -54
  369. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  370. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  371. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  372. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  373. package/dist/sandbox/CodeExecutor.mjs +278 -0
  374. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  375. package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
  376. package/dist/sandbox/InteractiveBrowser.mjs +165 -0
  377. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  378. package/dist/sandbox/PageCapture.d.mts +2 -0
  379. package/dist/sandbox/PageCapture.mjs +450 -0
  380. package/dist/sandbox/PageCapture.mjs.map +1 -0
  381. package/dist/sandbox/PageCrawl.d.mts +88 -0
  382. package/dist/sandbox/PageCrawl.mjs +124 -0
  383. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  384. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  385. package/dist/sandbox/PageScreenshot.mjs +53 -0
  386. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  387. package/dist/sandbox/ProtectedBrowser.d.mts +252 -0
  388. package/dist/sandbox/ProtectedBrowser.mjs +270 -0
  389. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  390. package/dist/sandbox/Sandbox.d.mts +2 -0
  391. package/dist/sandbox/Sandbox.mjs +208 -0
  392. package/dist/sandbox/Sandbox.mjs.map +1 -0
  393. package/dist/utf8-BYfhEkcj.mjs +11 -0
  394. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  395. package/dist/utf8-DchGZRBd.mjs +23 -0
  396. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  397. package/package.json +1 -1
  398. package/src/Ephemeral.ts +17 -0
  399. package/src/ToolExposure.ts +2 -2
  400. package/src/capabilities/Approval.ts +352 -0
  401. package/src/capabilities/Budget.ts +536 -0
  402. package/src/capabilities/CodeMode.ts +1090 -0
  403. package/src/capabilities/Commands.ts +86 -0
  404. package/src/capabilities/ContextTools.ts +184 -0
  405. package/src/capabilities/Mcp.ts +427 -0
  406. package/src/capabilities/McpClient.ts +967 -0
  407. package/src/capabilities/MemoryNotes.ts +174 -0
  408. package/src/capabilities/Messaging.ts +261 -0
  409. package/src/capabilities/ModelContext.ts +354 -0
  410. package/src/capabilities/Redaction.ts +157 -0
  411. package/src/capabilities/Remembering.ts +550 -0
  412. package/src/capabilities/RunHooks.ts +280 -0
  413. package/src/capabilities/SemanticMemory.ts +447 -0
  414. package/src/capabilities/Subagent.ts +2277 -0
  415. package/src/capabilities/SubagentReservations.ts +850 -0
  416. package/src/capabilities/ToolDiscovery.ts +339 -0
  417. package/src/capabilities/WebCapture.ts +722 -0
  418. package/src/capabilities/WebSearch.ts +184 -0
  419. package/src/capabilities/internal/subagent-background.ts +1106 -0
  420. package/src/capabilities/internal/subagent-contract.ts +142 -0
  421. package/src/capabilities/internal/subagent-policy.ts +235 -0
  422. package/src/capabilities/internal/subagent-reporting.ts +261 -0
  423. package/src/capabilities/internal/utf8.ts +10 -0
  424. package/src/core/Agent.ts +575 -0
  425. package/src/core/AgentError.ts +152 -0
  426. package/src/core/AgentPolicy.ts +153 -0
  427. package/src/core/AgentUpdates.ts +100 -0
  428. package/src/core/IdGenerator.ts +39 -0
  429. package/src/core/Identifiers.ts +48 -0
  430. package/src/core/Memory.ts +290 -0
  431. package/src/core/MemoryNamespace.ts +196 -0
  432. package/src/core/MemoryReference.ts +121 -0
  433. package/src/core/MemoryRevalidation.ts +185 -0
  434. package/src/core/MemoryStore.ts +368 -0
  435. package/src/core/Messaging.ts +90 -0
  436. package/src/core/Receipt.ts +42 -0
  437. package/src/core/RememberingStore.ts +300 -0
  438. package/src/core/RunEvent.ts +366 -0
  439. package/src/core/RunPolicyUsage.ts +17 -0
  440. package/src/core/SemanticMemoryIndex.ts +250 -0
  441. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  442. package/src/core/SubagentContract.ts +196 -0
  443. package/src/core/Thread.ts +371 -0
  444. package/src/core/ToolExposure.ts +74 -0
  445. package/src/core/ToolResult.ts +170 -0
  446. package/src/core/Usage.ts +529 -0
  447. package/src/core/Worker.ts +173 -0
  448. package/src/core/internal/agent-updates.ts +32 -0
  449. package/src/core/internal/utf8.ts +23 -0
  450. package/src/durable/ActivityStore.ts +160 -0
  451. package/src/durable/Admin.ts +496 -0
  452. package/src/durable/AgentRegistration.ts +13 -0
  453. package/src/durable/Certification.ts +210 -0
  454. package/src/durable/CommittedActivity.ts +296 -0
  455. package/src/durable/Digest.ts +93 -0
  456. package/src/durable/DurableAgentRuntime.ts +10340 -0
  457. package/src/durable/DurableFailpoint.ts +103 -0
  458. package/src/durable/DurableFailpointTestControl.ts +39 -0
  459. package/src/durable/EventSource.ts +172 -0
  460. package/src/durable/GitHubWorkflowSource.ts +453 -0
  461. package/src/durable/MessageDelivery.ts +708 -0
  462. package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
  463. package/src/durable/OperationAuthorizer.ts +85 -0
  464. package/src/durable/PersistentHistory.ts +260 -0
  465. package/src/durable/PreparedInputAdmission.ts +44 -0
  466. package/src/durable/Records.ts +1010 -0
  467. package/src/durable/Recovery.ts +1018 -0
  468. package/src/durable/RunJournal.ts +1479 -0
  469. package/src/durable/Schedule.ts +504 -0
  470. package/src/durable/ScheduleStoreConformance.ts +638 -0
  471. package/src/durable/ScheduleTransition.ts +265 -0
  472. package/src/durable/Scheduling.ts +1077 -0
  473. package/src/durable/SqlMemoryStore.ts +774 -0
  474. package/src/durable/SqlMessageDeliveryStore.ts +302 -0
  475. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  476. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  477. package/src/durable/SubmissionLedger.ts +1201 -0
  478. package/src/durable/SubmissionLedgerConformance.ts +4579 -0
  479. package/src/durable/SubmissionStatus.ts +14 -0
  480. package/src/durable/Subscription.ts +544 -0
  481. package/src/durable/SubscriptionInput.ts +144 -0
  482. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  483. package/src/durable/SubscriptionTools.ts +327 -0
  484. package/src/durable/SubscriptionTransition.ts +302 -0
  485. package/src/durable/Subscriptions.ts +1210 -0
  486. package/src/durable/ThreadContextHistory.ts +227 -0
  487. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  488. package/src/durable/ThreadInvariants.ts +442 -0
  489. package/src/durable/ThreadProjection.ts +269 -0
  490. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  491. package/src/durable/ThreadStore.ts +242 -0
  492. package/src/durable/ThreadStoreConformance.ts +710 -0
  493. package/src/durable/ToolReconciler.ts +105 -0
  494. package/src/durable/WakeScheduler.ts +134 -0
  495. package/src/durable/WorkerHost.ts +171 -0
  496. package/src/durable/internal/agent-registration.ts +525 -0
  497. package/src/durable/internal/agent-updates.ts +302 -0
  498. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  499. package/src/durable/internal/journal-checkpoint.ts +104 -0
  500. package/src/durable/internal/journal-metadata.ts +107 -0
  501. package/src/durable/internal/messaging-host.ts +608 -0
  502. package/src/durable/internal/schedule-time.ts +303 -0
  503. package/src/durable/internal/storage-v2-layout.ts +163 -0
  504. package/src/durable/internal/storage-v2.ts +73 -0
  505. package/src/durable/internal/worker-host.ts +2467 -0
  506. package/src/durable/internal/worker-runtime.ts +9 -0
  507. package/src/engine/AgentRuntime.ts +37 -0
  508. package/src/engine/Compaction.ts +11 -0
  509. package/src/engine/ContextCompactor.ts +277 -0
  510. package/src/engine/ContextHistory.ts +73 -0
  511. package/src/engine/ContextWindow.ts +72 -0
  512. package/src/engine/DurableStep.ts +132 -0
  513. package/src/engine/MessagingHost.ts +110 -0
  514. package/src/engine/Output.ts +2 -0
  515. package/src/engine/RunEventSink.ts +132 -0
  516. package/src/engine/RunOptions.ts +1077 -0
  517. package/src/engine/SubagentHost.ts +181 -0
  518. package/src/engine/ThreadHistory.ts +120 -0
  519. package/src/engine/ToolBroker.ts +157 -0
  520. package/src/engine/ToolExposure.ts +48 -0
  521. package/src/engine/internal/agent-runtime.ts +10117 -0
  522. package/src/engine/internal/bounded-value.ts +315 -0
  523. package/src/engine/internal/compaction.ts +678 -0
  524. package/src/engine/internal/error-diagnostic.ts +39 -0
  525. package/src/engine/internal/output-contract.ts +173 -0
  526. package/src/engine/internal/primitive-delta.ts +80 -0
  527. package/src/engine/internal/provider-result-staging.ts +211 -0
  528. package/src/engine/internal/tool-derivative.ts +106 -0
  529. package/src/engine/internal/tool-exposure.ts +224 -0
  530. package/src/engine/internal/tool-telemetry.ts +484 -0
  531. package/src/index.ts +96 -53
  532. package/src/sandbox/CodeExecutor.ts +352 -0
  533. package/src/sandbox/InteractiveBrowser.ts +257 -0
  534. package/src/sandbox/PageCapture.ts +692 -0
  535. package/src/sandbox/PageCrawl.ts +148 -0
  536. package/src/sandbox/PageScreenshot.ts +81 -0
  537. package/src/sandbox/ProtectedBrowser.ts +413 -0
  538. package/src/sandbox/Sandbox.ts +241 -0
  539. package/dist/Agent.d.mts +0 -5
  540. package/dist/Agent.mjs +0 -10
  541. package/dist/Agent.mjs.map +0 -1
  542. package/dist/AgentError.d.mts +0 -5
  543. package/dist/AgentError.mjs +0 -10
  544. package/dist/AgentError.mjs.map +0 -1
  545. package/dist/AgentPolicy.d.mts +0 -5
  546. package/dist/AgentPolicy.mjs +0 -10
  547. package/dist/AgentPolicy.mjs.map +0 -1
  548. package/dist/AgentRuntime.d.mts +0 -5
  549. package/dist/AgentRuntime.mjs +0 -10
  550. package/dist/AgentRuntime.mjs.map +0 -1
  551. package/dist/AgentUpdates.d.mts +0 -5
  552. package/dist/AgentUpdates.mjs +0 -10
  553. package/dist/AgentUpdates.mjs.map +0 -1
  554. package/dist/Approval.d.mts +0 -5
  555. package/dist/Approval.mjs +0 -10
  556. package/dist/Approval.mjs.map +0 -1
  557. package/dist/Budget.d.mts +0 -5
  558. package/dist/Budget.mjs +0 -10
  559. package/dist/Budget.mjs.map +0 -1
  560. package/dist/CodeMode.d.mts +0 -5
  561. package/dist/CodeMode.mjs +0 -10
  562. package/dist/CodeMode.mjs.map +0 -1
  563. package/dist/Commands.d.mts +0 -5
  564. package/dist/Commands.mjs +0 -10
  565. package/dist/Commands.mjs.map +0 -1
  566. package/dist/Compaction.d.mts +0 -5
  567. package/dist/Compaction.mjs +0 -10
  568. package/dist/Compaction.mjs.map +0 -1
  569. package/dist/ContextCompactor.d.mts +0 -5
  570. package/dist/ContextCompactor.mjs +0 -10
  571. package/dist/ContextCompactor.mjs.map +0 -1
  572. package/dist/ContextHistory.d.mts +0 -5
  573. package/dist/ContextHistory.mjs +0 -10
  574. package/dist/ContextHistory.mjs.map +0 -1
  575. package/dist/ContextTools.d.mts +0 -5
  576. package/dist/ContextTools.mjs +0 -10
  577. package/dist/ContextTools.mjs.map +0 -1
  578. package/dist/ContextWindow.d.mts +0 -5
  579. package/dist/ContextWindow.mjs +0 -10
  580. package/dist/ContextWindow.mjs.map +0 -1
  581. package/dist/DurableStep.d.mts +0 -5
  582. package/dist/DurableStep.mjs +0 -10
  583. package/dist/DurableStep.mjs.map +0 -1
  584. package/dist/EphemeralThreads.d.mts +0 -5
  585. package/dist/EphemeralThreads.mjs +0 -10
  586. package/dist/EphemeralThreads.mjs.map +0 -1
  587. package/dist/IdGenerator.d.mts +0 -5
  588. package/dist/IdGenerator.mjs +0 -10
  589. package/dist/IdGenerator.mjs.map +0 -1
  590. package/dist/Identifiers.d.mts +0 -5
  591. package/dist/Identifiers.mjs +0 -10
  592. package/dist/Identifiers.mjs.map +0 -1
  593. package/dist/Mcp.d.mts +0 -5
  594. package/dist/Mcp.mjs +0 -10
  595. package/dist/Mcp.mjs.map +0 -1
  596. package/dist/McpClient.d.mts +0 -5
  597. package/dist/McpClient.mjs +0 -10
  598. package/dist/McpClient.mjs.map +0 -1
  599. package/dist/Memory.d.mts +0 -5
  600. package/dist/Memory.mjs +0 -10
  601. package/dist/Memory.mjs.map +0 -1
  602. package/dist/MemoryNamespace.d.mts +0 -5
  603. package/dist/MemoryNamespace.mjs +0 -10
  604. package/dist/MemoryNamespace.mjs.map +0 -1
  605. package/dist/MemoryNotes.d.mts +0 -5
  606. package/dist/MemoryNotes.mjs +0 -10
  607. package/dist/MemoryNotes.mjs.map +0 -1
  608. package/dist/MemoryReference.d.mts +0 -5
  609. package/dist/MemoryReference.mjs +0 -10
  610. package/dist/MemoryReference.mjs.map +0 -1
  611. package/dist/MemoryRevalidation.d.mts +0 -5
  612. package/dist/MemoryRevalidation.mjs +0 -10
  613. package/dist/MemoryRevalidation.mjs.map +0 -1
  614. package/dist/MemoryStore.d.mts +0 -5
  615. package/dist/MemoryStore.mjs +0 -10
  616. package/dist/MemoryStore.mjs.map +0 -1
  617. package/dist/Messaging.d.mts +0 -5
  618. package/dist/Messaging.mjs +0 -10
  619. package/dist/Messaging.mjs.map +0 -1
  620. package/dist/MessagingHost.d.mts +0 -5
  621. package/dist/MessagingHost.mjs +0 -10
  622. package/dist/MessagingHost.mjs.map +0 -1
  623. package/dist/ModelContext.d.mts +0 -5
  624. package/dist/ModelContext.mjs +0 -10
  625. package/dist/ModelContext.mjs.map +0 -1
  626. package/dist/Receipt.d.mts +0 -5
  627. package/dist/Receipt.mjs +0 -10
  628. package/dist/Receipt.mjs.map +0 -1
  629. package/dist/Redaction.d.mts +0 -5
  630. package/dist/Redaction.mjs +0 -10
  631. package/dist/Redaction.mjs.map +0 -1
  632. package/dist/Remembering.d.mts +0 -5
  633. package/dist/Remembering.mjs +0 -10
  634. package/dist/Remembering.mjs.map +0 -1
  635. package/dist/RememberingStore.d.mts +0 -5
  636. package/dist/RememberingStore.mjs +0 -10
  637. package/dist/RememberingStore.mjs.map +0 -1
  638. package/dist/RunEvent.d.mts +0 -5
  639. package/dist/RunEvent.mjs +0 -10
  640. package/dist/RunEvent.mjs.map +0 -1
  641. package/dist/RunEventSink.d.mts +0 -5
  642. package/dist/RunEventSink.mjs +0 -10
  643. package/dist/RunEventSink.mjs.map +0 -1
  644. package/dist/RunHooks.d.mts +0 -5
  645. package/dist/RunHooks.mjs +0 -10
  646. package/dist/RunHooks.mjs.map +0 -1
  647. package/dist/RunOptions.d.mts +0 -5
  648. package/dist/RunOptions.mjs +0 -10
  649. package/dist/RunOptions.mjs.map +0 -1
  650. package/dist/RunPolicyUsage.d.mts +0 -5
  651. package/dist/RunPolicyUsage.mjs +0 -10
  652. package/dist/RunPolicyUsage.mjs.map +0 -1
  653. package/dist/SemanticMemory.d.mts +0 -5
  654. package/dist/SemanticMemory.mjs +0 -10
  655. package/dist/SemanticMemory.mjs.map +0 -1
  656. package/dist/SemanticMemoryIndex.d.mts +0 -5
  657. package/dist/SemanticMemoryIndex.mjs +0 -10
  658. package/dist/SemanticMemoryIndex.mjs.map +0 -1
  659. package/dist/SemanticMemoryRevalidation.d.mts +0 -5
  660. package/dist/SemanticMemoryRevalidation.mjs +0 -10
  661. package/dist/SemanticMemoryRevalidation.mjs.map +0 -1
  662. package/dist/Subagent.d.mts +0 -5
  663. package/dist/Subagent.mjs +0 -10
  664. package/dist/Subagent.mjs.map +0 -1
  665. package/dist/SubagentContract.d.mts +0 -5
  666. package/dist/SubagentContract.mjs +0 -10
  667. package/dist/SubagentContract.mjs.map +0 -1
  668. package/dist/SubagentHost.d.mts +0 -5
  669. package/dist/SubagentHost.mjs +0 -10
  670. package/dist/SubagentHost.mjs.map +0 -1
  671. package/dist/SubagentReservations.d.mts +0 -5
  672. package/dist/SubagentReservations.mjs +0 -10
  673. package/dist/SubagentReservations.mjs.map +0 -1
  674. package/dist/ThreadHistory.d.mts +0 -5
  675. package/dist/ThreadHistory.mjs +0 -10
  676. package/dist/ThreadHistory.mjs.map +0 -1
  677. package/dist/ToolBroker.d.mts +0 -5
  678. package/dist/ToolBroker.mjs +0 -10
  679. package/dist/ToolBroker.mjs.map +0 -1
  680. package/dist/ToolDiscovery.d.mts +0 -5
  681. package/dist/ToolDiscovery.mjs +0 -10
  682. package/dist/ToolDiscovery.mjs.map +0 -1
  683. package/dist/ToolResult.d.mts +0 -5
  684. package/dist/ToolResult.mjs +0 -10
  685. package/dist/ToolResult.mjs.map +0 -1
  686. package/dist/Usage.d.mts +0 -5
  687. package/dist/Usage.mjs +0 -10
  688. package/dist/Usage.mjs.map +0 -1
  689. package/dist/WebCapture.d.mts +0 -5
  690. package/dist/WebCapture.mjs +0 -10
  691. package/dist/WebCapture.mjs.map +0 -1
  692. package/dist/WebSearch.d.mts +0 -5
  693. package/dist/WebSearch.mjs +0 -10
  694. package/dist/WebSearch.mjs.map +0 -1
  695. package/dist/Worker.d.mts +0 -5
  696. package/dist/Worker.mjs +0 -10
  697. package/dist/Worker.mjs.map +0 -1
  698. package/dist/rolldown-runtime-BBjsoOtd.mjs +0 -27
  699. package/src/Agent.ts +0 -1
  700. package/src/AgentError.ts +0 -1
  701. package/src/AgentPolicy.ts +0 -1
  702. package/src/AgentRuntime.ts +0 -1
  703. package/src/AgentUpdates.ts +0 -1
  704. package/src/Approval.ts +0 -1
  705. package/src/Budget.ts +0 -1
  706. package/src/CodeMode.ts +0 -1
  707. package/src/Commands.ts +0 -1
  708. package/src/Compaction.ts +0 -1
  709. package/src/ContextCompactor.ts +0 -1
  710. package/src/ContextHistory.ts +0 -1
  711. package/src/ContextTools.ts +0 -1
  712. package/src/ContextWindow.ts +0 -1
  713. package/src/DurableStep.ts +0 -1
  714. package/src/EphemeralThreads.ts +0 -1
  715. package/src/IdGenerator.ts +0 -1
  716. package/src/Identifiers.ts +0 -1
  717. package/src/Mcp.ts +0 -1
  718. package/src/McpClient.ts +0 -1
  719. package/src/Memory.ts +0 -1
  720. package/src/MemoryNamespace.ts +0 -1
  721. package/src/MemoryNotes.ts +0 -1
  722. package/src/MemoryReference.ts +0 -1
  723. package/src/MemoryRevalidation.ts +0 -1
  724. package/src/MemoryStore.ts +0 -1
  725. package/src/Messaging.ts +0 -1
  726. package/src/MessagingHost.ts +0 -1
  727. package/src/ModelContext.ts +0 -1
  728. package/src/Receipt.ts +0 -1
  729. package/src/Redaction.ts +0 -1
  730. package/src/Remembering.ts +0 -1
  731. package/src/RememberingStore.ts +0 -1
  732. package/src/RunEvent.ts +0 -1
  733. package/src/RunEventSink.ts +0 -1
  734. package/src/RunHooks.ts +0 -1
  735. package/src/RunOptions.ts +0 -1
  736. package/src/RunPolicyUsage.ts +0 -1
  737. package/src/SemanticMemory.ts +0 -1
  738. package/src/SemanticMemoryIndex.ts +0 -1
  739. package/src/SemanticMemoryRevalidation.ts +0 -1
  740. package/src/Subagent.ts +0 -1
  741. package/src/SubagentContract.ts +0 -1
  742. package/src/SubagentHost.ts +0 -1
  743. package/src/SubagentReservations.ts +0 -1
  744. package/src/ThreadHistory.ts +0 -1
  745. package/src/ToolBroker.ts +0 -1
  746. package/src/ToolDiscovery.ts +0 -1
  747. package/src/ToolResult.ts +0 -1
  748. package/src/Usage.ts +0 -1
  749. package/src/WebCapture.ts +0 -1
  750. package/src/WebSearch.ts +0 -1
  751. package/src/Worker.ts +0 -1
@@ -0,0 +1,505 @@
1
+ import { Prompt } from "effect/unstable/ai";
2
+ import { Option, Schema } from "effect";
3
+ //#region src/engine/internal/provider-result-staging.ts
4
+ const MAX_JSON_DEPTH = 128;
5
+ const FailedSnapshot = Symbol("@effect-agent/engine/FailedProviderResultSnapshot");
6
+ /**
7
+ * @internal Normalize one untrusted JSON value into an owned, frozen snapshot while counting the
8
+ * exact UTF-8 bytes of that same snapshot. The traversal never invokes `toJSON` or accessors,
9
+ * rejects non-plain objects and excessive nesting, and stops as soon as the byte budget is spent.
10
+ */
11
+ const snapshotJson = (root, maxBytes, maxDepth, rejectNonFiniteNumbers) => {
12
+ if (!Number.isSafeInteger(maxBytes) || maxBytes < 0 || !Number.isSafeInteger(maxDepth) || maxDepth < 0) return;
13
+ let total = 0;
14
+ const ancestors = /* @__PURE__ */ new WeakSet();
15
+ const add = (bytes) => {
16
+ if (bytes > maxBytes - total) return false;
17
+ total += bytes;
18
+ return true;
19
+ };
20
+ const addString = (value) => {
21
+ if (!add(2)) return false;
22
+ for (let index = 0; index < value.length; index += 1) {
23
+ const code = value.charCodeAt(index);
24
+ if (code === 34 || code === 92) {
25
+ if (!add(2)) return false;
26
+ } else if (code <= 31) {
27
+ if (!add(code >= 8 && code <= 13 && code !== 11 ? 2 : 6)) return false;
28
+ } else if (code <= 127) {
29
+ if (!add(1)) return false;
30
+ } else if (code <= 2047) {
31
+ if (!add(2)) return false;
32
+ } else if (code >= 55296 && code <= 56319) {
33
+ const low = value.charCodeAt(index + 1);
34
+ if (low >= 56320 && low <= 57343) {
35
+ if (!add(4)) return false;
36
+ index += 1;
37
+ } else if (!add(6)) return false;
38
+ } else if (code >= 56320 && code <= 57343) {
39
+ if (!add(6)) return false;
40
+ } else if (!add(3)) return false;
41
+ }
42
+ return true;
43
+ };
44
+ const visit = (value, depth) => {
45
+ if (depth > maxDepth) return FailedSnapshot;
46
+ if (value === null) return add(4) ? null : FailedSnapshot;
47
+ switch (typeof value) {
48
+ case "string": return addString(value) ? value : FailedSnapshot;
49
+ case "boolean": return add(value ? 4 : 5) ? value : FailedSnapshot;
50
+ case "number": {
51
+ if (!Number.isFinite(value)) return rejectNonFiniteNumbers ? FailedSnapshot : add(4) ? null : FailedSnapshot;
52
+ const encoded = JSON.stringify(value);
53
+ return encoded !== void 0 && add(encoded.length) ? value : FailedSnapshot;
54
+ }
55
+ case "object": {
56
+ if (ancestors.has(value)) return FailedSnapshot;
57
+ const isArray = Array.isArray(value);
58
+ const prototype = Object.getPrototypeOf(value);
59
+ if (prototype !== (isArray ? Array.prototype : Object.prototype) && prototype !== null) return FailedSnapshot;
60
+ if (Object.getOwnPropertyDescriptor(value, "toJSON") !== void 0 || prototype !== null && Object.getOwnPropertyDescriptor(prototype, "toJSON") !== void 0) return FailedSnapshot;
61
+ ancestors.add(value);
62
+ try {
63
+ if (isArray) {
64
+ const lengthDescriptor = Object.getOwnPropertyDescriptor(value, "length");
65
+ if (lengthDescriptor === void 0 || !("value" in lengthDescriptor) || typeof lengthDescriptor.value !== "number" || !Number.isSafeInteger(lengthDescriptor.value) || lengthDescriptor.value < 0) return FailedSnapshot;
66
+ if (!add(1)) return FailedSnapshot;
67
+ const snapshot = [];
68
+ for (let index = 0; index < lengthDescriptor.value; index += 1) {
69
+ if (index > 0 && !add(1)) return FailedSnapshot;
70
+ const descriptor = Object.getOwnPropertyDescriptor(value, index);
71
+ if (descriptor === void 0) {
72
+ if (!add(4)) return FailedSnapshot;
73
+ snapshot.push(null);
74
+ continue;
75
+ }
76
+ if (!("value" in descriptor)) return FailedSnapshot;
77
+ const item = visit(descriptor.value, depth + 1);
78
+ if (item === FailedSnapshot) return FailedSnapshot;
79
+ snapshot.push(item);
80
+ }
81
+ if (!add(1)) return FailedSnapshot;
82
+ Object.setPrototypeOf(snapshot, null);
83
+ return Object.freeze(snapshot);
84
+ }
85
+ if (!add(1)) return FailedSnapshot;
86
+ const entries = [];
87
+ let first = true;
88
+ for (const key in value) {
89
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
90
+ if (descriptor === void 0 || !descriptor.enumerable) continue;
91
+ if (!("value" in descriptor)) return FailedSnapshot;
92
+ if (!first && !add(1)) return FailedSnapshot;
93
+ first = false;
94
+ if (!addString(key) || !add(1)) return FailedSnapshot;
95
+ const item = visit(descriptor.value, depth + 1);
96
+ if (item === FailedSnapshot) return FailedSnapshot;
97
+ entries.push([key, item]);
98
+ }
99
+ if (!add(1)) return FailedSnapshot;
100
+ const snapshot = Object.fromEntries(entries);
101
+ Object.setPrototypeOf(snapshot, null);
102
+ return Object.freeze(snapshot);
103
+ } finally {
104
+ ancestors.delete(value);
105
+ }
106
+ }
107
+ case "bigint":
108
+ case "function":
109
+ case "symbol":
110
+ case "undefined": return FailedSnapshot;
111
+ }
112
+ return FailedSnapshot;
113
+ };
114
+ try {
115
+ const value = visit(root, 0);
116
+ return value === FailedSnapshot ? void 0 : {
117
+ value,
118
+ bytes: total
119
+ };
120
+ } catch {
121
+ return;
122
+ }
123
+ };
124
+ /**
125
+ * Normalize provider-owned JSON using JSON serialization's `NaN`/infinity to
126
+ * `null` behavior. Provider events use this form so byte accounting matches
127
+ * their eventual JSON representation.
128
+ */
129
+ const boundedJsonSnapshot = (root, maxBytes, maxDepth = MAX_JSON_DEPTH) => snapshotJson(root, maxBytes, maxDepth, false);
130
+ /**
131
+ * Validate canonical JSON without repairing non-finite numbers. Recovery
132
+ * inputs use this form because changing a recorded value would fabricate
133
+ * history.
134
+ */
135
+ const boundedCanonicalJsonSnapshot = (root, maxBytes, maxDepth = MAX_JSON_DEPTH) => snapshotJson(root, maxBytes, maxDepth, true);
136
+ //#endregion
137
+ //#region src/engine/internal/compaction.ts
138
+ /**
139
+ * Pure helpers for engine-native context compaction (RUN-026/RUN-027). Everything here is deterministic and side-effect free:
140
+ * the engine's turn loop owns the state transitions, the durable coordinator
141
+ * owns the canonical record, and this module owns the arithmetic.
142
+ *
143
+ * Compaction is a VIEW over official history, never a mutation of it. The
144
+ * durable commit machinery slices official history by length
145
+ * (`lastCommitLen` in the coordinator), so official history must stay
146
+ * append-only within an Attempt; only the outgoing model prompt is rebuilt.
147
+ */
148
+ /** Model-visible replacement for a tool result cleared by prune compaction. */
149
+ const CLEARED_TOOL_RESULT = "[tool result cleared by compaction]";
150
+ /** Prefix of the user message that carries a compaction summary into the prompt. */
151
+ const COMPACTION_SUMMARY_PREFIX = "The prior thread was compacted into this summary:\n\n";
152
+ /** Rollover text is recovery evidence; it never asserts that an external action succeeded. */
153
+ const CONTEXT_ROLLOVER_PREFIX = "A fresh context window has started. Earlier conversation has left this model view. Restore relevant notes and use available history tools to retrieve evidence; verify live state before repeating an action.\n\n";
154
+ /** Stable across Attempts; the initial window uses turn zero. */
155
+ const contextWindowId = (runId, turn) => `context:${runId}:${turn}`;
156
+ /** Shared by the live interpreter and canonical journal projection. */
157
+ const contextWindowMessage = (windowId, handoff) => Prompt.makeMessage("user", { content: [Prompt.makePart("text", { text: `${CONTEXT_ROLLOVER_PREFIX}Window: ${windowId}${handoff === void 0 ? "" : `\n\nHandoff (untrusted continuation notes):\n${handoff}`}` })] });
158
+ /**
159
+ * Fixed summarization instruction (RUN-026). The skeleton mirrors what the
160
+ * surveyed harnesses converged on; exact file paths and identifiers must
161
+ * survive because the continuing agent sees only this summary plus the tail.
162
+ */
163
+ const COMPACTION_INSTRUCTION = [
164
+ "You are compacting an agent thread to reclaim context space.",
165
+ "Summarize the transcript below for the SAME agent to continue working:",
166
+ "it will see only this summary plus the most recent messages.",
167
+ "Structure the summary exactly as:",
168
+ "Goal:",
169
+ "Constraints:",
170
+ "Progress:",
171
+ "Decisions:",
172
+ "Next steps:",
173
+ "Critical context:",
174
+ "Be terse. Preserve exact file paths, identifiers, and values needed to",
175
+ "continue. Do not continue the thread; output only the summary."
176
+ ].join("\n");
177
+ /**
178
+ * Provider context-length rejections, matched case-insensitively over the
179
+ * error's own text. Kept intentionally broad: a false positive costs one
180
+ * summarize-and-retry, a false negative surfaces the raw provider error.
181
+ */
182
+ const CONTEXT_OVERFLOW_PATTERN = /context[\s_-]?length|prompt is too long|maximum context (?:length|window)|input .{0,24}too long|exceeds .{0,24}context|too many (?:input )?tokens|context[\s_-]?window[\s_-]?exceeded|context overflow/i;
183
+ /** RUN-027: does this provider error text describe a context-window overflow? */
184
+ const isContextOverflowMessage = (text) => CONTEXT_OVERFLOW_PATTERN.test(text);
185
+ const utf8Length = (text) => {
186
+ let bytes = text.length;
187
+ for (let index = 0; index < text.length; index++) {
188
+ const codeUnit = text.charCodeAt(index);
189
+ if (codeUnit <= 127) continue;
190
+ if (codeUnit <= 2047) {
191
+ bytes++;
192
+ continue;
193
+ }
194
+ if (codeUnit >= 55296 && codeUnit <= 56319 && index + 1 < text.length) {
195
+ const next = text.charCodeAt(index + 1);
196
+ if (next >= 56320 && next <= 57343) {
197
+ bytes += 2;
198
+ index++;
199
+ continue;
200
+ }
201
+ }
202
+ bytes += 2;
203
+ }
204
+ return bytes;
205
+ };
206
+ /**
207
+ * Deterministic UTF-8 bytes/4 token estimate over one message's structural JSON.
208
+ * Conservative for prose, slightly generous for dense JSON — the estimate
209
+ * only gates WHEN to compact, never what is preserved.
210
+ */
211
+ const estimateMessageTokens = (message) => {
212
+ let text;
213
+ try {
214
+ text = JSON.stringify(message);
215
+ } catch {
216
+ text = void 0;
217
+ }
218
+ return text === void 0 ? 0 : Math.ceil(utf8Length(text) / 4);
219
+ };
220
+ /** Sum of `estimateMessageTokens` over a message array. */
221
+ const estimatePromptTokens = (messages, estimate = estimateMessageTokens) => {
222
+ let total = 0;
223
+ for (const message of messages) total += estimate(message);
224
+ return total;
225
+ };
226
+ const isTokenEstimate = Schema.is(Schema.Natural);
227
+ /** Validate each replacement at the Effect caller's boundary without throwing from arithmetic. */
228
+ const evaluateMessageTokenEstimates = (override, operation) => {
229
+ let valid = true;
230
+ const value = operation((message) => {
231
+ const replacement = override?.(message);
232
+ const estimate = replacement === void 0 ? estimateMessageTokens(message) : replacement;
233
+ if (!isTokenEstimate(estimate)) valid = false;
234
+ return estimate;
235
+ });
236
+ return valid ? Option.some(value) : Option.none();
237
+ };
238
+ /** Fresh compaction state for a new Run. */
239
+ const initialCompactionState = () => ({
240
+ protectedStart: -1,
241
+ protectedEnd: -1,
242
+ clearedThrough: 0,
243
+ replacement: void 0,
244
+ lastCompactionTurn: 0,
245
+ overflowRetryTurn: 0,
246
+ lastViewLength: -1
247
+ });
248
+ const isProtected = (state, source, index) => {
249
+ if (state.protectSystemMessages && source[index]?.role === "system") return true;
250
+ if (state.protectedStart >= 0) return index >= state.protectedStart && index < state.protectedEnd;
251
+ return source[index]?.role === "system";
252
+ };
253
+ const clearedToolMessage = (message) => {
254
+ if (message.role !== "tool" || typeof message.content === "string") return message;
255
+ return Prompt.makeMessage("tool", { content: message.content.map((part) => part.type === "tool-result" ? Prompt.makePart("tool-result", {
256
+ id: part.id,
257
+ name: part.name,
258
+ result: CLEARED_TOOL_RESULT,
259
+ isFailure: part.isFailure,
260
+ providerExecuted: part.providerExecuted
261
+ }) : part) });
262
+ };
263
+ const renderMessage = (state, message, index) => index < state.clearedThrough && message.role === "tool" ? clearedToolMessage(message) : message;
264
+ const summaryMessage = (summary) => Prompt.makeMessage("user", { content: [Prompt.makePart("text", { text: `${COMPACTION_SUMMARY_PREFIX}${summary}` })] });
265
+ /**
266
+ * Build the model-visible view of the source prompt under the current
267
+ * compaction state: protected block in place, covered span replaced by the
268
+ * summary message, old tool results cleared. Identity when no compaction has
269
+ * happened.
270
+ */
271
+ const buildCompactedView = (source, state) => {
272
+ if (state.replacement === void 0 && state.clearedThrough === 0) return source;
273
+ const view = [];
274
+ if (state.replacement !== void 0 && state.replacement.through > 0) {
275
+ const protectedStart = state.protectedStart >= 0 && !state.protectSystemMessages ? state.protectedStart : 0;
276
+ const protectedEnd = state.protectedStart >= 0 && !state.protectSystemMessages ? state.protectedEnd : state.replacement?.through ?? 0;
277
+ for (let index = protectedStart; index < Math.min(protectedEnd, state.replacement?.through ?? 0, source.length); index += 1) {
278
+ const message = source[index];
279
+ if (message !== void 0 && isProtected(state, source, index)) view.push(renderMessage(state, message, index));
280
+ }
281
+ view.push(state.replacement.kind === "summarize" ? summaryMessage(state.replacement.summary) : contextWindowMessage(state.replacement.windowId, state.replacement.handoff));
282
+ for (let index = state.replacement?.through ?? 0; index < source.length; index += 1) {
283
+ const message = source[index];
284
+ if (message !== void 0) view.push(renderMessage(state, message, index));
285
+ }
286
+ return view;
287
+ }
288
+ for (let index = 0; index < source.length; index += 1) {
289
+ const message = source[index];
290
+ if (message !== void 0) view.push(renderMessage(state, message, index));
291
+ }
292
+ return view;
293
+ };
294
+ /**
295
+ * Prune selection: the new `clearedThrough` bound. Walks tool messages
296
+ * newest→oldest, always protecting the most recent tool message (the model
297
+ * has not reacted to it yet), then protecting older ones while their
298
+ * estimates fit inside `keepRecentTokens`. If the whole view exceeds `targetTokens`,
299
+ * clear more older results until it fits or only the newest result remains.
300
+ * Replaced messages consume no retention budget. Never decreases the bound.
301
+ */
302
+ const choosePruneBound = (source, state, keepRecentTokens, targetTokens, estimate = estimateMessageTokens) => {
303
+ const toolIndices = [];
304
+ for (let index = 0; index < source.length; index += 1) if (index >= (state.replacement?.through ?? 0) && source[index]?.role === "tool" && !isProtected(state, source, index)) toolIndices.push(index);
305
+ if (toolIndices.length <= 1) return state.clearedThrough;
306
+ let budget = keepRecentTokens;
307
+ let newestCleared = -1;
308
+ for (let position = toolIndices.length - 1; position >= 0; position -= 1) {
309
+ const index = toolIndices[position];
310
+ if (index === void 0) continue;
311
+ const message = source[index];
312
+ if (message === void 0) continue;
313
+ if (position === toolIndices.length - 1) {
314
+ budget -= estimate(message);
315
+ continue;
316
+ }
317
+ const cost = estimate(message);
318
+ if (budget - cost >= 0 && index >= state.clearedThrough) {
319
+ budget -= cost;
320
+ continue;
321
+ }
322
+ newestCleared = index;
323
+ break;
324
+ }
325
+ let through = newestCleared === -1 ? state.clearedThrough : Math.max(state.clearedThrough, newestCleared + 1);
326
+ if (targetTokens === void 0) return through;
327
+ let estimated = estimatePromptTokens(buildCompactedView(source, {
328
+ ...state,
329
+ clearedThrough: through
330
+ }), estimate);
331
+ for (let position = 0; position < toolIndices.length - 1 && estimated > targetTokens; position += 1) {
332
+ const index = toolIndices[position];
333
+ if (index === void 0 || index < through) continue;
334
+ const message = source[index];
335
+ if (message === void 0) continue;
336
+ through = index + 1;
337
+ estimated -= estimate(message) - estimate(clearedToolMessage(message));
338
+ }
339
+ return through;
340
+ };
341
+ /**
342
+ * Summarize selection: the source cut index `C` — messages `[0, C)` outside
343
+ * the protected block fold into the summary; `[C, …)` is the kept tail.
344
+ * Walks newest→oldest accumulating view estimates until `keepRecentTokens`
345
+ * is retained, then moves the cut down so no tool message is separated from
346
+ * the assistant message that declared its calls.
347
+ */
348
+ const chooseSummarizeCut = (source, state, keepRecentTokens, estimate = estimateMessageTokens) => {
349
+ let kept = 0;
350
+ let cut = 0;
351
+ for (let index = source.length - 1; index >= 0; index -= 1) {
352
+ const message = source[index];
353
+ if (message === void 0) continue;
354
+ kept += estimate(renderMessage(state, message, index));
355
+ if (kept >= keepRecentTokens) {
356
+ cut = index;
357
+ break;
358
+ }
359
+ }
360
+ while (cut > 0 && source[cut]?.role === "tool") cut -= 1;
361
+ return Math.max(cut, state.replacement?.through ?? 0);
362
+ };
363
+ /**
364
+ * The messages a cut NEWLY covers — from the prior replacement boundary to the
365
+ * cut, protected block excluded, in order. Starting at the replacement boundary
366
+ * keeps repeated compactions incremental: the previously covered span lives
367
+ * on only through the previous summary, never as resubmitted raw history.
368
+ */
369
+ const collectCoveredMessages = (source, state, cut) => {
370
+ const covered = [];
371
+ for (let index = Math.max(0, state.replacement?.through ?? 0); index < cut && index < source.length; index += 1) {
372
+ const message = source[index];
373
+ if (message !== void 0 && !isProtected(state, source, index)) covered.push(message);
374
+ }
375
+ return covered;
376
+ };
377
+ const SUMMARY_TOOL_RESULT_CLIP = 2e3;
378
+ const jsonPreview = (value, limit) => {
379
+ if (typeof value === "string") return JSON.stringify(value.slice(0, limit)).slice(0, limit);
380
+ const snapshot = boundedCanonicalJsonSnapshot(value, limit);
381
+ return snapshot === void 0 ? "[omitted oversized or unsupported JSON]" : JSON.stringify(snapshot.value);
382
+ };
383
+ const partText = (part) => {
384
+ if (typeof part === "string") return part;
385
+ switch (part.type) {
386
+ case "text": return part.text;
387
+ case "reasoning": return "";
388
+ case "tool-call": return `[tool call ${part.name.slice(0, 500)} ${jsonPreview(part.params, 500)}]`;
389
+ case "tool-result": return `[tool result ${part.name.slice(0, 500)}: ${jsonPreview(part.result, SUMMARY_TOOL_RESULT_CLIP)}]`;
390
+ default: return `[${part.type}]`;
391
+ }
392
+ };
393
+ /**
394
+ * Character budget for the complete default summarizer request, including
395
+ * its instruction, transcript delimiters, previous summary, and elision marker.
396
+ */
397
+ const SUMMARY_INPUT_BUDGET = 8e4;
398
+ const SUMMARY_MAX_LENGTH = 65536;
399
+ const SUMMARY_REQUEST_PREFIX = `${COMPACTION_INSTRUCTION}\n\n<transcript>\n`;
400
+ const SUMMARY_REQUEST_SUFFIX = "\n</transcript>";
401
+ const SUMMARY_MESSAGE_CLIP = 2e3;
402
+ const SUMMARY_ELISION_RESERVE = 128;
403
+ const summaryBlock = (message) => {
404
+ let text = "";
405
+ if (typeof message.content === "string") text = message.content.slice(0, 2001);
406
+ else for (const part of message.content) {
407
+ const piece = partText(part);
408
+ if (piece.length === 0) continue;
409
+ if (text.length > 0) text += "\n";
410
+ text += piece.slice(0, 2001 - text.length);
411
+ if (text.length > SUMMARY_MESSAGE_CLIP) break;
412
+ }
413
+ if (text.length === 0) return "";
414
+ return `[${message.role}]\n${text.length > SUMMARY_MESSAGE_CLIP ? `${text.slice(0, SUMMARY_MESSAGE_CLIP)}…` : text}`;
415
+ };
416
+ /**
417
+ * Deterministic emergency input record, not a progress summary. Keep recent user inputs and
418
+ * the last, as-yet-unconsumed Tool batch. Clip before rendering large payloads, identify Tool
419
+ * calls for archive lookup, and never recursively copy earlier recovery records.
420
+ */
421
+ const buildRolloverHandoff = (source, state, targetTokens, through = source.length, estimate = estimateMessageTokens) => {
422
+ const protectedTokens = estimatePromptTokens(source.filter((_, index) => index >= through || isProtected(state, source, index)), estimate);
423
+ const maxChars = Math.min(5e3, Math.max(0, Math.floor(((targetTokens ?? 1e4) - protectedTokens - 200) * 2)));
424
+ if (maxChars < 160) return void 0;
425
+ const blocks = [];
426
+ let length = 0;
427
+ const start = state.replacement?.through ?? 0;
428
+ const lastTool = source.findLastIndex((message, index) => index < through && message.role === "tool");
429
+ const unconsumed = lastTool >= start && !source.slice(lastTool + 1, through).some((message) => message.role === "assistant");
430
+ let lastAssistant = lastTool;
431
+ while (lastAssistant >= start && source[lastAssistant]?.role !== "assistant") lastAssistant -= 1;
432
+ for (let index = through - 1; index >= start; index -= 1) {
433
+ const message = source[index];
434
+ if (message === void 0 || isProtected(state, source, index)) continue;
435
+ const isUnconsumedBatch = unconsumed && index >= lastAssistant && index <= lastTool;
436
+ if (message.role !== "user" && !isUnconsumedBatch) continue;
437
+ if (message.role === "user" && message.content.some((part) => part.type === "text" && part.text.startsWith("A fresh context window has started. Earlier conversation has left this model view. Restore relevant notes and use available history tools to retrieve evidence; verify live state before repeating an action.\n\n"))) continue;
438
+ let block = summaryBlock(message);
439
+ if (isUnconsumedBatch && typeof message.content !== "string") block = `[Unconsumed batch; history search call IDs: ${message.content.flatMap((part) => part.type === "tool-call" || part.type === "tool-result" ? [part.id.slice(0, 256)] : []).slice(0, 16).join(", ")}]\n${block}`;
440
+ const remaining = maxChars - length - 120;
441
+ if (remaining <= 0) break;
442
+ const selected = block.slice(0, Math.min(2500, remaining));
443
+ blocks.unshift(selected);
444
+ length += selected.length + 2;
445
+ if (selected.length < block.length) break;
446
+ }
447
+ return `Recovery excerpts, not verified progress. Content may be omitted; use notes and history.\n\n${blocks.join("\n\n")}`.slice(0, maxChars);
448
+ };
449
+ /**
450
+ * Render the covered span as plain text for the summarizer call, bounded
451
+ * twice: every message's rendered text is clipped to a fixed length (tool
452
+ * results additionally clip their JSON payloads), and the whole render obeys
453
+ * `SUMMARY_INPUT_BUDGET` with middle-out retention — oldest and newest
454
+ * blocks survive, the middle collapses into one deterministic elision
455
+ * marker. A previous summary is folded in first so nothing silently drops
456
+ * out of coverage across repeated compactions. An oversized previous summary
457
+ * returns undefined before rendering: callers must reject it, never truncate it.
458
+ */
459
+ const renderForSummary = (covered, previousSummary) => {
460
+ if (previousSummary !== void 0 && previousSummary.length > 65536) return void 0;
461
+ const joiner = "\n\n";
462
+ const previousBlock = previousSummary === void 0 ? void 0 : `[Previous summary]\n${previousSummary}`;
463
+ const fixed = (previousBlock === void 0 ? 0 : previousBlock.length + 2) + SUMMARY_REQUEST_PREFIX.length + 14;
464
+ const budget = SUMMARY_INPUT_BUDGET - fixed - SUMMARY_ELISION_RESERVE;
465
+ const head = [];
466
+ const tail = [];
467
+ let length = 0;
468
+ let start = 0;
469
+ let end = covered.length - 1;
470
+ let boundaryBlock;
471
+ while (start <= end) {
472
+ const message = covered[start];
473
+ const block = message === void 0 ? "" : summaryBlock(message);
474
+ if (block.length > 0 && length + block.length + 2 > Math.floor(budget / 2)) {
475
+ boundaryBlock = block;
476
+ break;
477
+ }
478
+ if (block.length > 0) {
479
+ head.push(block);
480
+ length += block.length + 2;
481
+ }
482
+ start += 1;
483
+ }
484
+ while (end >= start) {
485
+ const message = covered[end];
486
+ const block = end === start && boundaryBlock !== void 0 ? boundaryBlock : message === void 0 ? "" : summaryBlock(message);
487
+ if (block.length > 0 && length + block.length + 2 > budget) break;
488
+ if (block.length > 0) {
489
+ tail.push(block);
490
+ length += block.length + 2;
491
+ }
492
+ end -= 1;
493
+ }
494
+ const omitted = end - start + 1;
495
+ const lines = [];
496
+ if (previousBlock !== void 0) lines.push(previousBlock);
497
+ lines.push(...head);
498
+ if (omitted > 0) lines.push(`[… ${omitted} messages omitted from summary input …]`);
499
+ lines.push(...tail.reverse());
500
+ return lines.join(joiner);
501
+ };
502
+ //#endregion
503
+ export { initialCompactionState as _, SUMMARY_REQUEST_PREFIX as a, boundedCanonicalJsonSnapshot as b, buildRolloverHandoff as c, collectCoveredMessages as d, contextWindowId as f, evaluateMessageTokenEstimates as g, estimatePromptTokens as h, SUMMARY_MAX_LENGTH as i, choosePruneBound as l, estimateMessageTokens as m, COMPACTION_SUMMARY_PREFIX as n, SUMMARY_REQUEST_SUFFIX as o, contextWindowMessage as p, CONTEXT_ROLLOVER_PREFIX as r, buildCompactedView as s, CLEARED_TOOL_RESULT as t, chooseSummarizeCut as u, isContextOverflowMessage as v, boundedJsonSnapshot as x, renderForSummary as y };
504
+
505
+ //# sourceMappingURL=compaction-C2OTceKw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-C2OTceKw.mjs","names":[],"sources":["../src/engine/internal/provider-result-staging.ts","../src/engine/internal/compaction.ts"],"sourcesContent":["import type { Schema } from \"effect\";\n\nconst MAX_JSON_DEPTH = 128;\n\nexport interface BoundedJsonSnapshot {\n readonly value: Schema.Json;\n readonly bytes: number;\n}\n\nconst FailedSnapshot = Symbol(\"@effect-agent/engine/FailedProviderResultSnapshot\");\n\n/**\n * @internal Normalize one untrusted JSON value into an owned, frozen snapshot while counting the\n * exact UTF-8 bytes of that same snapshot. The traversal never invokes `toJSON` or accessors,\n * rejects non-plain objects and excessive nesting, and stops as soon as the byte budget is spent.\n */\nconst snapshotJson = (\n root: unknown,\n maxBytes: number,\n maxDepth: number,\n rejectNonFiniteNumbers: boolean,\n): BoundedJsonSnapshot | undefined => {\n if (\n !Number.isSafeInteger(maxBytes) ||\n maxBytes < 0 ||\n !Number.isSafeInteger(maxDepth) ||\n maxDepth < 0\n ) {\n return undefined;\n }\n let total = 0;\n const ancestors = new WeakSet<object>();\n\n const add = (bytes: number): boolean => {\n if (bytes > maxBytes - total) return false;\n total += bytes;\n\n return true;\n };\n\n const addString = (value: string): boolean => {\n if (!add(2)) return false;\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n\n if (code === 0x22 || code === 0x5c) {\n if (!add(2)) return false;\n } else if (code <= 0x1f) {\n // Backspace, tab, newline, form-feed, and carriage-return use two-byte escapes; all other\n // control characters use a six-byte `\\\\u00xx` escape.\n if (!add(code >= 0x08 && code <= 0x0d && code !== 0x0b ? 2 : 6)) return false;\n } else if (code <= 0x7f) {\n if (!add(1)) return false;\n } else if (code <= 0x7ff) {\n if (!add(2)) return false;\n } else if (code >= 0xd800 && code <= 0xdbff) {\n const low = value.charCodeAt(index + 1);\n\n if (low >= 0xdc00 && low <= 0xdfff) {\n if (!add(4)) return false;\n index += 1;\n } else if (!add(6)) {\n return false;\n }\n } else if (code >= 0xdc00 && code <= 0xdfff) {\n if (!add(6)) return false;\n } else if (!add(3)) {\n return false;\n }\n }\n\n return true;\n };\n\n const visit = (value: unknown, depth: number): Schema.Json | typeof FailedSnapshot => {\n if (depth > maxDepth) return FailedSnapshot;\n if (value === null) return add(4) ? null : FailedSnapshot;\n switch (typeof value) {\n case \"string\":\n return addString(value) ? value : FailedSnapshot;\n case \"boolean\":\n return add(value ? 4 : 5) ? value : FailedSnapshot;\n case \"number\": {\n // JSON's numeric representation is inherently bounded for one IEEE-754 value. Retain the\n // wire-equivalent null for non-finite values so counting and later serialization agree.\n if (!Number.isFinite(value)) {\n return rejectNonFiniteNumbers ? FailedSnapshot : add(4) ? null : FailedSnapshot;\n }\n const encoded = JSON.stringify(value);\n\n return encoded !== undefined && add(encoded.length) ? value : FailedSnapshot;\n }\n case \"object\": {\n if (ancestors.has(value)) return FailedSnapshot;\n const isArray = Array.isArray(value);\n const prototype = Object.getPrototypeOf(value);\n\n if (prototype !== (isArray ? Array.prototype : Object.prototype) && prototype !== null) {\n return FailedSnapshot;\n }\n if (\n Object.getOwnPropertyDescriptor(value, \"toJSON\") !== undefined ||\n (prototype !== null && Object.getOwnPropertyDescriptor(prototype, \"toJSON\") !== undefined)\n ) {\n return FailedSnapshot;\n }\n ancestors.add(value);\n try {\n if (isArray) {\n const lengthDescriptor = Object.getOwnPropertyDescriptor(value, \"length\");\n\n if (\n lengthDescriptor === undefined ||\n !(\"value\" in lengthDescriptor) ||\n typeof lengthDescriptor.value !== \"number\" ||\n !Number.isSafeInteger(lengthDescriptor.value) ||\n lengthDescriptor.value < 0\n ) {\n return FailedSnapshot;\n }\n if (!add(1)) return FailedSnapshot;\n const snapshot: Array<Schema.Json> = [];\n\n for (let index = 0; index < lengthDescriptor.value; index += 1) {\n if (index > 0 && !add(1)) return FailedSnapshot;\n const descriptor = Object.getOwnPropertyDescriptor(value, index);\n\n if (descriptor === undefined) {\n if (!add(4)) return FailedSnapshot;\n snapshot.push(null);\n continue;\n }\n if (!(\"value\" in descriptor)) return FailedSnapshot;\n const item = visit(descriptor.value, depth + 1);\n\n if (item === FailedSnapshot) return FailedSnapshot;\n snapshot.push(item);\n }\n if (!add(1)) return FailedSnapshot;\n Object.setPrototypeOf(snapshot, null);\n\n return Object.freeze(snapshot);\n }\n if (!add(1)) return FailedSnapshot;\n const entries: Array<readonly [string, Schema.Json]> = [];\n let first = true;\n\n for (const key in value) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n\n if (descriptor === undefined || !descriptor.enumerable) continue;\n if (!(\"value\" in descriptor)) return FailedSnapshot;\n if (!first && !add(1)) return FailedSnapshot;\n first = false;\n if (!addString(key) || !add(1)) return FailedSnapshot;\n const item = visit(descriptor.value, depth + 1);\n\n if (item === FailedSnapshot) return FailedSnapshot;\n entries.push([key, item]);\n }\n if (!add(1)) return FailedSnapshot;\n const snapshot: Record<string, Schema.Json> = Object.fromEntries(entries);\n\n Object.setPrototypeOf(snapshot, null);\n\n return Object.freeze(snapshot);\n } finally {\n ancestors.delete(value);\n }\n }\n case \"bigint\":\n case \"function\":\n case \"symbol\":\n case \"undefined\":\n return FailedSnapshot;\n }\n\n return FailedSnapshot;\n };\n\n try {\n const value = visit(root, 0);\n\n return value === FailedSnapshot ? undefined : { value, bytes: total };\n } catch {\n // Revoked or adversarial proxies and reflection failures are protocol-invalid, never trusted.\n return undefined;\n }\n};\n\n/**\n * Normalize provider-owned JSON using JSON serialization's `NaN`/infinity to\n * `null` behavior. Provider events use this form so byte accounting matches\n * their eventual JSON representation.\n */\nexport const boundedJsonSnapshot = (\n root: unknown,\n maxBytes: number,\n maxDepth = MAX_JSON_DEPTH,\n): BoundedJsonSnapshot | undefined => snapshotJson(root, maxBytes, maxDepth, false);\n\n/**\n * Validate canonical JSON without repairing non-finite numbers. Recovery\n * inputs use this form because changing a recorded value would fabricate\n * history.\n */\nexport const boundedCanonicalJsonSnapshot = (\n root: unknown,\n maxBytes: number,\n maxDepth = MAX_JSON_DEPTH,\n): BoundedJsonSnapshot | undefined => snapshotJson(root, maxBytes, maxDepth, true);\n","import { Option, Schema } from \"effect\";\nimport { Prompt } from \"effect/unstable/ai\";\n\nimport type { ContextMessageTokenEstimator } from \"../ContextCompactor.ts\";\nimport { boundedCanonicalJsonSnapshot } from \"./provider-result-staging.ts\";\n\n/**\n * Pure helpers for engine-native context compaction (RUN-026/RUN-027). Everything here is deterministic and side-effect free:\n * the engine's turn loop owns the state transitions, the durable coordinator\n * owns the canonical record, and this module owns the arithmetic.\n *\n * Compaction is a VIEW over official history, never a mutation of it. The\n * durable commit machinery slices official history by length\n * (`lastCommitLen` in the coordinator), so official history must stay\n * append-only within an Attempt; only the outgoing model prompt is rebuilt.\n */\n\n/** Model-visible replacement for a tool result cleared by prune compaction. */\nexport const CLEARED_TOOL_RESULT = \"[tool result cleared by compaction]\";\n\n/** Prefix of the user message that carries a compaction summary into the prompt. */\nexport const COMPACTION_SUMMARY_PREFIX = \"The prior thread was compacted into this summary:\\n\\n\";\n\n/** Rollover text is recovery evidence; it never asserts that an external action succeeded. */\nexport const CONTEXT_ROLLOVER_PREFIX =\n \"A fresh context window has started. Earlier conversation has left this model view. Restore relevant notes and use available history tools to retrieve evidence; verify live state before repeating an action.\\n\\n\";\n\n/** Stable across Attempts; the initial window uses turn zero. */\nexport const contextWindowId = (runId: string, turn: number): string => `context:${runId}:${turn}`;\n\n/** Shared by the live interpreter and canonical journal projection. */\nexport const contextWindowMessage = (windowId: string, handoff?: string): Prompt.Message =>\n Prompt.makeMessage(\"user\", {\n content: [\n Prompt.makePart(\"text\", {\n text: `${CONTEXT_ROLLOVER_PREFIX}Window: ${windowId}${handoff === undefined ? \"\" : `\\n\\nHandoff (untrusted continuation notes):\\n${handoff}`}`,\n }),\n ],\n });\n\n/**\n * Fixed summarization instruction (RUN-026). The skeleton mirrors what the\n * surveyed harnesses converged on; exact file paths and identifiers must\n * survive because the continuing agent sees only this summary plus the tail.\n */\nexport const COMPACTION_INSTRUCTION = [\n \"You are compacting an agent thread to reclaim context space.\",\n \"Summarize the transcript below for the SAME agent to continue working:\",\n \"it will see only this summary plus the most recent messages.\",\n \"Structure the summary exactly as:\",\n \"Goal:\",\n \"Constraints:\",\n \"Progress:\",\n \"Decisions:\",\n \"Next steps:\",\n \"Critical context:\",\n \"Be terse. Preserve exact file paths, identifiers, and values needed to\",\n \"continue. Do not continue the thread; output only the summary.\",\n].join(\"\\n\");\n\n/**\n * Provider context-length rejections, matched case-insensitively over the\n * error's own text. Kept intentionally broad: a false positive costs one\n * summarize-and-retry, a false negative surfaces the raw provider error.\n */\nconst CONTEXT_OVERFLOW_PATTERN =\n /context[\\s_-]?length|prompt is too long|maximum context (?:length|window)|input .{0,24}too long|exceeds .{0,24}context|too many (?:input )?tokens|context[\\s_-]?window[\\s_-]?exceeded|context overflow/i;\n\n/** RUN-027: does this provider error text describe a context-window overflow? */\nexport const isContextOverflowMessage = (text: string): boolean =>\n CONTEXT_OVERFLOW_PATTERN.test(text);\n\nconst utf8Length = (text: string): number => {\n let bytes = text.length;\n\n for (let index = 0; index < text.length; index++) {\n const codeUnit = text.charCodeAt(index);\n\n if (codeUnit <= 0x7f) continue;\n if (codeUnit <= 0x7ff) {\n bytes++;\n continue;\n }\n if (codeUnit >= 0xd800 && codeUnit <= 0xdbff && index + 1 < text.length) {\n const next = text.charCodeAt(index + 1);\n\n if (next >= 0xdc00 && next <= 0xdfff) {\n // The two UTF-16 code units already contributed two of the four UTF-8 bytes.\n bytes += 2;\n index++;\n continue;\n }\n }\n bytes += 2;\n }\n\n return bytes;\n};\n\n/**\n * Deterministic UTF-8 bytes/4 token estimate over one message's structural JSON.\n * Conservative for prose, slightly generous for dense JSON — the estimate\n * only gates WHEN to compact, never what is preserved.\n */\nexport const estimateMessageTokens = (message: Prompt.Message): number => {\n let text: string | undefined;\n\n try {\n text = JSON.stringify(message);\n } catch {\n text = undefined;\n }\n\n return text === undefined ? 0 : Math.ceil(utf8Length(text) / 4);\n};\n\n/** Sum of `estimateMessageTokens` over a message array. */\nexport const estimatePromptTokens = (\n messages: ReadonlyArray<Prompt.Message>,\n estimate: (message: Prompt.Message) => number = estimateMessageTokens,\n): number => {\n let total = 0;\n\n for (const message of messages) {\n total += estimate(message);\n }\n\n return total;\n};\n\nconst isTokenEstimate = Schema.is(Schema.Natural);\n\n/** Validate each replacement at the Effect caller's boundary without throwing from arithmetic. */\nexport const evaluateMessageTokenEstimates = <A>(\n override: ContextMessageTokenEstimator | undefined,\n operation: (estimate: (message: Prompt.Message) => number) => A,\n): Option.Option<A> => {\n let valid = true;\n\n const value = operation((message) => {\n const replacement = override?.(message);\n const estimate = replacement === undefined ? estimateMessageTokens(message) : replacement;\n\n if (!isTokenEstimate(estimate)) valid = false;\n\n return estimate;\n });\n\n return valid ? Option.some(value) : Option.none();\n};\n\n/**\n * Mutable per-Run compaction state held on the engine's RunContext. Indices\n * are positions in the SOURCE prompt (the official-history basis handed to\n * each Turn). Ordinary history grows append-only. Prepared history must retain\n * content-equivalent covered prefixes or the engine rejects the next Turn.\n */\nexport interface ContextCompactionState {\n /**\n * Source-index bounds `[start, end)` of the protected instruction/input\n * block, mapped to prepared indices when necessary. `-1` before mapping;\n * an unmappable protected block fails before any compaction decision.\n */\n protectedStart: number;\n protectedEnd: number;\n /** Prepared prompts also retain application-added system instructions. */\n protectSystemMessages?: boolean;\n /** Tool messages at source index below this bound render as cleared. */\n clearedThrough: number;\n /**\n * Source messages below this bound (outside the protected block) are\n * replaced by a summary or a fresh-window marker. Absent before the first replacement.\n */\n replacement:\n | { readonly kind: \"summarize\"; readonly through: number; readonly summary: string }\n | {\n readonly kind: \"rollover\";\n readonly through: number;\n readonly windowId: string;\n readonly handoff?: string;\n }\n | undefined;\n /** Loop guard: at most one threshold compaction per Turn. */\n lastCompactionTurn: number;\n /** RUN-027 guard: at most one overflow compact-and-retry per Turn. */\n overflowRetryTurn: number;\n /**\n * View length at the last model call, the base of the provider-anchored\n * estimate. `-1` invalidates it (fresh Run or just compacted), forcing a\n * full-view estimate.\n */\n lastViewLength: number;\n}\n\n/** Fresh compaction state for a new Run. */\nexport const initialCompactionState = (): ContextCompactionState => ({\n protectedStart: -1,\n protectedEnd: -1,\n clearedThrough: 0,\n replacement: undefined,\n lastCompactionTurn: 0,\n overflowRetryTurn: 0,\n lastViewLength: -1,\n});\n\nconst isProtected = (\n state: ContextCompactionState,\n source: ReadonlyArray<Prompt.Message>,\n index: number,\n): boolean => {\n if (state.protectSystemMessages && source[index]?.role === \"system\") return true;\n if (state.protectedStart >= 0) {\n return index >= state.protectedStart && index < state.protectedEnd;\n }\n\n return source[index]?.role === \"system\";\n};\n\nconst clearedToolMessage = (message: Prompt.Message): Prompt.Message => {\n if (message.role !== \"tool\" || typeof message.content === \"string\") {\n return message;\n }\n\n // Structural rebuild keeps the message's pairing identity (same part ids\n // and names) while replacing only the result payloads the model would see.\n return Prompt.makeMessage(\"tool\", {\n content: message.content.map((part) =>\n part.type === \"tool-result\"\n ? Prompt.makePart(\"tool-result\", {\n id: part.id,\n name: part.name,\n result: CLEARED_TOOL_RESULT,\n isFailure: part.isFailure,\n providerExecuted: part.providerExecuted,\n })\n : part,\n ),\n });\n};\n\nconst renderMessage = (\n state: ContextCompactionState,\n message: Prompt.Message,\n index: number,\n): Prompt.Message =>\n index < state.clearedThrough && message.role === \"tool\" ? clearedToolMessage(message) : message;\n\nconst summaryMessage = (summary: string): Prompt.Message =>\n Prompt.makeMessage(\"user\", {\n content: [Prompt.makePart(\"text\", { text: `${COMPACTION_SUMMARY_PREFIX}${summary}` })],\n });\n\n/**\n * Build the model-visible view of the source prompt under the current\n * compaction state: protected block in place, covered span replaced by the\n * summary message, old tool results cleared. Identity when no compaction has\n * happened.\n */\nexport const buildCompactedView = (\n source: ReadonlyArray<Prompt.Message>,\n state: ContextCompactionState,\n): ReadonlyArray<Prompt.Message> => {\n if (state.replacement === undefined && state.clearedThrough === 0) {\n return source;\n }\n const view: Array<Prompt.Message> = [];\n\n if (state.replacement !== undefined && state.replacement.through > 0) {\n const protectedStart =\n state.protectedStart >= 0 && !state.protectSystemMessages ? state.protectedStart : 0;\n\n const protectedEnd =\n state.protectedStart >= 0 && !state.protectSystemMessages\n ? state.protectedEnd\n : (state.replacement?.through ?? 0);\n\n for (\n let index = protectedStart;\n index < Math.min(protectedEnd, state.replacement?.through ?? 0, source.length);\n index += 1\n ) {\n const message = source[index];\n\n if (message !== undefined && isProtected(state, source, index)) {\n view.push(renderMessage(state, message, index));\n }\n }\n view.push(\n state.replacement.kind === \"summarize\"\n ? summaryMessage(state.replacement.summary)\n : contextWindowMessage(state.replacement.windowId, state.replacement.handoff),\n );\n for (let index = state.replacement?.through ?? 0; index < source.length; index += 1) {\n const message = source[index];\n\n if (message !== undefined) {\n view.push(renderMessage(state, message, index));\n }\n }\n\n return view;\n }\n for (let index = 0; index < source.length; index += 1) {\n const message = source[index];\n\n if (message !== undefined) {\n view.push(renderMessage(state, message, index));\n }\n }\n\n return view;\n};\n\n/**\n * Prune selection: the new `clearedThrough` bound. Walks tool messages\n * newest→oldest, always protecting the most recent tool message (the model\n * has not reacted to it yet), then protecting older ones while their\n * estimates fit inside `keepRecentTokens`. If the whole view exceeds `targetTokens`,\n * clear more older results until it fits or only the newest result remains.\n * Replaced messages consume no retention budget. Never decreases the bound.\n */\nexport const choosePruneBound = (\n source: ReadonlyArray<Prompt.Message>,\n state: ContextCompactionState,\n keepRecentTokens: number,\n targetTokens?: number,\n estimate: (message: Prompt.Message) => number = estimateMessageTokens,\n): number => {\n const toolIndices: Array<number> = [];\n\n for (let index = 0; index < source.length; index += 1) {\n if (\n index >= (state.replacement?.through ?? 0) &&\n source[index]?.role === \"tool\" &&\n !isProtected(state, source, index)\n ) {\n toolIndices.push(index);\n }\n }\n if (toolIndices.length <= 1) {\n return state.clearedThrough;\n }\n let budget = keepRecentTokens;\n let newestCleared = -1;\n\n for (let position = toolIndices.length - 1; position >= 0; position -= 1) {\n const index = toolIndices[position];\n\n if (index === undefined) continue;\n const message = source[index];\n\n if (message === undefined) continue;\n if (position === toolIndices.length - 1) {\n budget -= estimate(message);\n continue;\n }\n const cost = estimate(message);\n\n if (budget - cost >= 0 && index >= state.clearedThrough) {\n budget -= cost;\n continue;\n }\n newestCleared = index;\n break;\n }\n\n let through =\n newestCleared === -1 ? state.clearedThrough : Math.max(state.clearedThrough, newestCleared + 1);\n\n if (targetTokens === undefined) return through;\n\n let estimated = estimatePromptTokens(\n buildCompactedView(source, { ...state, clearedThrough: through }),\n estimate,\n );\n\n for (\n let position = 0;\n position < toolIndices.length - 1 && estimated > targetTokens;\n position += 1\n ) {\n const index = toolIndices[position];\n\n if (index === undefined || index < through) continue;\n const message = source[index];\n\n if (message === undefined) continue;\n through = index + 1;\n estimated -= estimate(message) - estimate(clearedToolMessage(message));\n }\n\n return through;\n};\n\n/**\n * Summarize selection: the source cut index `C` — messages `[0, C)` outside\n * the protected block fold into the summary; `[C, …)` is the kept tail.\n * Walks newest→oldest accumulating view estimates until `keepRecentTokens`\n * is retained, then moves the cut down so no tool message is separated from\n * the assistant message that declared its calls.\n */\nexport const chooseSummarizeCut = (\n source: ReadonlyArray<Prompt.Message>,\n state: ContextCompactionState,\n keepRecentTokens: number,\n estimate: (message: Prompt.Message) => number = estimateMessageTokens,\n): number => {\n let kept = 0;\n let cut = 0;\n\n for (let index = source.length - 1; index >= 0; index -= 1) {\n const message = source[index];\n\n if (message === undefined) continue;\n kept += estimate(renderMessage(state, message, index));\n if (kept >= keepRecentTokens) {\n cut = index;\n break;\n }\n }\n // A tool message must stay with its declaring assistant message: walk the\n // cut down across any tool messages so pairing is never split.\n while (cut > 0 && source[cut]?.role === \"tool\") {\n cut -= 1;\n }\n\n return Math.max(cut, state.replacement?.through ?? 0);\n};\n\n/**\n * The messages a cut NEWLY covers — from the prior replacement boundary to the\n * cut, protected block excluded, in order. Starting at the replacement boundary\n * keeps repeated compactions incremental: the previously covered span lives\n * on only through the previous summary, never as resubmitted raw history.\n */\nexport const collectCoveredMessages = (\n source: ReadonlyArray<Prompt.Message>,\n state: ContextCompactionState,\n cut: number,\n): ReadonlyArray<Prompt.Message> => {\n const covered: Array<Prompt.Message> = [];\n\n for (\n let index = Math.max(0, state.replacement?.through ?? 0);\n index < cut && index < source.length;\n index += 1\n ) {\n const message = source[index];\n\n if (message !== undefined && !isProtected(state, source, index)) {\n covered.push(message);\n }\n }\n\n return covered;\n};\n\nconst SUMMARY_TOOL_RESULT_CLIP = 2_000;\n\nconst jsonPreview = (value: unknown, limit: number): string => {\n if (typeof value === \"string\") return JSON.stringify(value.slice(0, limit)).slice(0, limit);\n const snapshot = boundedCanonicalJsonSnapshot(value, limit);\n\n return snapshot === undefined\n ? \"[omitted oversized or unsupported JSON]\"\n : JSON.stringify(snapshot.value);\n};\n\nconst partText = (part: Prompt.Message[\"content\"][number] | string): string => {\n if (typeof part === \"string\") return part;\n switch (part.type) {\n case \"text\": {\n return part.text;\n }\n case \"reasoning\": {\n return \"\";\n }\n case \"tool-call\": {\n return `[tool call ${part.name.slice(0, 500)} ${jsonPreview(part.params, 500)}]`;\n }\n case \"tool-result\": {\n return `[tool result ${part.name.slice(0, 500)}: ${jsonPreview(part.result, SUMMARY_TOOL_RESULT_CLIP)}]`;\n }\n default: {\n return `[${part.type}]`;\n }\n }\n};\n\n/**\n * Character budget for the complete default summarizer request, including\n * its instruction, transcript delimiters, previous summary, and elision marker.\n */\nexport const SUMMARY_INPUT_BUDGET = 80_000;\nexport const SUMMARY_MAX_LENGTH = 65_536;\nexport const SUMMARY_REQUEST_PREFIX = `${COMPACTION_INSTRUCTION}\\n\\n<transcript>\\n`;\nexport const SUMMARY_REQUEST_SUFFIX = \"\\n</transcript>\";\n\nconst SUMMARY_MESSAGE_CLIP = 2_000;\nconst SUMMARY_ELISION_RESERVE = 128;\n\nconst summaryBlock = (message: Prompt.Message): string => {\n let text = \"\";\n\n if (typeof message.content === \"string\") {\n text = message.content.slice(0, SUMMARY_MESSAGE_CLIP + 1);\n } else {\n for (const part of message.content) {\n const piece = partText(part);\n\n if (piece.length === 0) continue;\n if (text.length > 0) text += \"\\n\";\n text += piece.slice(0, SUMMARY_MESSAGE_CLIP + 1 - text.length);\n if (text.length > SUMMARY_MESSAGE_CLIP) break;\n }\n }\n if (text.length === 0) return \"\";\n\n return `[${message.role}]\\n${text.length > SUMMARY_MESSAGE_CLIP ? `${text.slice(0, SUMMARY_MESSAGE_CLIP)}…` : text}`;\n};\n\n/**\n * Deterministic emergency input record, not a progress summary. Keep recent user inputs and\n * the last, as-yet-unconsumed Tool batch. Clip before rendering large payloads, identify Tool\n * calls for archive lookup, and never recursively copy earlier recovery records.\n */\nexport const buildRolloverHandoff = (\n source: ReadonlyArray<Prompt.Message>,\n state: ContextCompactionState,\n targetTokens: number | undefined,\n through = source.length,\n estimate: (message: Prompt.Message) => number = estimateMessageTokens,\n): string | undefined => {\n const protectedTokens = estimatePromptTokens(\n source.filter((_, index) => index >= through || isProtected(state, source, index)),\n estimate,\n );\n\n const maxChars = Math.min(\n 5_000,\n Math.max(0, Math.floor(((targetTokens ?? 10_000) - protectedTokens - 200) * 2)),\n );\n\n if (maxChars < 160) return undefined;\n const blocks: Array<string> = [];\n let length = 0;\n const start = state.replacement?.through ?? 0;\n\n const lastTool = source.findLastIndex(\n (message, index) => index < through && message.role === \"tool\",\n );\n\n const unconsumed =\n lastTool >= start &&\n !source.slice(lastTool + 1, through).some((message) => message.role === \"assistant\");\n\n let lastAssistant = lastTool;\n\n while (lastAssistant >= start && source[lastAssistant]?.role !== \"assistant\") lastAssistant -= 1;\n for (let index = through - 1; index >= start; index -= 1) {\n const message = source[index];\n\n if (message === undefined || isProtected(state, source, index)) continue;\n const isUnconsumedBatch = unconsumed && index >= lastAssistant && index <= lastTool;\n\n if (message.role !== \"user\" && !isUnconsumedBatch) continue;\n // A projected boundary from a previous Attempt is already a derived handoff.\n if (\n message.role === \"user\" &&\n message.content.some(\n (part) => part.type === \"text\" && part.text.startsWith(CONTEXT_ROLLOVER_PREFIX),\n )\n )\n continue;\n let block = summaryBlock(message);\n\n if (isUnconsumedBatch && typeof message.content !== \"string\") {\n const ids = message.content\n .flatMap((part) =>\n part.type === \"tool-call\" || part.type === \"tool-result\" ? [part.id.slice(0, 256)] : [],\n )\n .slice(0, 16);\n\n block = `[Unconsumed batch; history search call IDs: ${ids.join(\", \")}]\\n${block}`;\n }\n const remaining = maxChars - length - 120;\n\n if (remaining <= 0) break;\n const selected = block.slice(0, Math.min(2_500, remaining));\n\n blocks.unshift(selected);\n length += selected.length + 2;\n if (selected.length < block.length) break;\n }\n\n return `Recovery excerpts, not verified progress. Content may be omitted; use notes and history.\\n\\n${blocks.join(\"\\n\\n\")}`.slice(\n 0,\n maxChars,\n );\n};\n\n/**\n * Render the covered span as plain text for the summarizer call, bounded\n * twice: every message's rendered text is clipped to a fixed length (tool\n * results additionally clip their JSON payloads), and the whole render obeys\n * `SUMMARY_INPUT_BUDGET` with middle-out retention — oldest and newest\n * blocks survive, the middle collapses into one deterministic elision\n * marker. A previous summary is folded in first so nothing silently drops\n * out of coverage across repeated compactions. An oversized previous summary\n * returns undefined before rendering: callers must reject it, never truncate it.\n */\nexport const renderForSummary = (\n covered: ReadonlyArray<Prompt.Message>,\n previousSummary: string | undefined,\n): string | undefined => {\n if (previousSummary !== undefined && previousSummary.length > SUMMARY_MAX_LENGTH)\n return undefined;\n const joiner = \"\\n\\n\";\n\n const previousBlock =\n previousSummary === undefined ? undefined : `[Previous summary]\\n${previousSummary}`;\n\n const fixed =\n (previousBlock === undefined ? 0 : previousBlock.length + joiner.length) +\n SUMMARY_REQUEST_PREFIX.length +\n SUMMARY_REQUEST_SUFFIX.length;\n\n const budget = SUMMARY_INPUT_BUDGET - fixed - SUMMARY_ELISION_RESERVE;\n const head: Array<string> = [];\n const tail: Array<string> = [];\n let length = 0;\n let start = 0;\n let end = covered.length - 1;\n let boundaryBlock: string | undefined;\n\n while (start <= end) {\n const message = covered[start];\n const block = message === undefined ? \"\" : summaryBlock(message);\n\n if (block.length > 0 && length + block.length + joiner.length > Math.floor(budget / 2)) {\n boundaryBlock = block;\n break;\n }\n if (block.length > 0) {\n head.push(block);\n length += block.length + joiner.length;\n }\n start += 1;\n }\n while (end >= start) {\n const message = covered[end];\n\n const block =\n end === start && boundaryBlock !== undefined\n ? boundaryBlock\n : message === undefined\n ? \"\"\n : summaryBlock(message);\n\n if (block.length > 0 && length + block.length + joiner.length > budget) break;\n if (block.length > 0) {\n tail.push(block);\n length += block.length + joiner.length;\n }\n end -= 1;\n }\n const omitted = end - start + 1;\n const lines: Array<string> = [];\n\n if (previousBlock !== undefined) {\n lines.push(previousBlock);\n }\n lines.push(...head);\n if (omitted > 0) lines.push(`[… ${omitted} messages omitted from summary input …]`);\n lines.push(...tail.reverse());\n\n return lines.join(joiner);\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { A as Tools, C as Requirements, D as RunDispositionSchema, E as RunDispositionFailure, F as withModel, M as UpdatesSchema, N as inspectTools, O as ToolInspection, P as make, S as OutputSchema, T as RunDispositionDeclaration, _ as InstructionSource, a as CompletionFromToolDeclaration, b as NativeModel, c as Definition, d as EncodedInput, f as Failure, g as InstructionResult, h as InputSchema, i as Binding, j as Update, k as ToolUnion, l as DefinitionOptions, m as InputPromptSource, n as Any, o as CompletionProjectionInput, p as Input, r as AnyDefinition, s as CompletionToolDeclaration, u as DefinitionRequirements, v as ModelServices, w as RunDisposition, x as Output, y as Name } from "../Agent-CN0EWRsR.mjs";
2
+ export { Any, AnyDefinition, Binding, CompletionFromToolDeclaration, CompletionProjectionInput, CompletionToolDeclaration, Definition, DefinitionOptions, DefinitionRequirements, EncodedInput, Failure, Input, InputPromptSource, InputSchema, InstructionResult, InstructionSource, ModelServices, Name, NativeModel, Output, OutputSchema, Requirements, RunDisposition, RunDispositionDeclaration, RunDispositionFailure, RunDispositionSchema, ToolInspection, ToolUnion, Tools, Update, UpdatesSchema, inspectTools, make, withModel };
@@ -0,0 +1,2 @@
1
+ import { a as withModel, i as make, n as ToolInspection, r as inspectTools } from "../Agent-RklVROrm.mjs";
2
+ export { ToolInspection, inspectTools, make, withModel };
@@ -0,0 +1,2 @@
1
+ import { a as AgentInputError, c as AgentPolicyError, d as ContextBudgetError, f as ContextOverflowError, l as AgentRunDispositionError, m as PolicyLimit, n as AgentApprovalPending, o as AgentInterrupted, p as ModelProtocolError, r as AgentError, s as AgentOutputError, t as AgentApprovalDenied, u as AgentToolAuthorizationDenied } from "../AgentError-CggcAQ7V.mjs";
2
+ export { AgentApprovalDenied, AgentApprovalPending, AgentError, AgentInputError, AgentInterrupted, AgentOutputError, AgentPolicyError, AgentRunDispositionError, AgentToolAuthorizationDenied, ContextBudgetError, ContextOverflowError, ModelProtocolError, PolicyLimit };