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,678 @@
1
+ import { Option, Schema } from "effect";
2
+ import { Prompt } from "effect/unstable/ai";
3
+
4
+ import type { ContextMessageTokenEstimator } from "../ContextCompactor.ts";
5
+ import { boundedCanonicalJsonSnapshot } from "./provider-result-staging.ts";
6
+
7
+ /**
8
+ * Pure helpers for engine-native context compaction (RUN-026/RUN-027). Everything here is deterministic and side-effect free:
9
+ * the engine's turn loop owns the state transitions, the durable coordinator
10
+ * owns the canonical record, and this module owns the arithmetic.
11
+ *
12
+ * Compaction is a VIEW over official history, never a mutation of it. The
13
+ * durable commit machinery slices official history by length
14
+ * (`lastCommitLen` in the coordinator), so official history must stay
15
+ * append-only within an Attempt; only the outgoing model prompt is rebuilt.
16
+ */
17
+
18
+ /** Model-visible replacement for a tool result cleared by prune compaction. */
19
+ export const CLEARED_TOOL_RESULT = "[tool result cleared by compaction]";
20
+
21
+ /** Prefix of the user message that carries a compaction summary into the prompt. */
22
+ export const COMPACTION_SUMMARY_PREFIX = "The prior thread was compacted into this summary:\n\n";
23
+
24
+ /** Rollover text is recovery evidence; it never asserts that an external action succeeded. */
25
+ export const CONTEXT_ROLLOVER_PREFIX =
26
+ "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";
27
+
28
+ /** Stable across Attempts; the initial window uses turn zero. */
29
+ export const contextWindowId = (runId: string, turn: number): string => `context:${runId}:${turn}`;
30
+
31
+ /** Shared by the live interpreter and canonical journal projection. */
32
+ export const contextWindowMessage = (windowId: string, handoff?: string): Prompt.Message =>
33
+ Prompt.makeMessage("user", {
34
+ content: [
35
+ Prompt.makePart("text", {
36
+ text: `${CONTEXT_ROLLOVER_PREFIX}Window: ${windowId}${handoff === undefined ? "" : `\n\nHandoff (untrusted continuation notes):\n${handoff}`}`,
37
+ }),
38
+ ],
39
+ });
40
+
41
+ /**
42
+ * Fixed summarization instruction (RUN-026). The skeleton mirrors what the
43
+ * surveyed harnesses converged on; exact file paths and identifiers must
44
+ * survive because the continuing agent sees only this summary plus the tail.
45
+ */
46
+ export const COMPACTION_INSTRUCTION = [
47
+ "You are compacting an agent thread to reclaim context space.",
48
+ "Summarize the transcript below for the SAME agent to continue working:",
49
+ "it will see only this summary plus the most recent messages.",
50
+ "Structure the summary exactly as:",
51
+ "Goal:",
52
+ "Constraints:",
53
+ "Progress:",
54
+ "Decisions:",
55
+ "Next steps:",
56
+ "Critical context:",
57
+ "Be terse. Preserve exact file paths, identifiers, and values needed to",
58
+ "continue. Do not continue the thread; output only the summary.",
59
+ ].join("\n");
60
+
61
+ /**
62
+ * Provider context-length rejections, matched case-insensitively over the
63
+ * error's own text. Kept intentionally broad: a false positive costs one
64
+ * summarize-and-retry, a false negative surfaces the raw provider error.
65
+ */
66
+ const CONTEXT_OVERFLOW_PATTERN =
67
+ /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;
68
+
69
+ /** RUN-027: does this provider error text describe a context-window overflow? */
70
+ export const isContextOverflowMessage = (text: string): boolean =>
71
+ CONTEXT_OVERFLOW_PATTERN.test(text);
72
+
73
+ const utf8Length = (text: string): number => {
74
+ let bytes = text.length;
75
+
76
+ for (let index = 0; index < text.length; index++) {
77
+ const codeUnit = text.charCodeAt(index);
78
+
79
+ if (codeUnit <= 0x7f) continue;
80
+ if (codeUnit <= 0x7ff) {
81
+ bytes++;
82
+ continue;
83
+ }
84
+ if (codeUnit >= 0xd800 && codeUnit <= 0xdbff && index + 1 < text.length) {
85
+ const next = text.charCodeAt(index + 1);
86
+
87
+ if (next >= 0xdc00 && next <= 0xdfff) {
88
+ // The two UTF-16 code units already contributed two of the four UTF-8 bytes.
89
+ bytes += 2;
90
+ index++;
91
+ continue;
92
+ }
93
+ }
94
+ bytes += 2;
95
+ }
96
+
97
+ return bytes;
98
+ };
99
+
100
+ /**
101
+ * Deterministic UTF-8 bytes/4 token estimate over one message's structural JSON.
102
+ * Conservative for prose, slightly generous for dense JSON — the estimate
103
+ * only gates WHEN to compact, never what is preserved.
104
+ */
105
+ export const estimateMessageTokens = (message: Prompt.Message): number => {
106
+ let text: string | undefined;
107
+
108
+ try {
109
+ text = JSON.stringify(message);
110
+ } catch {
111
+ text = undefined;
112
+ }
113
+
114
+ return text === undefined ? 0 : Math.ceil(utf8Length(text) / 4);
115
+ };
116
+
117
+ /** Sum of `estimateMessageTokens` over a message array. */
118
+ export const estimatePromptTokens = (
119
+ messages: ReadonlyArray<Prompt.Message>,
120
+ estimate: (message: Prompt.Message) => number = estimateMessageTokens,
121
+ ): number => {
122
+ let total = 0;
123
+
124
+ for (const message of messages) {
125
+ total += estimate(message);
126
+ }
127
+
128
+ return total;
129
+ };
130
+
131
+ const isTokenEstimate = Schema.is(Schema.Natural);
132
+
133
+ /** Validate each replacement at the Effect caller's boundary without throwing from arithmetic. */
134
+ export const evaluateMessageTokenEstimates = <A>(
135
+ override: ContextMessageTokenEstimator | undefined,
136
+ operation: (estimate: (message: Prompt.Message) => number) => A,
137
+ ): Option.Option<A> => {
138
+ let valid = true;
139
+
140
+ const value = operation((message) => {
141
+ const replacement = override?.(message);
142
+ const estimate = replacement === undefined ? estimateMessageTokens(message) : replacement;
143
+
144
+ if (!isTokenEstimate(estimate)) valid = false;
145
+
146
+ return estimate;
147
+ });
148
+
149
+ return valid ? Option.some(value) : Option.none();
150
+ };
151
+
152
+ /**
153
+ * Mutable per-Run compaction state held on the engine's RunContext. Indices
154
+ * are positions in the SOURCE prompt (the official-history basis handed to
155
+ * each Turn). Ordinary history grows append-only. Prepared history must retain
156
+ * content-equivalent covered prefixes or the engine rejects the next Turn.
157
+ */
158
+ export interface ContextCompactionState {
159
+ /**
160
+ * Source-index bounds `[start, end)` of the protected instruction/input
161
+ * block, mapped to prepared indices when necessary. `-1` before mapping;
162
+ * an unmappable protected block fails before any compaction decision.
163
+ */
164
+ protectedStart: number;
165
+ protectedEnd: number;
166
+ /** Prepared prompts also retain application-added system instructions. */
167
+ protectSystemMessages?: boolean;
168
+ /** Tool messages at source index below this bound render as cleared. */
169
+ clearedThrough: number;
170
+ /**
171
+ * Source messages below this bound (outside the protected block) are
172
+ * replaced by a summary or a fresh-window marker. Absent before the first replacement.
173
+ */
174
+ replacement:
175
+ | { readonly kind: "summarize"; readonly through: number; readonly summary: string }
176
+ | {
177
+ readonly kind: "rollover";
178
+ readonly through: number;
179
+ readonly windowId: string;
180
+ readonly handoff?: string;
181
+ }
182
+ | undefined;
183
+ /** Loop guard: at most one threshold compaction per Turn. */
184
+ lastCompactionTurn: number;
185
+ /** RUN-027 guard: at most one overflow compact-and-retry per Turn. */
186
+ overflowRetryTurn: number;
187
+ /**
188
+ * View length at the last model call, the base of the provider-anchored
189
+ * estimate. `-1` invalidates it (fresh Run or just compacted), forcing a
190
+ * full-view estimate.
191
+ */
192
+ lastViewLength: number;
193
+ }
194
+
195
+ /** Fresh compaction state for a new Run. */
196
+ export const initialCompactionState = (): ContextCompactionState => ({
197
+ protectedStart: -1,
198
+ protectedEnd: -1,
199
+ clearedThrough: 0,
200
+ replacement: undefined,
201
+ lastCompactionTurn: 0,
202
+ overflowRetryTurn: 0,
203
+ lastViewLength: -1,
204
+ });
205
+
206
+ const isProtected = (
207
+ state: ContextCompactionState,
208
+ source: ReadonlyArray<Prompt.Message>,
209
+ index: number,
210
+ ): boolean => {
211
+ if (state.protectSystemMessages && source[index]?.role === "system") return true;
212
+ if (state.protectedStart >= 0) {
213
+ return index >= state.protectedStart && index < state.protectedEnd;
214
+ }
215
+
216
+ return source[index]?.role === "system";
217
+ };
218
+
219
+ const clearedToolMessage = (message: Prompt.Message): Prompt.Message => {
220
+ if (message.role !== "tool" || typeof message.content === "string") {
221
+ return message;
222
+ }
223
+
224
+ // Structural rebuild keeps the message's pairing identity (same part ids
225
+ // and names) while replacing only the result payloads the model would see.
226
+ return Prompt.makeMessage("tool", {
227
+ content: message.content.map((part) =>
228
+ part.type === "tool-result"
229
+ ? Prompt.makePart("tool-result", {
230
+ id: part.id,
231
+ name: part.name,
232
+ result: CLEARED_TOOL_RESULT,
233
+ isFailure: part.isFailure,
234
+ providerExecuted: part.providerExecuted,
235
+ })
236
+ : part,
237
+ ),
238
+ });
239
+ };
240
+
241
+ const renderMessage = (
242
+ state: ContextCompactionState,
243
+ message: Prompt.Message,
244
+ index: number,
245
+ ): Prompt.Message =>
246
+ index < state.clearedThrough && message.role === "tool" ? clearedToolMessage(message) : message;
247
+
248
+ const summaryMessage = (summary: string): Prompt.Message =>
249
+ Prompt.makeMessage("user", {
250
+ content: [Prompt.makePart("text", { text: `${COMPACTION_SUMMARY_PREFIX}${summary}` })],
251
+ });
252
+
253
+ /**
254
+ * Build the model-visible view of the source prompt under the current
255
+ * compaction state: protected block in place, covered span replaced by the
256
+ * summary message, old tool results cleared. Identity when no compaction has
257
+ * happened.
258
+ */
259
+ export const buildCompactedView = (
260
+ source: ReadonlyArray<Prompt.Message>,
261
+ state: ContextCompactionState,
262
+ ): ReadonlyArray<Prompt.Message> => {
263
+ if (state.replacement === undefined && state.clearedThrough === 0) {
264
+ return source;
265
+ }
266
+ const view: Array<Prompt.Message> = [];
267
+
268
+ if (state.replacement !== undefined && state.replacement.through > 0) {
269
+ const protectedStart =
270
+ state.protectedStart >= 0 && !state.protectSystemMessages ? state.protectedStart : 0;
271
+
272
+ const protectedEnd =
273
+ state.protectedStart >= 0 && !state.protectSystemMessages
274
+ ? state.protectedEnd
275
+ : (state.replacement?.through ?? 0);
276
+
277
+ for (
278
+ let index = protectedStart;
279
+ index < Math.min(protectedEnd, state.replacement?.through ?? 0, source.length);
280
+ index += 1
281
+ ) {
282
+ const message = source[index];
283
+
284
+ if (message !== undefined && isProtected(state, source, index)) {
285
+ view.push(renderMessage(state, message, index));
286
+ }
287
+ }
288
+ view.push(
289
+ state.replacement.kind === "summarize"
290
+ ? summaryMessage(state.replacement.summary)
291
+ : contextWindowMessage(state.replacement.windowId, state.replacement.handoff),
292
+ );
293
+ for (let index = state.replacement?.through ?? 0; index < source.length; index += 1) {
294
+ const message = source[index];
295
+
296
+ if (message !== undefined) {
297
+ view.push(renderMessage(state, message, index));
298
+ }
299
+ }
300
+
301
+ return view;
302
+ }
303
+ for (let index = 0; index < source.length; index += 1) {
304
+ const message = source[index];
305
+
306
+ if (message !== undefined) {
307
+ view.push(renderMessage(state, message, index));
308
+ }
309
+ }
310
+
311
+ return view;
312
+ };
313
+
314
+ /**
315
+ * Prune selection: the new `clearedThrough` bound. Walks tool messages
316
+ * newest→oldest, always protecting the most recent tool message (the model
317
+ * has not reacted to it yet), then protecting older ones while their
318
+ * estimates fit inside `keepRecentTokens`. If the whole view exceeds `targetTokens`,
319
+ * clear more older results until it fits or only the newest result remains.
320
+ * Replaced messages consume no retention budget. Never decreases the bound.
321
+ */
322
+ export const choosePruneBound = (
323
+ source: ReadonlyArray<Prompt.Message>,
324
+ state: ContextCompactionState,
325
+ keepRecentTokens: number,
326
+ targetTokens?: number,
327
+ estimate: (message: Prompt.Message) => number = estimateMessageTokens,
328
+ ): number => {
329
+ const toolIndices: Array<number> = [];
330
+
331
+ for (let index = 0; index < source.length; index += 1) {
332
+ if (
333
+ index >= (state.replacement?.through ?? 0) &&
334
+ source[index]?.role === "tool" &&
335
+ !isProtected(state, source, index)
336
+ ) {
337
+ toolIndices.push(index);
338
+ }
339
+ }
340
+ if (toolIndices.length <= 1) {
341
+ return state.clearedThrough;
342
+ }
343
+ let budget = keepRecentTokens;
344
+ let newestCleared = -1;
345
+
346
+ for (let position = toolIndices.length - 1; position >= 0; position -= 1) {
347
+ const index = toolIndices[position];
348
+
349
+ if (index === undefined) continue;
350
+ const message = source[index];
351
+
352
+ if (message === undefined) continue;
353
+ if (position === toolIndices.length - 1) {
354
+ budget -= estimate(message);
355
+ continue;
356
+ }
357
+ const cost = estimate(message);
358
+
359
+ if (budget - cost >= 0 && index >= state.clearedThrough) {
360
+ budget -= cost;
361
+ continue;
362
+ }
363
+ newestCleared = index;
364
+ break;
365
+ }
366
+
367
+ let through =
368
+ newestCleared === -1 ? state.clearedThrough : Math.max(state.clearedThrough, newestCleared + 1);
369
+
370
+ if (targetTokens === undefined) return through;
371
+
372
+ let estimated = estimatePromptTokens(
373
+ buildCompactedView(source, { ...state, clearedThrough: through }),
374
+ estimate,
375
+ );
376
+
377
+ for (
378
+ let position = 0;
379
+ position < toolIndices.length - 1 && estimated > targetTokens;
380
+ position += 1
381
+ ) {
382
+ const index = toolIndices[position];
383
+
384
+ if (index === undefined || index < through) continue;
385
+ const message = source[index];
386
+
387
+ if (message === undefined) continue;
388
+ through = index + 1;
389
+ estimated -= estimate(message) - estimate(clearedToolMessage(message));
390
+ }
391
+
392
+ return through;
393
+ };
394
+
395
+ /**
396
+ * Summarize selection: the source cut index `C` — messages `[0, C)` outside
397
+ * the protected block fold into the summary; `[C, …)` is the kept tail.
398
+ * Walks newest→oldest accumulating view estimates until `keepRecentTokens`
399
+ * is retained, then moves the cut down so no tool message is separated from
400
+ * the assistant message that declared its calls.
401
+ */
402
+ export const chooseSummarizeCut = (
403
+ source: ReadonlyArray<Prompt.Message>,
404
+ state: ContextCompactionState,
405
+ keepRecentTokens: number,
406
+ estimate: (message: Prompt.Message) => number = estimateMessageTokens,
407
+ ): number => {
408
+ let kept = 0;
409
+ let cut = 0;
410
+
411
+ for (let index = source.length - 1; index >= 0; index -= 1) {
412
+ const message = source[index];
413
+
414
+ if (message === undefined) continue;
415
+ kept += estimate(renderMessage(state, message, index));
416
+ if (kept >= keepRecentTokens) {
417
+ cut = index;
418
+ break;
419
+ }
420
+ }
421
+ // A tool message must stay with its declaring assistant message: walk the
422
+ // cut down across any tool messages so pairing is never split.
423
+ while (cut > 0 && source[cut]?.role === "tool") {
424
+ cut -= 1;
425
+ }
426
+
427
+ return Math.max(cut, state.replacement?.through ?? 0);
428
+ };
429
+
430
+ /**
431
+ * The messages a cut NEWLY covers — from the prior replacement boundary to the
432
+ * cut, protected block excluded, in order. Starting at the replacement boundary
433
+ * keeps repeated compactions incremental: the previously covered span lives
434
+ * on only through the previous summary, never as resubmitted raw history.
435
+ */
436
+ export const collectCoveredMessages = (
437
+ source: ReadonlyArray<Prompt.Message>,
438
+ state: ContextCompactionState,
439
+ cut: number,
440
+ ): ReadonlyArray<Prompt.Message> => {
441
+ const covered: Array<Prompt.Message> = [];
442
+
443
+ for (
444
+ let index = Math.max(0, state.replacement?.through ?? 0);
445
+ index < cut && index < source.length;
446
+ index += 1
447
+ ) {
448
+ const message = source[index];
449
+
450
+ if (message !== undefined && !isProtected(state, source, index)) {
451
+ covered.push(message);
452
+ }
453
+ }
454
+
455
+ return covered;
456
+ };
457
+
458
+ const SUMMARY_TOOL_RESULT_CLIP = 2_000;
459
+
460
+ const jsonPreview = (value: unknown, limit: number): string => {
461
+ if (typeof value === "string") return JSON.stringify(value.slice(0, limit)).slice(0, limit);
462
+ const snapshot = boundedCanonicalJsonSnapshot(value, limit);
463
+
464
+ return snapshot === undefined
465
+ ? "[omitted oversized or unsupported JSON]"
466
+ : JSON.stringify(snapshot.value);
467
+ };
468
+
469
+ const partText = (part: Prompt.Message["content"][number] | string): string => {
470
+ if (typeof part === "string") return part;
471
+ switch (part.type) {
472
+ case "text": {
473
+ return part.text;
474
+ }
475
+ case "reasoning": {
476
+ return "";
477
+ }
478
+ case "tool-call": {
479
+ return `[tool call ${part.name.slice(0, 500)} ${jsonPreview(part.params, 500)}]`;
480
+ }
481
+ case "tool-result": {
482
+ return `[tool result ${part.name.slice(0, 500)}: ${jsonPreview(part.result, SUMMARY_TOOL_RESULT_CLIP)}]`;
483
+ }
484
+ default: {
485
+ return `[${part.type}]`;
486
+ }
487
+ }
488
+ };
489
+
490
+ /**
491
+ * Character budget for the complete default summarizer request, including
492
+ * its instruction, transcript delimiters, previous summary, and elision marker.
493
+ */
494
+ export const SUMMARY_INPUT_BUDGET = 80_000;
495
+ export const SUMMARY_MAX_LENGTH = 65_536;
496
+ export const SUMMARY_REQUEST_PREFIX = `${COMPACTION_INSTRUCTION}\n\n<transcript>\n`;
497
+ export const SUMMARY_REQUEST_SUFFIX = "\n</transcript>";
498
+
499
+ const SUMMARY_MESSAGE_CLIP = 2_000;
500
+ const SUMMARY_ELISION_RESERVE = 128;
501
+
502
+ const summaryBlock = (message: Prompt.Message): string => {
503
+ let text = "";
504
+
505
+ if (typeof message.content === "string") {
506
+ text = message.content.slice(0, SUMMARY_MESSAGE_CLIP + 1);
507
+ } else {
508
+ for (const part of message.content) {
509
+ const piece = partText(part);
510
+
511
+ if (piece.length === 0) continue;
512
+ if (text.length > 0) text += "\n";
513
+ text += piece.slice(0, SUMMARY_MESSAGE_CLIP + 1 - text.length);
514
+ if (text.length > SUMMARY_MESSAGE_CLIP) break;
515
+ }
516
+ }
517
+ if (text.length === 0) return "";
518
+
519
+ return `[${message.role}]\n${text.length > SUMMARY_MESSAGE_CLIP ? `${text.slice(0, SUMMARY_MESSAGE_CLIP)}…` : text}`;
520
+ };
521
+
522
+ /**
523
+ * Deterministic emergency input record, not a progress summary. Keep recent user inputs and
524
+ * the last, as-yet-unconsumed Tool batch. Clip before rendering large payloads, identify Tool
525
+ * calls for archive lookup, and never recursively copy earlier recovery records.
526
+ */
527
+ export const buildRolloverHandoff = (
528
+ source: ReadonlyArray<Prompt.Message>,
529
+ state: ContextCompactionState,
530
+ targetTokens: number | undefined,
531
+ through = source.length,
532
+ estimate: (message: Prompt.Message) => number = estimateMessageTokens,
533
+ ): string | undefined => {
534
+ const protectedTokens = estimatePromptTokens(
535
+ source.filter((_, index) => index >= through || isProtected(state, source, index)),
536
+ estimate,
537
+ );
538
+
539
+ const maxChars = Math.min(
540
+ 5_000,
541
+ Math.max(0, Math.floor(((targetTokens ?? 10_000) - protectedTokens - 200) * 2)),
542
+ );
543
+
544
+ if (maxChars < 160) return undefined;
545
+ const blocks: Array<string> = [];
546
+ let length = 0;
547
+ const start = state.replacement?.through ?? 0;
548
+
549
+ const lastTool = source.findLastIndex(
550
+ (message, index) => index < through && message.role === "tool",
551
+ );
552
+
553
+ const unconsumed =
554
+ lastTool >= start &&
555
+ !source.slice(lastTool + 1, through).some((message) => message.role === "assistant");
556
+
557
+ let lastAssistant = lastTool;
558
+
559
+ while (lastAssistant >= start && source[lastAssistant]?.role !== "assistant") lastAssistant -= 1;
560
+ for (let index = through - 1; index >= start; index -= 1) {
561
+ const message = source[index];
562
+
563
+ if (message === undefined || isProtected(state, source, index)) continue;
564
+ const isUnconsumedBatch = unconsumed && index >= lastAssistant && index <= lastTool;
565
+
566
+ if (message.role !== "user" && !isUnconsumedBatch) continue;
567
+ // A projected boundary from a previous Attempt is already a derived handoff.
568
+ if (
569
+ message.role === "user" &&
570
+ message.content.some(
571
+ (part) => part.type === "text" && part.text.startsWith(CONTEXT_ROLLOVER_PREFIX),
572
+ )
573
+ )
574
+ continue;
575
+ let block = summaryBlock(message);
576
+
577
+ if (isUnconsumedBatch && typeof message.content !== "string") {
578
+ const ids = message.content
579
+ .flatMap((part) =>
580
+ part.type === "tool-call" || part.type === "tool-result" ? [part.id.slice(0, 256)] : [],
581
+ )
582
+ .slice(0, 16);
583
+
584
+ block = `[Unconsumed batch; history search call IDs: ${ids.join(", ")}]\n${block}`;
585
+ }
586
+ const remaining = maxChars - length - 120;
587
+
588
+ if (remaining <= 0) break;
589
+ const selected = block.slice(0, Math.min(2_500, remaining));
590
+
591
+ blocks.unshift(selected);
592
+ length += selected.length + 2;
593
+ if (selected.length < block.length) break;
594
+ }
595
+
596
+ return `Recovery excerpts, not verified progress. Content may be omitted; use notes and history.\n\n${blocks.join("\n\n")}`.slice(
597
+ 0,
598
+ maxChars,
599
+ );
600
+ };
601
+
602
+ /**
603
+ * Render the covered span as plain text for the summarizer call, bounded
604
+ * twice: every message's rendered text is clipped to a fixed length (tool
605
+ * results additionally clip their JSON payloads), and the whole render obeys
606
+ * `SUMMARY_INPUT_BUDGET` with middle-out retention — oldest and newest
607
+ * blocks survive, the middle collapses into one deterministic elision
608
+ * marker. A previous summary is folded in first so nothing silently drops
609
+ * out of coverage across repeated compactions. An oversized previous summary
610
+ * returns undefined before rendering: callers must reject it, never truncate it.
611
+ */
612
+ export const renderForSummary = (
613
+ covered: ReadonlyArray<Prompt.Message>,
614
+ previousSummary: string | undefined,
615
+ ): string | undefined => {
616
+ if (previousSummary !== undefined && previousSummary.length > SUMMARY_MAX_LENGTH)
617
+ return undefined;
618
+ const joiner = "\n\n";
619
+
620
+ const previousBlock =
621
+ previousSummary === undefined ? undefined : `[Previous summary]\n${previousSummary}`;
622
+
623
+ const fixed =
624
+ (previousBlock === undefined ? 0 : previousBlock.length + joiner.length) +
625
+ SUMMARY_REQUEST_PREFIX.length +
626
+ SUMMARY_REQUEST_SUFFIX.length;
627
+
628
+ const budget = SUMMARY_INPUT_BUDGET - fixed - SUMMARY_ELISION_RESERVE;
629
+ const head: Array<string> = [];
630
+ const tail: Array<string> = [];
631
+ let length = 0;
632
+ let start = 0;
633
+ let end = covered.length - 1;
634
+ let boundaryBlock: string | undefined;
635
+
636
+ while (start <= end) {
637
+ const message = covered[start];
638
+ const block = message === undefined ? "" : summaryBlock(message);
639
+
640
+ if (block.length > 0 && length + block.length + joiner.length > Math.floor(budget / 2)) {
641
+ boundaryBlock = block;
642
+ break;
643
+ }
644
+ if (block.length > 0) {
645
+ head.push(block);
646
+ length += block.length + joiner.length;
647
+ }
648
+ start += 1;
649
+ }
650
+ while (end >= start) {
651
+ const message = covered[end];
652
+
653
+ const block =
654
+ end === start && boundaryBlock !== undefined
655
+ ? boundaryBlock
656
+ : message === undefined
657
+ ? ""
658
+ : summaryBlock(message);
659
+
660
+ if (block.length > 0 && length + block.length + joiner.length > budget) break;
661
+ if (block.length > 0) {
662
+ tail.push(block);
663
+ length += block.length + joiner.length;
664
+ }
665
+ end -= 1;
666
+ }
667
+ const omitted = end - start + 1;
668
+ const lines: Array<string> = [];
669
+
670
+ if (previousBlock !== undefined) {
671
+ lines.push(previousBlock);
672
+ }
673
+ lines.push(...head);
674
+ if (omitted > 0) lines.push(`[… ${omitted} messages omitted from summary input …]`);
675
+ lines.push(...tail.reverse());
676
+
677
+ return lines.join(joiner);
678
+ };