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,74 @@
1
+ import { A as ProducerId, Yt as ThreadExport, a as BatchId, mr as IntegrityReport, qa as SubmissionSnapshot, qt as ThreadCheckpoint } from "../Records-BAGkekt8.mjs";
2
+ import { Crypto, Effect } from "effect";
3
+ declare namespace ThreadInvariants_d_exports {
4
+ export { ThreadInvariantInput, verifyThreadInvariants };
5
+ }
6
+ /**
7
+ * The production thread invariant checker, shared by the durable coordinator, admin
8
+ * verification, and development harnesses. Keeping it independent of certification and
9
+ * conformance modules prevents ordinary runtime imports from loading test-only dependencies.
10
+ *
11
+ * `verifyThreadInvariants` — hoisted from the DC eviction harness's `assertConvergence`
12
+ * so the admin `verify` operation, the adapter certification tiers (WP2), and the chaos/soak
13
+ * properties (WP4) all assert one set of claims.
14
+ */
15
+ /**
16
+ * Input of one invariant verification, assembled entirely from port reads (or from a captured
17
+ * copy under test):
18
+ *
19
+ * - `export` — the Thread's canonical export (`ThreadStore.export`).
20
+ * - `submissions` — every known Submission row of the lane (ledger scan + lookups). Order is
21
+ * irrelevant; the checker sorts by `queueSequence`.
22
+ * - `batchProducers` — OPTIONAL per-batch producer identity directory. The digest chain hashes
23
+ * each batch's Schema-encoded `CanonicalBatch` — including its `producerId`, which the
24
+ * `ThreadStore` port deliberately does not export — so full chain recomputation needs
25
+ * this directory (capture it at append time, or from adapter-private storage). Without it the
26
+ * `digest-chain` and `checkpoint-binding` checks report `skipped` with the honest reason;
27
+ * adapter-level `verifyOnOpen` remains the storage-side full audit.
28
+ * - `checkpoint` — the stored checkpoint to bind against the recomputed chain, when one exists.
29
+ * - `checkpointsSupported` — whether the caller inspected a supporting adapter. Without this
30
+ * evidence or a supplied checkpoint, checkpoint verification is skipped.
31
+ * - `requireAllSettled` — convergence mode (certification Tier 2, chaos, soak): additionally
32
+ * require every known Submission to be settled.
33
+ */
34
+ interface ThreadInvariantInput {
35
+ readonly export: ThreadExport;
36
+ readonly submissions: ReadonlyArray<SubmissionSnapshot>;
37
+ readonly batchProducers?: ReadonlyMap<BatchId, ProducerId> | undefined;
38
+ readonly checkpoint?: ThreadCheckpoint | undefined;
39
+ /** Set only after checking the adapter's optional checkpoint capability. */
40
+ readonly checkpointsSupported?: boolean | undefined;
41
+ readonly requireAllSettled?: boolean | undefined;
42
+ }
43
+ /**
44
+ * The shared thread invariant checker (plan §1/§3): the DC harness `assertConvergence`
45
+ * claims, verbatim, as typed per-check results over a canonical export plus the lane's ledger
46
+ * rows — read-only, never a repair:
47
+ *
48
+ * 1. `schema-round-trip` — every envelope re-encodes and re-decodes through its canonical
49
+ * Schema (a corrupted copy fails typed instead of decoding incorrectly).
50
+ * 2. `record-identity` — no canonical record identity appears twice (DUR-007 dedupe held).
51
+ * 3. `sequence-contiguity` — gap-free sequences from 1 through the exported tail.
52
+ * 4. `digest-chain` — the tail digest recomputes from `EMPTY_TAIL_DIGEST` through every batch
53
+ * (requires the per-batch producer directory; skipped honestly otherwise).
54
+ * 5. `fifo-input-order` / `fifo-settlement-order` — canonical input and settlement records
55
+ * follow the admitted queue order (DUR-004). Aborted settlements of never-run work (no
56
+ * canonical `input:{sid}` record) are exempt from the settlement comparison: P7 §7(c)
57
+ * settles them immediately without waiting for the head, and DUR-004 bounds execution
58
+ * order, which never-run work has none of.
59
+ * 6. `terminal-uniqueness` — at most one canonical terminal record per Submission, exactly one
60
+ * for every settled ledger row (DUR-002).
61
+ * 7. `ledger-canonical-agreement` — a settled ledger row has a canonical settlement record and
62
+ * the outcomes agree; canonical history remains the authority (DUR-015).
63
+ * 8. `checkpoint-binding` — a stored checkpoint's digest matches the recomputed chain at its
64
+ * sequence (needs the chain; bounds are checked regardless).
65
+ * 9. `all-settled` — convergence mode only: every known Submission settled.
66
+ *
67
+ * Requires only `Crypto.Crypto` (digest recomputation); it performs no port access, so the
68
+ * admin operation, certification runners, and chaos properties feed it whatever copies they
69
+ * hold.
70
+ */
71
+ declare const verifyThreadInvariants: (input: ThreadInvariantInput) => Effect.Effect<IntegrityReport, never, Crypto.Crypto>;
72
+ //#endregion
73
+ export { ThreadInvariantInput, ThreadInvariants_d_exports as t, verifyThreadInvariants };
74
+ //# sourceMappingURL=ThreadInvariants.d.mts.map
@@ -0,0 +1,200 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { CanonicalBatch, CanonicalRecordEnvelope } from "./Records.mjs";
3
+ import { submissionInputRecordId, submissionSettlementRecordId } from "./SubmissionLedger.mjs";
4
+ import { IntegrityCheck, IntegrityReport } from "./Admin.mjs";
5
+ import { EMPTY_TAIL_DIGEST, digestCanonicalBatch } from "./Digest.mjs";
6
+ import { Effect, Schema } from "effect";
7
+ //#region src/durable/ThreadInvariants.ts
8
+ var ThreadInvariants_exports = /* @__PURE__ */ __exportAll({ verifyThreadInvariants: () => verifyThreadInvariants });
9
+ const encodeEnvelope = Schema.encodeEffect(CanonicalRecordEnvelope);
10
+ const decodeEnvelope = Schema.decodeUnknownEffect(CanonicalRecordEnvelope);
11
+ const check = (name, status, detail) => IntegrityCheck.make({
12
+ name,
13
+ status,
14
+ ...detail === void 0 ? {} : { detail: detail.slice(0, 4096) }
15
+ });
16
+ /** Group the export's records into their atomic append runs (batches append contiguously). */
17
+ const batchRunsOf = (records) => {
18
+ const runs = [];
19
+ for (const envelope of records) {
20
+ const current = runs.at(-1);
21
+ if (current !== void 0 && current.batchId === envelope.batchId) {
22
+ current.records.push(envelope.record);
23
+ runs[runs.length - 1] = {
24
+ ...current,
25
+ lastSequence: envelope.sequence
26
+ };
27
+ continue;
28
+ }
29
+ runs.push({
30
+ batchId: envelope.batchId,
31
+ records: [envelope.record],
32
+ lastSequence: envelope.sequence
33
+ });
34
+ }
35
+ return runs;
36
+ };
37
+ /**
38
+ * The shared thread invariant checker (plan §1/§3): the DC harness `assertConvergence`
39
+ * claims, verbatim, as typed per-check results over a canonical export plus the lane's ledger
40
+ * rows — read-only, never a repair:
41
+ *
42
+ * 1. `schema-round-trip` — every envelope re-encodes and re-decodes through its canonical
43
+ * Schema (a corrupted copy fails typed instead of decoding incorrectly).
44
+ * 2. `record-identity` — no canonical record identity appears twice (DUR-007 dedupe held).
45
+ * 3. `sequence-contiguity` — gap-free sequences from 1 through the exported tail.
46
+ * 4. `digest-chain` — the tail digest recomputes from `EMPTY_TAIL_DIGEST` through every batch
47
+ * (requires the per-batch producer directory; skipped honestly otherwise).
48
+ * 5. `fifo-input-order` / `fifo-settlement-order` — canonical input and settlement records
49
+ * follow the admitted queue order (DUR-004). Aborted settlements of never-run work (no
50
+ * canonical `input:{sid}` record) are exempt from the settlement comparison: P7 §7(c)
51
+ * settles them immediately without waiting for the head, and DUR-004 bounds execution
52
+ * order, which never-run work has none of.
53
+ * 6. `terminal-uniqueness` — at most one canonical terminal record per Submission, exactly one
54
+ * for every settled ledger row (DUR-002).
55
+ * 7. `ledger-canonical-agreement` — a settled ledger row has a canonical settlement record and
56
+ * the outcomes agree; canonical history remains the authority (DUR-015).
57
+ * 8. `checkpoint-binding` — a stored checkpoint's digest matches the recomputed chain at its
58
+ * sequence (needs the chain; bounds are checked regardless).
59
+ * 9. `all-settled` — convergence mode only: every known Submission settled.
60
+ *
61
+ * Requires only `Crypto.Crypto` (digest recomputation); it performs no port access, so the
62
+ * admin operation, certification runners, and chaos properties feed it whatever copies they
63
+ * hold.
64
+ */
65
+ const verifyThreadInvariants = Effect.fn("Thread.verifyThreadInvariants")(function* (input) {
66
+ const exported = input.export;
67
+ const records = exported.records;
68
+ const checks = [];
69
+ {
70
+ let failure;
71
+ for (const envelope of records) if ((yield* encodeEnvelope(envelope).pipe(Effect.flatMap(decodeEnvelope), Effect.exit))._tag === "Failure") {
72
+ failure = `record ${envelope.record.recordId} does not round-trip its Schema`;
73
+ break;
74
+ }
75
+ checks.push(failure === void 0 ? check("schema-round-trip", "passed") : check("schema-round-trip", "failed", failure));
76
+ }
77
+ {
78
+ const seen = /* @__PURE__ */ new Set();
79
+ const duplicates = /* @__PURE__ */ new Set();
80
+ for (const envelope of records) {
81
+ if (seen.has(envelope.record.recordId)) duplicates.add(envelope.record.recordId);
82
+ seen.add(envelope.record.recordId);
83
+ }
84
+ checks.push(duplicates.size === 0 ? check("record-identity", "passed") : check("record-identity", "failed", `duplicated canonical record identities: ${[...duplicates].join(", ")}`));
85
+ }
86
+ {
87
+ let contiguityFailure;
88
+ for (const [index, envelope] of records.entries()) if (envelope.sequence !== index + 1) {
89
+ contiguityFailure = `sequence ${envelope.sequence} at position ${index} (expected ${index + 1})`;
90
+ break;
91
+ }
92
+ if (contiguityFailure === void 0 && records.length !== exported.tailSequence) contiguityFailure = `exported tail sequence ${exported.tailSequence} disagrees with ${records.length} records`;
93
+ checks.push(contiguityFailure === void 0 ? check("sequence-contiguity", "passed") : check("sequence-contiguity", "failed", contiguityFailure));
94
+ }
95
+ const chainDigestAtSequence = /* @__PURE__ */ new Map();
96
+ if (input.batchProducers === void 0) checks.push(check("digest-chain", "skipped", "the ThreadStore port does not export per-batch producer identity; supply batchProducers (captured at append time) to recompute the chain — adapter-level verifyOnOpen performs the storage-side audit"));
97
+ else {
98
+ let chain = EMPTY_TAIL_DIGEST;
99
+ let chainFailure;
100
+ for (const run of batchRunsOf(records)) {
101
+ const producerId = input.batchProducers.get(run.batchId);
102
+ if (producerId === void 0) {
103
+ chainFailure = `no producer identity supplied for batch ${run.batchId}`;
104
+ break;
105
+ }
106
+ const [first, ...rest] = run.records;
107
+ if (first === void 0) {
108
+ chainFailure = `batch ${run.batchId} grouped zero records`;
109
+ break;
110
+ }
111
+ const digest = yield* digestCanonicalBatch(chain, CanonicalBatch.make({
112
+ batchId: run.batchId,
113
+ producerId,
114
+ records: [first, ...rest]
115
+ })).pipe(Effect.exit);
116
+ if (digest._tag === "Failure") {
117
+ chainFailure = `batch ${run.batchId} could not be re-digested`;
118
+ break;
119
+ }
120
+ chain = digest.value;
121
+ chainDigestAtSequence.set(run.lastSequence, chain);
122
+ }
123
+ if (chainFailure === void 0 && chain !== exported.tailDigest) chainFailure = `recomputed tail digest ${chain} disagrees with exported tail digest ${exported.tailDigest}`;
124
+ checks.push(chainFailure === void 0 ? check("digest-chain", "passed") : check("digest-chain", "failed", chainFailure));
125
+ }
126
+ const ordered = [...input.submissions].sort((left, right) => left.queueSequence - right.queueSequence);
127
+ const recordIds = records.map((envelope) => envelope.record.recordId);
128
+ {
129
+ const expectedInputs = ordered.map((row) => submissionInputRecordId(row.submissionId));
130
+ const expectedSet = new Set(expectedInputs);
131
+ const inputOrder = recordIds.filter((recordId) => expectedSet.has(recordId));
132
+ const presentInputs = new Set(inputOrder);
133
+ const expectedPresent = expectedInputs.filter((expected) => presentInputs.has(expected));
134
+ const matches = inputOrder.length === expectedPresent.length && inputOrder.every((recordId, index) => recordId === expectedPresent[index]);
135
+ checks.push(matches ? check("fifo-input-order", "passed") : check("fifo-input-order", "failed", `canonical input order [${inputOrder.join(", ")}] violates queue order`));
136
+ }
137
+ {
138
+ const recordIdSet = new Set(recordIds);
139
+ const abortedNeverRun = /* @__PURE__ */ new Set();
140
+ for (const envelope of records) {
141
+ const payload = envelope.record.payload;
142
+ if (payload._tag === "SubmissionSettled" && payload.outcome === "aborted" && !recordIdSet.has(submissionInputRecordId(payload.submissionId))) abortedNeverRun.add(payload.submissionId);
143
+ }
144
+ const expectedSettlements = ordered.filter((row) => !abortedNeverRun.has(row.submissionId)).map((row) => submissionSettlementRecordId(row.submissionId));
145
+ const expectedSet = new Set(expectedSettlements);
146
+ const settlementOrder = recordIds.filter((recordId) => expectedSet.has(recordId));
147
+ const presentSettlements = new Set(settlementOrder);
148
+ const expectedPresent = expectedSettlements.filter((expected) => presentSettlements.has(expected));
149
+ const matches = settlementOrder.length === expectedPresent.length && settlementOrder.every((recordId, index) => recordId === expectedPresent[index]);
150
+ checks.push(matches ? check("fifo-settlement-order", "passed") : check("fifo-settlement-order", "failed", `canonical settlement order [${settlementOrder.join(", ")}] violates queue order`));
151
+ }
152
+ {
153
+ const settlementsBySubmission = /* @__PURE__ */ new Map();
154
+ for (const envelope of records) {
155
+ if (envelope.record.payload._tag !== "SubmissionSettled") continue;
156
+ const submissionId = envelope.record.payload.submissionId;
157
+ const existing = settlementsBySubmission.get(submissionId) ?? [];
158
+ existing.push(envelope);
159
+ settlementsBySubmission.set(submissionId, existing);
160
+ }
161
+ let uniquenessFailure;
162
+ let agreementFailure;
163
+ for (const [submissionId, settlements] of settlementsBySubmission) if (settlements.length > 1) uniquenessFailure = `submission ${submissionId} has ${settlements.length} canonical terminal records`;
164
+ for (const row of ordered) {
165
+ const settlements = settlementsBySubmission.get(row.submissionId) ?? [];
166
+ const canonical = settlements[0]?.record.payload;
167
+ if (row.state === "settled") {
168
+ if (settlements.length !== 1) uniquenessFailure ??= `settled submission ${row.submissionId} has ${settlements.length} canonical terminal records (expected exactly 1)`;
169
+ if (canonical !== void 0 && canonical._tag === "SubmissionSettled" && row.settledOutcome !== void 0 && canonical.outcome !== row.settledOutcome) agreementFailure = `submission ${row.submissionId}: ledger outcome ${row.settledOutcome} disagrees with canonical outcome ${canonical.outcome}`;
170
+ if (settlements.length === 0) agreementFailure ??= `settled submission ${row.submissionId} has no canonical settlement record (DUR-015: history is the authority)`;
171
+ }
172
+ }
173
+ checks.push(uniquenessFailure === void 0 ? check("terminal-uniqueness", "passed") : check("terminal-uniqueness", "failed", uniquenessFailure));
174
+ checks.push(agreementFailure === void 0 ? check("ledger-canonical-agreement", "passed") : check("ledger-canonical-agreement", "failed", agreementFailure));
175
+ }
176
+ if (input.checkpoint === void 0 && input.checkpointsSupported !== true) checks.push(check("checkpoint-binding", "skipped", "checkpoint support was not supplied"));
177
+ else if (input.checkpoint === void 0) checks.push(check("checkpoint-binding", "passed", "no stored checkpoint"));
178
+ else if (input.checkpoint.throughSequence > exported.tailSequence) checks.push(check("checkpoint-binding", "failed", `checkpoint through-sequence ${input.checkpoint.throughSequence} is ahead of the tail ${exported.tailSequence}`));
179
+ else if (input.batchProducers === void 0) checks.push(check("checkpoint-binding", "skipped", "digest binding needs the recomputed chain; supply batchProducers (the adapter rejects mismatched checkpoints on save/load regardless)"));
180
+ else {
181
+ const bound = chainDigestAtSequence.get(input.checkpoint.throughSequence);
182
+ checks.push(bound === input.checkpoint.tailDigest ? check("checkpoint-binding", "passed") : check("checkpoint-binding", "failed", `checkpoint digest ${input.checkpoint.tailDigest} does not match the recomputed chain at sequence ${input.checkpoint.throughSequence}`));
183
+ }
184
+ if (input.requireAllSettled === true) {
185
+ const nonterminal = ordered.filter((row) => row.state !== "settled");
186
+ checks.push(nonterminal.length === 0 && ordered.length > 0 ? check("all-settled", "passed") : check("all-settled", "failed", ordered.length === 0 ? "no Submissions are known to the lane" : `nonterminal submissions: ${nonterminal.map((row) => `${row.submissionId}(${row.state})`).join(", ")}`));
187
+ }
188
+ return IntegrityReport.make({
189
+ threadId: exported.threadId,
190
+ tailSequence: exported.tailSequence,
191
+ recordCount: records.length,
192
+ submissionCount: ordered.length,
193
+ checks,
194
+ ok: checks.every((result) => result.status !== "failed")
195
+ });
196
+ });
197
+ //#endregion
198
+ export { ThreadInvariants_exports as t, verifyThreadInvariants };
199
+
200
+ //# sourceMappingURL=ThreadInvariants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadInvariants.mjs","names":[],"sources":["../../src/durable/ThreadInvariants.ts"],"sourcesContent":["import type { Crypto } from \"effect\";\nimport { Effect, Schema } from \"effect\";\n\nimport { IntegrityCheck, IntegrityReport, type IntegrityCheckName } from \"./Admin.ts\";\nimport { digestCanonicalBatch, EMPTY_TAIL_DIGEST } from \"./Digest.ts\";\nimport {\n CanonicalBatch,\n CanonicalRecordEnvelope,\n type BatchId,\n type ProducerId,\n type RecordEnvelope,\n} from \"./Records.ts\";\nimport {\n submissionInputRecordId,\n submissionSettlementRecordId,\n type SubmissionSnapshot,\n} from \"./SubmissionLedger.ts\";\nimport type { ThreadCheckpoint, ThreadExport } from \"./ThreadStore.ts\";\n\n/**\n * The production thread invariant checker, shared by the durable coordinator, admin\n * verification, and development harnesses. Keeping it independent of certification and\n * conformance modules prevents ordinary runtime imports from loading test-only dependencies.\n *\n * `verifyThreadInvariants` — hoisted from the DC eviction harness's `assertConvergence`\n * so the admin `verify` operation, the adapter certification tiers (WP2), and the chaos/soak\n * properties (WP4) all assert one set of claims.\n */\n\n/**\n * Input of one invariant verification, assembled entirely from port reads (or from a captured\n * copy under test):\n *\n * - `export` — the Thread's canonical export (`ThreadStore.export`).\n * - `submissions` — every known Submission row of the lane (ledger scan + lookups). Order is\n * irrelevant; the checker sorts by `queueSequence`.\n * - `batchProducers` — OPTIONAL per-batch producer identity directory. The digest chain hashes\n * each batch's Schema-encoded `CanonicalBatch` — including its `producerId`, which the\n * `ThreadStore` port deliberately does not export — so full chain recomputation needs\n * this directory (capture it at append time, or from adapter-private storage). Without it the\n * `digest-chain` and `checkpoint-binding` checks report `skipped` with the honest reason;\n * adapter-level `verifyOnOpen` remains the storage-side full audit.\n * - `checkpoint` — the stored checkpoint to bind against the recomputed chain, when one exists.\n * - `checkpointsSupported` — whether the caller inspected a supporting adapter. Without this\n * evidence or a supplied checkpoint, checkpoint verification is skipped.\n * - `requireAllSettled` — convergence mode (certification Tier 2, chaos, soak): additionally\n * require every known Submission to be settled.\n */\nexport interface ThreadInvariantInput {\n readonly export: ThreadExport;\n readonly submissions: ReadonlyArray<SubmissionSnapshot>;\n readonly batchProducers?: ReadonlyMap<BatchId, ProducerId> | undefined;\n readonly checkpoint?: ThreadCheckpoint | undefined;\n /** Set only after checking the adapter's optional checkpoint capability. */\n readonly checkpointsSupported?: boolean | undefined;\n readonly requireAllSettled?: boolean | undefined;\n}\n\nconst encodeEnvelope = Schema.encodeEffect(CanonicalRecordEnvelope);\nconst decodeEnvelope = Schema.decodeUnknownEffect(CanonicalRecordEnvelope);\n\nconst check = (\n name: IntegrityCheckName,\n status: \"passed\" | \"failed\" | \"skipped\",\n detail?: string,\n): IntegrityCheck =>\n IntegrityCheck.make({\n name,\n status,\n ...(detail === undefined ? {} : { detail: detail.slice(0, 4_096) }),\n });\n\ninterface BatchRun {\n readonly batchId: BatchId;\n readonly records: Array<RecordEnvelope>;\n readonly lastSequence: number;\n}\n\n/** Group the export's records into their atomic append runs (batches append contiguously). */\nconst batchRunsOf = (records: ReadonlyArray<CanonicalRecordEnvelope>): Array<BatchRun> => {\n const runs: Array<BatchRun> = [];\n\n for (const envelope of records) {\n const current = runs.at(-1);\n\n if (current !== undefined && current.batchId === envelope.batchId) {\n current.records.push(envelope.record);\n runs[runs.length - 1] = { ...current, lastSequence: envelope.sequence };\n continue;\n }\n runs.push({\n batchId: envelope.batchId,\n records: [envelope.record],\n lastSequence: envelope.sequence,\n });\n }\n\n return runs;\n};\n\n/**\n * The shared thread invariant checker (plan §1/§3): the DC harness `assertConvergence`\n * claims, verbatim, as typed per-check results over a canonical export plus the lane's ledger\n * rows — read-only, never a repair:\n *\n * 1. `schema-round-trip` — every envelope re-encodes and re-decodes through its canonical\n * Schema (a corrupted copy fails typed instead of decoding incorrectly).\n * 2. `record-identity` — no canonical record identity appears twice (DUR-007 dedupe held).\n * 3. `sequence-contiguity` — gap-free sequences from 1 through the exported tail.\n * 4. `digest-chain` — the tail digest recomputes from `EMPTY_TAIL_DIGEST` through every batch\n * (requires the per-batch producer directory; skipped honestly otherwise).\n * 5. `fifo-input-order` / `fifo-settlement-order` — canonical input and settlement records\n * follow the admitted queue order (DUR-004). Aborted settlements of never-run work (no\n * canonical `input:{sid}` record) are exempt from the settlement comparison: P7 §7(c)\n * settles them immediately without waiting for the head, and DUR-004 bounds execution\n * order, which never-run work has none of.\n * 6. `terminal-uniqueness` — at most one canonical terminal record per Submission, exactly one\n * for every settled ledger row (DUR-002).\n * 7. `ledger-canonical-agreement` — a settled ledger row has a canonical settlement record and\n * the outcomes agree; canonical history remains the authority (DUR-015).\n * 8. `checkpoint-binding` — a stored checkpoint's digest matches the recomputed chain at its\n * sequence (needs the chain; bounds are checked regardless).\n * 9. `all-settled` — convergence mode only: every known Submission settled.\n *\n * Requires only `Crypto.Crypto` (digest recomputation); it performs no port access, so the\n * admin operation, certification runners, and chaos properties feed it whatever copies they\n * hold.\n */\nexport const verifyThreadInvariants = Effect.fn(\"Thread.verifyThreadInvariants\")(function* (\n input: ThreadInvariantInput,\n): Effect.fn.Return<IntegrityReport, never, Crypto.Crypto> {\n const exported = input.export;\n const records = exported.records;\n const checks: Array<IntegrityCheck> = [];\n\n // 1. schema-round-trip\n {\n let failure: string | undefined;\n\n for (const envelope of records) {\n const roundTrip = yield* encodeEnvelope(envelope).pipe(\n Effect.flatMap(decodeEnvelope),\n Effect.exit,\n );\n\n if (roundTrip._tag === \"Failure\") {\n failure = `record ${envelope.record.recordId} does not round-trip its Schema`;\n break;\n }\n }\n checks.push(\n failure === undefined\n ? check(\"schema-round-trip\", \"passed\")\n : check(\"schema-round-trip\", \"failed\", failure),\n );\n }\n\n // 2. record-identity\n {\n const seen = new Set<string>();\n const duplicates = new Set<string>();\n\n for (const envelope of records) {\n if (seen.has(envelope.record.recordId)) duplicates.add(envelope.record.recordId);\n seen.add(envelope.record.recordId);\n }\n checks.push(\n duplicates.size === 0\n ? check(\"record-identity\", \"passed\")\n : check(\n \"record-identity\",\n \"failed\",\n `duplicated canonical record identities: ${[...duplicates].join(\", \")}`,\n ),\n );\n }\n\n // 3. sequence-contiguity\n {\n let contiguityFailure: string | undefined;\n\n for (const [index, envelope] of records.entries()) {\n if (envelope.sequence !== index + 1) {\n contiguityFailure = `sequence ${envelope.sequence} at position ${index} (expected ${index + 1})`;\n break;\n }\n }\n if (contiguityFailure === undefined && records.length !== exported.tailSequence) {\n contiguityFailure = `exported tail sequence ${exported.tailSequence} disagrees with ${records.length} records`;\n }\n checks.push(\n contiguityFailure === undefined\n ? check(\"sequence-contiguity\", \"passed\")\n : check(\"sequence-contiguity\", \"failed\", contiguityFailure),\n );\n }\n\n // 4. digest-chain (+ collect per-sequence chain digests for checkpoint binding)\n const chainDigestAtSequence = new Map<number, string>();\n\n if (input.batchProducers === undefined) {\n checks.push(\n check(\n \"digest-chain\",\n \"skipped\",\n \"the ThreadStore port does not export per-batch producer identity; supply batchProducers (captured at append time) to recompute the chain — adapter-level verifyOnOpen performs the storage-side audit\",\n ),\n );\n } else {\n let chain = EMPTY_TAIL_DIGEST;\n let chainFailure: string | undefined;\n\n for (const run of batchRunsOf(records)) {\n const producerId = input.batchProducers.get(run.batchId);\n\n if (producerId === undefined) {\n chainFailure = `no producer identity supplied for batch ${run.batchId}`;\n break;\n }\n const [first, ...rest] = run.records;\n\n if (first === undefined) {\n chainFailure = `batch ${run.batchId} grouped zero records`;\n break;\n }\n\n const digest = yield* digestCanonicalBatch(\n chain,\n CanonicalBatch.make({ batchId: run.batchId, producerId, records: [first, ...rest] }),\n ).pipe(Effect.exit);\n\n if (digest._tag === \"Failure\") {\n chainFailure = `batch ${run.batchId} could not be re-digested`;\n break;\n }\n chain = digest.value;\n chainDigestAtSequence.set(run.lastSequence, chain);\n }\n if (chainFailure === undefined && chain !== exported.tailDigest) {\n chainFailure = `recomputed tail digest ${chain} disagrees with exported tail digest ${exported.tailDigest}`;\n }\n checks.push(\n chainFailure === undefined\n ? check(\"digest-chain\", \"passed\")\n : check(\"digest-chain\", \"failed\", chainFailure),\n );\n }\n\n // Shared FIFO/terminal machinery\n const ordered = [...input.submissions].sort(\n (left, right) => left.queueSequence - right.queueSequence,\n );\n\n const recordIds = records.map((envelope) => envelope.record.recordId);\n\n // 5a. fifo-input-order\n {\n const expectedInputs = ordered.map((row) => submissionInputRecordId(row.submissionId));\n const expectedSet = new Set<string>(expectedInputs);\n const inputOrder = recordIds.filter((recordId) => expectedSet.has(recordId));\n const presentInputs = new Set(inputOrder);\n const expectedPresent = expectedInputs.filter((expected) => presentInputs.has(expected));\n\n const matches =\n inputOrder.length === expectedPresent.length &&\n inputOrder.every((recordId, index) => recordId === expectedPresent[index]);\n\n checks.push(\n matches\n ? check(\"fifo-input-order\", \"passed\")\n : check(\n \"fifo-input-order\",\n \"failed\",\n `canonical input order [${inputOrder.join(\", \")}] violates queue order`,\n ),\n );\n }\n\n // 5b. fifo-settlement-order — P7 §7(c) exemption: an ABORTED settlement for never-run work\n // (no canonical `input:{sid}` record) settles immediately by design, without waiting to\n // head the lane, so it is excluded from the FIFO comparison. DUR-004 bounds EXECUTION\n // order; the exempted rows provably never executed.\n {\n const recordIdSet = new Set<string>(recordIds);\n const abortedNeverRun = new Set<string>();\n\n for (const envelope of records) {\n const payload = envelope.record.payload;\n\n if (\n payload._tag === \"SubmissionSettled\" &&\n payload.outcome === \"aborted\" &&\n !recordIdSet.has(submissionInputRecordId(payload.submissionId))\n ) {\n abortedNeverRun.add(payload.submissionId);\n }\n }\n\n const expectedSettlements = ordered\n .filter((row) => !abortedNeverRun.has(row.submissionId))\n .map((row) => submissionSettlementRecordId(row.submissionId));\n\n const expectedSet = new Set<string>(expectedSettlements);\n const settlementOrder = recordIds.filter((recordId) => expectedSet.has(recordId));\n\n const presentSettlements = new Set(settlementOrder);\n\n const expectedPresent = expectedSettlements.filter((expected) =>\n presentSettlements.has(expected),\n );\n\n const matches =\n settlementOrder.length === expectedPresent.length &&\n settlementOrder.every((recordId, index) => recordId === expectedPresent[index]);\n\n checks.push(\n matches\n ? check(\"fifo-settlement-order\", \"passed\")\n : check(\n \"fifo-settlement-order\",\n \"failed\",\n `canonical settlement order [${settlementOrder.join(\", \")}] violates queue order`,\n ),\n );\n }\n\n // 6 + 7. terminal-uniqueness and ledger-canonical-agreement\n {\n const settlementsBySubmission = new Map<string, Array<CanonicalRecordEnvelope>>();\n\n for (const envelope of records) {\n if (envelope.record.payload._tag !== \"SubmissionSettled\") continue;\n const submissionId = envelope.record.payload.submissionId;\n const existing = settlementsBySubmission.get(submissionId) ?? [];\n\n existing.push(envelope);\n settlementsBySubmission.set(submissionId, existing);\n }\n let uniquenessFailure: string | undefined;\n let agreementFailure: string | undefined;\n\n for (const [submissionId, settlements] of settlementsBySubmission) {\n if (settlements.length > 1) {\n uniquenessFailure = `submission ${submissionId} has ${settlements.length} canonical terminal records`;\n }\n }\n for (const row of ordered) {\n const settlements = settlementsBySubmission.get(row.submissionId) ?? [];\n const canonical = settlements[0]?.record.payload;\n\n if (row.state === \"settled\") {\n if (settlements.length !== 1) {\n uniquenessFailure ??= `settled submission ${row.submissionId} has ${settlements.length} canonical terminal records (expected exactly 1)`;\n }\n if (\n canonical !== undefined &&\n canonical._tag === \"SubmissionSettled\" &&\n row.settledOutcome !== undefined &&\n canonical.outcome !== row.settledOutcome\n ) {\n agreementFailure = `submission ${row.submissionId}: ledger outcome ${row.settledOutcome} disagrees with canonical outcome ${canonical.outcome}`;\n }\n if (settlements.length === 0) {\n agreementFailure ??= `settled submission ${row.submissionId} has no canonical settlement record (DUR-015: history is the authority)`;\n }\n }\n }\n checks.push(\n uniquenessFailure === undefined\n ? check(\"terminal-uniqueness\", \"passed\")\n : check(\"terminal-uniqueness\", \"failed\", uniquenessFailure),\n );\n checks.push(\n agreementFailure === undefined\n ? check(\"ledger-canonical-agreement\", \"passed\")\n : check(\"ledger-canonical-agreement\", \"failed\", agreementFailure),\n );\n }\n\n // 8. checkpoint-binding\n if (input.checkpoint === undefined && input.checkpointsSupported !== true) {\n checks.push(check(\"checkpoint-binding\", \"skipped\", \"checkpoint support was not supplied\"));\n } else if (input.checkpoint === undefined) {\n checks.push(check(\"checkpoint-binding\", \"passed\", \"no stored checkpoint\"));\n } else if (input.checkpoint.throughSequence > exported.tailSequence) {\n checks.push(\n check(\n \"checkpoint-binding\",\n \"failed\",\n `checkpoint through-sequence ${input.checkpoint.throughSequence} is ahead of the tail ${exported.tailSequence}`,\n ),\n );\n } else if (input.batchProducers === undefined) {\n checks.push(\n check(\n \"checkpoint-binding\",\n \"skipped\",\n \"digest binding needs the recomputed chain; supply batchProducers (the adapter rejects mismatched checkpoints on save/load regardless)\",\n ),\n );\n } else {\n const bound = chainDigestAtSequence.get(input.checkpoint.throughSequence);\n\n checks.push(\n bound === input.checkpoint.tailDigest\n ? check(\"checkpoint-binding\", \"passed\")\n : check(\n \"checkpoint-binding\",\n \"failed\",\n `checkpoint digest ${input.checkpoint.tailDigest} does not match the recomputed chain at sequence ${input.checkpoint.throughSequence}`,\n ),\n );\n }\n\n // 9. all-settled (convergence mode)\n if (input.requireAllSettled === true) {\n const nonterminal = ordered.filter((row) => row.state !== \"settled\");\n\n checks.push(\n nonterminal.length === 0 && ordered.length > 0\n ? check(\"all-settled\", \"passed\")\n : check(\n \"all-settled\",\n \"failed\",\n ordered.length === 0\n ? \"no Submissions are known to the lane\"\n : `nonterminal submissions: ${nonterminal\n .map((row) => `${row.submissionId}(${row.state})`)\n .join(\", \")}`,\n ),\n );\n }\n\n return IntegrityReport.make({\n threadId: exported.threadId,\n tailSequence: exported.tailSequence,\n recordCount: records.length,\n submissionCount: ordered.length,\n checks,\n ok: checks.every((result) => result.status !== \"failed\"),\n });\n});\n"],"mappings":";;;;;;;;AA0DA,MAAM,iBAAiB,OAAO,aAAa,uBAAuB;AAClE,MAAM,iBAAiB,OAAO,oBAAoB,uBAAuB;AAEzE,MAAM,SACJ,MACA,QACA,WAEA,eAAe,KAAK;CAClB;CACA;CACA,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,MAAM,GAAG,IAAK,EAAE;AACnE,CAAC;;AASH,MAAM,eAAe,YAAqE;CACxF,MAAM,OAAwB,CAAC;CAE/B,KAAK,MAAM,YAAY,SAAS;EAC9B,MAAM,UAAU,KAAK,GAAG,EAAE;EAE1B,IAAI,YAAY,KAAA,KAAa,QAAQ,YAAY,SAAS,SAAS;GACjE,QAAQ,QAAQ,KAAK,SAAS,MAAM;GACpC,KAAK,KAAK,SAAS,KAAK;IAAE,GAAG;IAAS,cAAc,SAAS;GAAS;GACtE;EACF;EACA,KAAK,KAAK;GACR,SAAS,SAAS;GAClB,SAAS,CAAC,SAAS,MAAM;GACzB,cAAc,SAAS;EACzB,CAAC;CACH;CAEA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAa,yBAAyB,OAAO,GAAG,+BAA+B,CAAC,CAAC,WAC/E,OACyD;CACzD,MAAM,WAAW,MAAM;CACvB,MAAM,UAAU,SAAS;CACzB,MAAM,SAAgC,CAAC;CAGvC;EACE,IAAI;EAEJ,KAAK,MAAM,YAAY,SAMrB,KAAI,OALqB,eAAe,QAAQ,CAAC,CAAC,KAChD,OAAO,QAAQ,cAAc,GAC7B,OAAO,IACT,EAAA,CAEc,SAAS,WAAW;GAChC,UAAU,UAAU,SAAS,OAAO,SAAS;GAC7C;EACF;EAEF,OAAO,KACL,YAAY,KAAA,IACR,MAAM,qBAAqB,QAAQ,IACnC,MAAM,qBAAqB,UAAU,OAAO,CAClD;CACF;CAGA;EACE,MAAM,uBAAO,IAAI,IAAY;EAC7B,MAAM,6BAAa,IAAI,IAAY;EAEnC,KAAK,MAAM,YAAY,SAAS;GAC9B,IAAI,KAAK,IAAI,SAAS,OAAO,QAAQ,GAAG,WAAW,IAAI,SAAS,OAAO,QAAQ;GAC/E,KAAK,IAAI,SAAS,OAAO,QAAQ;EACnC;EACA,OAAO,KACL,WAAW,SAAS,IAChB,MAAM,mBAAmB,QAAQ,IACjC,MACE,mBACA,UACA,2CAA2C,CAAC,GAAG,UAAU,CAAC,CAAC,KAAK,IAAI,GACtE,CACN;CACF;CAGA;EACE,IAAI;EAEJ,KAAK,MAAM,CAAC,OAAO,aAAa,QAAQ,QAAQ,GAC9C,IAAI,SAAS,aAAa,QAAQ,GAAG;GACnC,oBAAoB,YAAY,SAAS,SAAS,eAAe,MAAM,aAAa,QAAQ,EAAE;GAC9F;EACF;EAEF,IAAI,sBAAsB,KAAA,KAAa,QAAQ,WAAW,SAAS,cACjE,oBAAoB,0BAA0B,SAAS,aAAa,kBAAkB,QAAQ,OAAO;EAEvG,OAAO,KACL,sBAAsB,KAAA,IAClB,MAAM,uBAAuB,QAAQ,IACrC,MAAM,uBAAuB,UAAU,iBAAiB,CAC9D;CACF;CAGA,MAAM,wCAAwB,IAAI,IAAoB;CAEtD,IAAI,MAAM,mBAAmB,KAAA,GAC3B,OAAO,KACL,MACE,gBACA,WACA,uMACF,CACF;MACK;EACL,IAAI,QAAQ;EACZ,IAAI;EAEJ,KAAK,MAAM,OAAO,YAAY,OAAO,GAAG;GACtC,MAAM,aAAa,MAAM,eAAe,IAAI,IAAI,OAAO;GAEvD,IAAI,eAAe,KAAA,GAAW;IAC5B,eAAe,2CAA2C,IAAI;IAC9D;GACF;GACA,MAAM,CAAC,OAAO,GAAG,QAAQ,IAAI;GAE7B,IAAI,UAAU,KAAA,GAAW;IACvB,eAAe,SAAS,IAAI,QAAQ;IACpC;GACF;GAEA,MAAM,SAAS,OAAO,qBACpB,OACA,eAAe,KAAK;IAAE,SAAS,IAAI;IAAS;IAAY,SAAS,CAAC,OAAO,GAAG,IAAI;GAAE,CAAC,CACrF,CAAC,CAAC,KAAK,OAAO,IAAI;GAElB,IAAI,OAAO,SAAS,WAAW;IAC7B,eAAe,SAAS,IAAI,QAAQ;IACpC;GACF;GACA,QAAQ,OAAO;GACf,sBAAsB,IAAI,IAAI,cAAc,KAAK;EACnD;EACA,IAAI,iBAAiB,KAAA,KAAa,UAAU,SAAS,YACnD,eAAe,0BAA0B,MAAM,uCAAuC,SAAS;EAEjG,OAAO,KACL,iBAAiB,KAAA,IACb,MAAM,gBAAgB,QAAQ,IAC9B,MAAM,gBAAgB,UAAU,YAAY,CAClD;CACF;CAGA,MAAM,UAAU,CAAC,GAAG,MAAM,WAAW,CAAC,CAAC,MACpC,MAAM,UAAU,KAAK,gBAAgB,MAAM,aAC9C;CAEA,MAAM,YAAY,QAAQ,KAAK,aAAa,SAAS,OAAO,QAAQ;CAGpE;EACE,MAAM,iBAAiB,QAAQ,KAAK,QAAQ,wBAAwB,IAAI,YAAY,CAAC;EACrF,MAAM,cAAc,IAAI,IAAY,cAAc;EAClD,MAAM,aAAa,UAAU,QAAQ,aAAa,YAAY,IAAI,QAAQ,CAAC;EAC3E,MAAM,gBAAgB,IAAI,IAAI,UAAU;EACxC,MAAM,kBAAkB,eAAe,QAAQ,aAAa,cAAc,IAAI,QAAQ,CAAC;EAEvF,MAAM,UACJ,WAAW,WAAW,gBAAgB,UACtC,WAAW,OAAO,UAAU,UAAU,aAAa,gBAAgB,MAAM;EAE3E,OAAO,KACL,UACI,MAAM,oBAAoB,QAAQ,IAClC,MACE,oBACA,UACA,0BAA0B,WAAW,KAAK,IAAI,EAAE,uBAClD,CACN;CACF;CAMA;EACE,MAAM,cAAc,IAAI,IAAY,SAAS;EAC7C,MAAM,kCAAkB,IAAI,IAAY;EAExC,KAAK,MAAM,YAAY,SAAS;GAC9B,MAAM,UAAU,SAAS,OAAO;GAEhC,IACE,QAAQ,SAAS,uBACjB,QAAQ,YAAY,aACpB,CAAC,YAAY,IAAI,wBAAwB,QAAQ,YAAY,CAAC,GAE9D,gBAAgB,IAAI,QAAQ,YAAY;EAE5C;EAEA,MAAM,sBAAsB,QACzB,QAAQ,QAAQ,CAAC,gBAAgB,IAAI,IAAI,YAAY,CAAC,CAAC,CACvD,KAAK,QAAQ,6BAA6B,IAAI,YAAY,CAAC;EAE9D,MAAM,cAAc,IAAI,IAAY,mBAAmB;EACvD,MAAM,kBAAkB,UAAU,QAAQ,aAAa,YAAY,IAAI,QAAQ,CAAC;EAEhF,MAAM,qBAAqB,IAAI,IAAI,eAAe;EAElD,MAAM,kBAAkB,oBAAoB,QAAQ,aAClD,mBAAmB,IAAI,QAAQ,CACjC;EAEA,MAAM,UACJ,gBAAgB,WAAW,gBAAgB,UAC3C,gBAAgB,OAAO,UAAU,UAAU,aAAa,gBAAgB,MAAM;EAEhF,OAAO,KACL,UACI,MAAM,yBAAyB,QAAQ,IACvC,MACE,yBACA,UACA,+BAA+B,gBAAgB,KAAK,IAAI,EAAE,uBAC5D,CACN;CACF;CAGA;EACE,MAAM,0CAA0B,IAAI,IAA4C;EAEhF,KAAK,MAAM,YAAY,SAAS;GAC9B,IAAI,SAAS,OAAO,QAAQ,SAAS,qBAAqB;GAC1D,MAAM,eAAe,SAAS,OAAO,QAAQ;GAC7C,MAAM,WAAW,wBAAwB,IAAI,YAAY,KAAK,CAAC;GAE/D,SAAS,KAAK,QAAQ;GACtB,wBAAwB,IAAI,cAAc,QAAQ;EACpD;EACA,IAAI;EACJ,IAAI;EAEJ,KAAK,MAAM,CAAC,cAAc,gBAAgB,yBACxC,IAAI,YAAY,SAAS,GACvB,oBAAoB,cAAc,aAAa,OAAO,YAAY,OAAO;EAG7E,KAAK,MAAM,OAAO,SAAS;GACzB,MAAM,cAAc,wBAAwB,IAAI,IAAI,YAAY,KAAK,CAAC;GACtE,MAAM,YAAY,YAAY,EAAE,EAAE,OAAO;GAEzC,IAAI,IAAI,UAAU,WAAW;IAC3B,IAAI,YAAY,WAAW,GACzB,sBAAsB,sBAAsB,IAAI,aAAa,OAAO,YAAY,OAAO;IAEzF,IACE,cAAc,KAAA,KACd,UAAU,SAAS,uBACnB,IAAI,mBAAmB,KAAA,KACvB,UAAU,YAAY,IAAI,gBAE1B,mBAAmB,cAAc,IAAI,aAAa,mBAAmB,IAAI,eAAe,oCAAoC,UAAU;IAExI,IAAI,YAAY,WAAW,GACzB,qBAAqB,sBAAsB,IAAI,aAAa;GAEhE;EACF;EACA,OAAO,KACL,sBAAsB,KAAA,IAClB,MAAM,uBAAuB,QAAQ,IACrC,MAAM,uBAAuB,UAAU,iBAAiB,CAC9D;EACA,OAAO,KACL,qBAAqB,KAAA,IACjB,MAAM,8BAA8B,QAAQ,IAC5C,MAAM,8BAA8B,UAAU,gBAAgB,CACpE;CACF;CAGA,IAAI,MAAM,eAAe,KAAA,KAAa,MAAM,yBAAyB,MACnE,OAAO,KAAK,MAAM,sBAAsB,WAAW,qCAAqC,CAAC;MACpF,IAAI,MAAM,eAAe,KAAA,GAC9B,OAAO,KAAK,MAAM,sBAAsB,UAAU,sBAAsB,CAAC;MACpE,IAAI,MAAM,WAAW,kBAAkB,SAAS,cACrD,OAAO,KACL,MACE,sBACA,UACA,+BAA+B,MAAM,WAAW,gBAAgB,wBAAwB,SAAS,cACnG,CACF;MACK,IAAI,MAAM,mBAAmB,KAAA,GAClC,OAAO,KACL,MACE,sBACA,WACA,uIACF,CACF;MACK;EACL,MAAM,QAAQ,sBAAsB,IAAI,MAAM,WAAW,eAAe;EAExE,OAAO,KACL,UAAU,MAAM,WAAW,aACvB,MAAM,sBAAsB,QAAQ,IACpC,MACE,sBACA,UACA,qBAAqB,MAAM,WAAW,WAAW,mDAAmD,MAAM,WAAW,iBACvH,CACN;CACF;CAGA,IAAI,MAAM,sBAAsB,MAAM;EACpC,MAAM,cAAc,QAAQ,QAAQ,QAAQ,IAAI,UAAU,SAAS;EAEnE,OAAO,KACL,YAAY,WAAW,KAAK,QAAQ,SAAS,IACzC,MAAM,eAAe,QAAQ,IAC7B,MACE,eACA,UACA,QAAQ,WAAW,IACf,yCACA,4BAA4B,YACzB,KAAK,QAAQ,GAAG,IAAI,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC,CACjD,KAAK,IAAI,GAClB,CACN;CACF;CAEA,OAAO,gBAAgB,KAAK;EAC1B,UAAU,SAAS;EACnB,cAAc,SAAS;EACvB,aAAa,QAAQ;EACrB,iBAAiB,QAAQ;EACzB;EACA,IAAI,OAAO,OAAO,WAAW,OAAO,WAAW,QAAQ;CACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { u as ThreadId } from "../Identifiers-CN2s30fF.mjs";
2
+ import { G as SubmissionSettled, H as SubagentLineageRecorded, K as SubmissionSettledRecord, U as SubagentRequested, V as SubagentJoined, W as SubagentStarted, X as ToolApprovalRequested, Y as ToolApprovalDecided, _ as Digest, l as CanonicalRecordEnvelope, t as AbortRequested, tt as ToolCallUnknown } from "../Records-BAGkekt8.mjs";
3
+ import { Schema } from "effect";
4
+ declare namespace ThreadProjection_d_exports {
5
+ export { ApprovalRecord, OpenToolCallState, SubagentInvocationState, ThreadProjection, initialThreadProjection, reduceThreadRecord, replayThread, replayThreadFromCheckpoint };
6
+ }
7
+ declare const OpenToolCallState_base: Schema.Class<OpenToolCallState, Schema.Struct<{
8
+ readonly toolCallId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ToolCallId">;
9
+ readonly toolName: Schema.NonEmptyString;
10
+ readonly turn: Schema.Int;
11
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
12
+ }>, {}>;
13
+ /** One prepared ordinary Tool Call still awaiting a canonical settled/resolved outcome. */
14
+ declare class OpenToolCallState extends OpenToolCallState_base {}
15
+ /** The canonical approval trail: requests and decisions in canonical order. */
16
+ declare const ApprovalRecord: Schema.Union<readonly [typeof ToolApprovalRequested, typeof ToolApprovalDecided]>;
17
+ type ApprovalRecord = typeof ApprovalRecord.Type;
18
+ declare const SubagentInvocationState_base: Schema.Class<SubagentInvocationState, Schema.Struct<{
19
+ readonly runId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">;
20
+ readonly toolCallId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ToolCallId">;
21
+ readonly requested: Schema.optionalKey<typeof SubagentRequested>;
22
+ readonly started: Schema.optionalKey<typeof SubagentStarted>;
23
+ readonly joined: Schema.optionalKey<typeof SubagentJoined>;
24
+ }>, {}>;
25
+ /**
26
+ * Parent-side view of one Subagent Invocation, keyed by the parent Run and Tool Call: the canonical
27
+ * `SubagentRequested`/`SubagentStarted`/`SubagentJoined` payloads as they become canonical
28
+ * in history. A disposable derived view — the canonical records and the child's
29
+ * own Settlement remain the recovery truth (DUR-015).
30
+ */
31
+ declare class SubagentInvocationState extends SubagentInvocationState_base {}
32
+ declare const ThreadProjection_base: Schema.Class<ThreadProjection, Schema.Struct<{
33
+ readonly schemaVersion: Schema.Literal<2>;
34
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
35
+ readonly throughSequence: Schema.brand<Schema.Natural, "@effect-agent/thread/CanonicalSequence">;
36
+ readonly tailDigest: Schema.brand<Schema.String, "@effect-agent/thread/Digest">;
37
+ readonly inputs: Schema.$Array<Schema.declare<Schema.Json, Schema.Json>>;
38
+ readonly modelOutputs: Schema.$Array<Schema.declare<Schema.Json, Schema.Json>>;
39
+ readonly completedRuns: Schema.$Array<Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">>;
40
+ readonly failedRuns: Schema.$Array<Schema.brand<Schema.NonEmptyString, "@effect-agent/core/RunId">>;
41
+ readonly settlements: Schema.$Array<Schema.refine<SubmissionSettledRecord, typeof SubmissionSettled>>;
42
+ readonly abortRequests: Schema.$Array<typeof AbortRequested>;
43
+ readonly openToolCalls: Schema.$Array<typeof OpenToolCallState>;
44
+ readonly unknownToolCalls: Schema.$Array<typeof ToolCallUnknown>;
45
+ readonly approvals: Schema.$Array<Schema.Union<readonly [typeof ToolApprovalRequested, typeof ToolApprovalDecided]>>;
46
+ readonly subagentInvocations: Schema.$Array<typeof SubagentInvocationState>;
47
+ readonly parentLink: Schema.optionalKey<typeof SubagentLineageRecorded>;
48
+ }>, {}>;
49
+ /**
50
+ * Rebuildable canonical projection. It contains only canonical values and can be discarded and
51
+ * reconstructed from the record stream at any time.
52
+ *
53
+ * Phase 4 added `settlements` and `abortRequests`; Phase 5 added `openToolCalls` (the
54
+ * prepared-minus-settled/resolved fold), `unknownToolCalls`, and `approvals`; S2 adds
55
+ * `subagentInvocations` (the parent-side requested/started/joined fold) and `parentLink` (the
56
+ * child-side immutable lineage). A checkpoint whose persisted state lacks these fields fails to
57
+ * decode against this schema; callers must reject the checkpoint and rebuild the projection from
58
+ * canonical records (documented disposable-checkpoint behavior, STORE-007/STORE-008).
59
+ * Version 2 scopes Tool identities by Run. Earlier projections must rebuild, including empty
60
+ * invocation views that may have already lost an earlier Run's unresolved Tool evidence.
61
+ * `ModelResponseRecorded` advances `throughSequence` without dedicated projection state: Prompt
62
+ * reconstruction reads canonical records directly.
63
+ */
64
+ declare class ThreadProjection extends ThreadProjection_base {}
65
+ declare const initialThreadProjection: (threadId: ThreadId) => ThreadProjection;
66
+ /** Pure one-record Thread transition. */
67
+ declare const reduceThreadRecord: (projection: ThreadProjection, envelope: CanonicalRecordEnvelope, tailDigest?: Digest) => ThreadProjection;
68
+ /** Pure full replay from the canonical beginning. */
69
+ declare const replayThread: (threadId: ThreadId, records: ReadonlyArray<CanonicalRecordEnvelope>, tailDigest?: Digest) => ThreadProjection;
70
+ /**
71
+ * Pure checkpoint replay. A validated checkpoint projection and its canonical tail produce the
72
+ * same reducer path as full replay for every later record.
73
+ * Decode persisted state with `ThreadProjection` first; an incompatible state requires full replay.
74
+ */
75
+ declare const replayThreadFromCheckpoint: (checkpoint: ThreadProjection, records: ReadonlyArray<CanonicalRecordEnvelope>, tailDigest?: Digest) => ThreadProjection;
76
+ //#endregion
77
+ export { ApprovalRecord, OpenToolCallState, SubagentInvocationState, ThreadProjection, initialThreadProjection, reduceThreadRecord, replayThread, replayThreadFromCheckpoint, ThreadProjection_d_exports as t };
78
+ //# sourceMappingURL=ThreadProjection.d.mts.map
@@ -0,0 +1,158 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { RunId, ThreadId, ToolCallId } from "../core/Identifiers.mjs";
3
+ import { AbortRequested, CanonicalSequence, Digest, PersistedJson, SubagentJoined, SubagentLineageRecorded, SubagentRequested, SubagentStarted, SubmissionSettledRecord, ToolApprovalDecided, ToolApprovalRequested, ToolCallPrepared, ToolCallUnknown } from "./Records.mjs";
4
+ import { EMPTY_TAIL_DIGEST } from "./Digest.mjs";
5
+ import { Schema } from "effect";
6
+ //#region src/durable/ThreadProjection.ts
7
+ var ThreadProjection_exports = /* @__PURE__ */ __exportAll({
8
+ ApprovalRecord: () => ApprovalRecord,
9
+ OpenToolCallState: () => OpenToolCallState,
10
+ SubagentInvocationState: () => SubagentInvocationState,
11
+ ThreadProjection: () => ThreadProjection,
12
+ initialThreadProjection: () => initialThreadProjection,
13
+ reduceThreadRecord: () => reduceThreadRecord,
14
+ replayThread: () => replayThread,
15
+ replayThreadFromCheckpoint: () => replayThreadFromCheckpoint
16
+ });
17
+ /** One prepared ordinary Tool Call still awaiting a canonical settled/resolved outcome. */
18
+ var OpenToolCallState = class extends Schema.Class("@effect-agent/thread/OpenToolCallState")({
19
+ toolCallId: ToolCallId,
20
+ toolName: ToolCallPrepared.fields.toolName,
21
+ turn: ToolCallPrepared.fields.turn,
22
+ runId: RunId
23
+ }) {};
24
+ /** The canonical approval trail: requests and decisions in canonical order. */
25
+ const ApprovalRecord = Schema.Union([ToolApprovalRequested, ToolApprovalDecided]);
26
+ /**
27
+ * Parent-side view of one Subagent Invocation, keyed by the parent Run and Tool Call: the canonical
28
+ * `SubagentRequested`/`SubagentStarted`/`SubagentJoined` payloads as they become canonical
29
+ * in history. A disposable derived view — the canonical records and the child's
30
+ * own Settlement remain the recovery truth (DUR-015).
31
+ */
32
+ var SubagentInvocationState = class extends Schema.Class("@effect-agent/thread/SubagentInvocationState")({
33
+ runId: RunId,
34
+ toolCallId: ToolCallId,
35
+ requested: Schema.optionalKey(SubagentRequested),
36
+ started: Schema.optionalKey(SubagentStarted),
37
+ joined: Schema.optionalKey(SubagentJoined)
38
+ }) {};
39
+ /**
40
+ * Rebuildable canonical projection. It contains only canonical values and can be discarded and
41
+ * reconstructed from the record stream at any time.
42
+ *
43
+ * Phase 4 added `settlements` and `abortRequests`; Phase 5 added `openToolCalls` (the
44
+ * prepared-minus-settled/resolved fold), `unknownToolCalls`, and `approvals`; S2 adds
45
+ * `subagentInvocations` (the parent-side requested/started/joined fold) and `parentLink` (the
46
+ * child-side immutable lineage). A checkpoint whose persisted state lacks these fields fails to
47
+ * decode against this schema; callers must reject the checkpoint and rebuild the projection from
48
+ * canonical records (documented disposable-checkpoint behavior, STORE-007/STORE-008).
49
+ * Version 2 scopes Tool identities by Run. Earlier projections must rebuild, including empty
50
+ * invocation views that may have already lost an earlier Run's unresolved Tool evidence.
51
+ * `ModelResponseRecorded` advances `throughSequence` without dedicated projection state: Prompt
52
+ * reconstruction reads canonical records directly.
53
+ */
54
+ var ThreadProjection = class extends Schema.Class("@effect-agent/thread/ThreadProjection")({
55
+ schemaVersion: Schema.Literal(2),
56
+ threadId: ThreadId,
57
+ throughSequence: CanonicalSequence,
58
+ tailDigest: Digest,
59
+ inputs: Schema.Array(PersistedJson),
60
+ modelOutputs: Schema.Array(PersistedJson),
61
+ completedRuns: Schema.Array(RunId),
62
+ failedRuns: Schema.Array(RunId),
63
+ settlements: Schema.Array(SubmissionSettledRecord),
64
+ abortRequests: Schema.Array(AbortRequested),
65
+ openToolCalls: Schema.Array(OpenToolCallState),
66
+ unknownToolCalls: Schema.Array(ToolCallUnknown),
67
+ approvals: Schema.Array(ApprovalRecord),
68
+ subagentInvocations: Schema.Array(SubagentInvocationState),
69
+ parentLink: Schema.optionalKey(SubagentLineageRecorded)
70
+ }) {};
71
+ const initialThreadProjection = (threadId) => ThreadProjection.make({
72
+ schemaVersion: 2,
73
+ threadId,
74
+ throughSequence: Schema.decodeSync(CanonicalSequence)(0),
75
+ tailDigest: EMPTY_TAIL_DIGEST,
76
+ inputs: [],
77
+ modelOutputs: [],
78
+ completedRuns: [],
79
+ failedRuns: [],
80
+ settlements: [],
81
+ abortRequests: [],
82
+ openToolCalls: [],
83
+ unknownToolCalls: [],
84
+ approvals: [],
85
+ subagentInvocations: []
86
+ });
87
+ /**
88
+ * Idempotent per-Run-and-Tool-Call upsert of the parent-side Subagent fold. Deterministic record
89
+ * identities make duplicates impossible in one canonical stream; the first canonical payload of
90
+ * each stage wins so a replayed reduce is a no-op.
91
+ */
92
+ const upsertSubagentInvocation = (invocations, payload) => {
93
+ const existing = invocations.find((invocation) => invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId);
94
+ const requested = existing?.requested ?? (payload._tag === "SubagentRequested" ? payload : void 0);
95
+ const started = existing?.started ?? (payload._tag === "SubagentStarted" ? payload : void 0);
96
+ const joined = existing?.joined ?? (payload._tag === "SubagentJoined" ? payload : void 0);
97
+ const next = SubagentInvocationState.make({
98
+ runId: payload.runId,
99
+ toolCallId: payload.toolCallId,
100
+ ...requested === void 0 ? {} : { requested },
101
+ ...started === void 0 ? {} : { started },
102
+ ...joined === void 0 ? {} : { joined }
103
+ });
104
+ return existing === void 0 ? [...invocations, next] : invocations.map((invocation) => invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId ? next : invocation);
105
+ };
106
+ /** Pure one-record Thread transition. */
107
+ const reduceThreadRecord = (projection, envelope, tailDigest = projection.tailDigest) => {
108
+ const payload = envelope.record.payload;
109
+ const inputs = payload._tag === "UserInputRecorded" ? [...projection.inputs, payload.input] : projection.inputs;
110
+ const modelOutputs = payload._tag === "ModelCompleted" ? [...projection.modelOutputs, payload.output] : projection.modelOutputs;
111
+ const completedRuns = payload._tag === "RunCompleted" ? [...projection.completedRuns, payload.runId] : projection.completedRuns;
112
+ const failedRuns = payload._tag === "RunFailed" ? [...projection.failedRuns, payload.runId] : projection.failedRuns;
113
+ const settlements = payload._tag === "SubmissionSettled" ? [...projection.settlements, payload] : projection.settlements;
114
+ const abortRequests = payload._tag === "AbortRequested" ? [...projection.abortRequests, payload] : projection.abortRequests;
115
+ const openToolCalls = payload._tag === "ToolCallPrepared" ? projection.openToolCalls.some((call) => call.runId === payload.runId && call.toolCallId === payload.toolCallId) ? projection.openToolCalls : [...projection.openToolCalls, OpenToolCallState.make({
116
+ toolCallId: payload.toolCallId,
117
+ toolName: payload.toolName,
118
+ turn: payload.turn,
119
+ runId: payload.runId
120
+ })] : payload._tag === "ToolCallSettled" || payload._tag === "ToolCallResolved" ? projection.openToolCalls.filter((call) => call.runId !== payload.runId || call.toolCallId !== payload.toolCallId) : projection.openToolCalls;
121
+ const unknownToolCalls = payload._tag === "ToolCallUnknown" ? [...projection.unknownToolCalls, payload] : projection.unknownToolCalls;
122
+ const approvals = payload._tag === "ToolApprovalRequested" || payload._tag === "ToolApprovalDecided" ? [...projection.approvals, payload] : projection.approvals;
123
+ const subagentInvocations = payload._tag === "SubagentRequested" || payload._tag === "SubagentStarted" || payload._tag === "SubagentJoined" ? upsertSubagentInvocation(projection.subagentInvocations, payload) : projection.subagentInvocations;
124
+ const parentLink = projection.parentLink ?? (payload._tag === "SubagentLineageRecorded" ? payload : void 0);
125
+ return ThreadProjection.make({
126
+ schemaVersion: 2,
127
+ threadId: projection.threadId,
128
+ throughSequence: envelope.sequence,
129
+ tailDigest,
130
+ inputs,
131
+ modelOutputs,
132
+ completedRuns,
133
+ failedRuns,
134
+ settlements,
135
+ abortRequests,
136
+ openToolCalls,
137
+ unknownToolCalls,
138
+ approvals,
139
+ subagentInvocations,
140
+ ...parentLink === void 0 ? {} : { parentLink }
141
+ });
142
+ };
143
+ /** Pure full replay from the canonical beginning. */
144
+ const replayThread = (threadId, records, tailDigest = EMPTY_TAIL_DIGEST) => replayThreadFromCheckpoint(initialThreadProjection(threadId), records, tailDigest);
145
+ /**
146
+ * Pure checkpoint replay. A validated checkpoint projection and its canonical tail produce the
147
+ * same reducer path as full replay for every later record.
148
+ * Decode persisted state with `ThreadProjection` first; an incompatible state requires full replay.
149
+ */
150
+ const replayThreadFromCheckpoint = (checkpoint, records, tailDigest = checkpoint.tailDigest) => {
151
+ let projection = checkpoint;
152
+ for (const record of records) projection = reduceThreadRecord(projection, record, tailDigest);
153
+ return projection;
154
+ };
155
+ //#endregion
156
+ export { ApprovalRecord, OpenToolCallState, SubagentInvocationState, ThreadProjection, initialThreadProjection, reduceThreadRecord, replayThread, replayThreadFromCheckpoint, ThreadProjection_exports as t };
157
+
158
+ //# sourceMappingURL=ThreadProjection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadProjection.mjs","names":[],"sources":["../../src/durable/ThreadProjection.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport { ThreadId, RunId, ToolCallId } from \"../core/Identifiers.ts\";\nimport { EMPTY_TAIL_DIGEST } from \"./Digest.ts\";\nimport type { CanonicalRecordEnvelope } from \"./Records.ts\";\nimport {\n AbortRequested,\n CanonicalSequence,\n Digest,\n PersistedJson,\n SubagentJoined,\n SubagentLineageRecorded,\n SubagentRequested,\n SubagentStarted,\n SubmissionSettledRecord,\n ToolApprovalDecided,\n ToolApprovalRequested,\n ToolCallPrepared,\n ToolCallUnknown,\n} from \"./Records.ts\";\n\n/** One prepared ordinary Tool Call still awaiting a canonical settled/resolved outcome. */\nexport class OpenToolCallState extends Schema.Class<OpenToolCallState>(\n \"@effect-agent/thread/OpenToolCallState\",\n)({\n toolCallId: ToolCallId,\n toolName: ToolCallPrepared.fields.toolName,\n turn: ToolCallPrepared.fields.turn,\n runId: RunId,\n}) {}\n\n/** The canonical approval trail: requests and decisions in canonical order. */\nexport const ApprovalRecord = Schema.Union([ToolApprovalRequested, ToolApprovalDecided]);\nexport type ApprovalRecord = typeof ApprovalRecord.Type;\n\n/**\n * Parent-side view of one Subagent Invocation, keyed by the parent Run and Tool Call: the canonical\n * `SubagentRequested`/`SubagentStarted`/`SubagentJoined` payloads as they become canonical\n * in history. A disposable derived view — the canonical records and the child's\n * own Settlement remain the recovery truth (DUR-015).\n */\nexport class SubagentInvocationState extends Schema.Class<SubagentInvocationState>(\n \"@effect-agent/thread/SubagentInvocationState\",\n)({\n runId: RunId,\n toolCallId: ToolCallId,\n requested: Schema.optionalKey(SubagentRequested),\n started: Schema.optionalKey(SubagentStarted),\n joined: Schema.optionalKey(SubagentJoined),\n}) {}\n\n/**\n * Rebuildable canonical projection. It contains only canonical values and can be discarded and\n * reconstructed from the record stream at any time.\n *\n * Phase 4 added `settlements` and `abortRequests`; Phase 5 added `openToolCalls` (the\n * prepared-minus-settled/resolved fold), `unknownToolCalls`, and `approvals`; S2 adds\n * `subagentInvocations` (the parent-side requested/started/joined fold) and `parentLink` (the\n * child-side immutable lineage). A checkpoint whose persisted state lacks these fields fails to\n * decode against this schema; callers must reject the checkpoint and rebuild the projection from\n * canonical records (documented disposable-checkpoint behavior, STORE-007/STORE-008).\n * Version 2 scopes Tool identities by Run. Earlier projections must rebuild, including empty\n * invocation views that may have already lost an earlier Run's unresolved Tool evidence.\n * `ModelResponseRecorded` advances `throughSequence` without dedicated projection state: Prompt\n * reconstruction reads canonical records directly.\n */\nexport class ThreadProjection extends Schema.Class<ThreadProjection>(\n \"@effect-agent/thread/ThreadProjection\",\n)({\n schemaVersion: Schema.Literal(2),\n threadId: ThreadId,\n throughSequence: CanonicalSequence,\n tailDigest: Digest,\n inputs: Schema.Array(PersistedJson),\n modelOutputs: Schema.Array(PersistedJson),\n completedRuns: Schema.Array(RunId),\n failedRuns: Schema.Array(RunId),\n settlements: Schema.Array(SubmissionSettledRecord),\n abortRequests: Schema.Array(AbortRequested),\n openToolCalls: Schema.Array(OpenToolCallState),\n unknownToolCalls: Schema.Array(ToolCallUnknown),\n approvals: Schema.Array(ApprovalRecord),\n subagentInvocations: Schema.Array(SubagentInvocationState),\n parentLink: Schema.optionalKey(SubagentLineageRecorded),\n}) {}\n\nexport const initialThreadProjection = (threadId: ThreadId): ThreadProjection =>\n ThreadProjection.make({\n schemaVersion: 2,\n threadId,\n throughSequence: Schema.decodeSync(CanonicalSequence)(0),\n tailDigest: EMPTY_TAIL_DIGEST,\n inputs: [],\n modelOutputs: [],\n completedRuns: [],\n failedRuns: [],\n settlements: [],\n abortRequests: [],\n openToolCalls: [],\n unknownToolCalls: [],\n approvals: [],\n subagentInvocations: [],\n });\n\n/**\n * Idempotent per-Run-and-Tool-Call upsert of the parent-side Subagent fold. Deterministic record\n * identities make duplicates impossible in one canonical stream; the first canonical payload of\n * each stage wins so a replayed reduce is a no-op.\n */\nconst upsertSubagentInvocation = (\n invocations: ReadonlyArray<SubagentInvocationState>,\n payload: SubagentRequested | SubagentStarted | SubagentJoined,\n): ReadonlyArray<SubagentInvocationState> => {\n const existing = invocations.find(\n (invocation) =>\n invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId,\n );\n\n const requested =\n existing?.requested ?? (payload._tag === \"SubagentRequested\" ? payload : undefined);\n\n const started = existing?.started ?? (payload._tag === \"SubagentStarted\" ? payload : undefined);\n const joined = existing?.joined ?? (payload._tag === \"SubagentJoined\" ? payload : undefined);\n\n const next = SubagentInvocationState.make({\n runId: payload.runId,\n toolCallId: payload.toolCallId,\n ...(requested === undefined ? {} : { requested }),\n ...(started === undefined ? {} : { started }),\n ...(joined === undefined ? {} : { joined }),\n });\n\n return existing === undefined\n ? [...invocations, next]\n : invocations.map((invocation) =>\n invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId\n ? next\n : invocation,\n );\n};\n\n/** Pure one-record Thread transition. */\nexport const reduceThreadRecord = (\n projection: ThreadProjection,\n envelope: CanonicalRecordEnvelope,\n tailDigest: Digest = projection.tailDigest,\n): ThreadProjection => {\n const payload = envelope.record.payload;\n\n const inputs =\n payload._tag === \"UserInputRecorded\"\n ? [...projection.inputs, payload.input]\n : projection.inputs;\n\n const modelOutputs =\n payload._tag === \"ModelCompleted\"\n ? [...projection.modelOutputs, payload.output]\n : projection.modelOutputs;\n\n const completedRuns =\n payload._tag === \"RunCompleted\"\n ? [...projection.completedRuns, payload.runId]\n : projection.completedRuns;\n\n const failedRuns =\n payload._tag === \"RunFailed\"\n ? [...projection.failedRuns, payload.runId]\n : projection.failedRuns;\n\n const settlements =\n payload._tag === \"SubmissionSettled\"\n ? [...projection.settlements, payload]\n : projection.settlements;\n\n const abortRequests =\n payload._tag === \"AbortRequested\"\n ? [...projection.abortRequests, payload]\n : projection.abortRequests;\n\n // `ToolCallPrepared` opens a call; `ToolCallSettled` (results batch or late settle) and\n // `ToolCallResolved` (DUR-017) close it. `ToolCallUnknown` does NOT close it: the call stays\n // open until an authorized resolution or a recovered result arrives.\n const openToolCalls =\n payload._tag === \"ToolCallPrepared\"\n ? projection.openToolCalls.some(\n (call) => call.runId === payload.runId && call.toolCallId === payload.toolCallId,\n )\n ? projection.openToolCalls\n : [\n ...projection.openToolCalls,\n OpenToolCallState.make({\n toolCallId: payload.toolCallId,\n toolName: payload.toolName,\n turn: payload.turn,\n runId: payload.runId,\n }),\n ]\n : payload._tag === \"ToolCallSettled\" || payload._tag === \"ToolCallResolved\"\n ? projection.openToolCalls.filter(\n (call) => call.runId !== payload.runId || call.toolCallId !== payload.toolCallId,\n )\n : projection.openToolCalls;\n\n const unknownToolCalls =\n payload._tag === \"ToolCallUnknown\"\n ? [...projection.unknownToolCalls, payload]\n : projection.unknownToolCalls;\n\n const approvals =\n payload._tag === \"ToolApprovalRequested\" || payload._tag === \"ToolApprovalDecided\"\n ? [...projection.approvals, payload]\n : projection.approvals;\n\n const subagentInvocations =\n payload._tag === \"SubagentRequested\" ||\n payload._tag === \"SubagentStarted\" ||\n payload._tag === \"SubagentJoined\"\n ? upsertSubagentInvocation(projection.subagentInvocations, payload)\n : projection.subagentInvocations;\n\n // The child-side lineage is immutable (SUB-004): the first canonical record wins forever.\n const parentLink =\n projection.parentLink ?? (payload._tag === \"SubagentLineageRecorded\" ? payload : undefined);\n\n return ThreadProjection.make({\n schemaVersion: 2,\n threadId: projection.threadId,\n throughSequence: envelope.sequence,\n tailDigest,\n inputs,\n modelOutputs,\n completedRuns,\n failedRuns,\n settlements,\n abortRequests,\n openToolCalls,\n unknownToolCalls,\n approvals,\n subagentInvocations,\n ...(parentLink === undefined ? {} : { parentLink }),\n });\n};\n\n/** Pure full replay from the canonical beginning. */\nexport const replayThread = (\n threadId: ThreadId,\n records: ReadonlyArray<CanonicalRecordEnvelope>,\n tailDigest: Digest = EMPTY_TAIL_DIGEST,\n): ThreadProjection =>\n replayThreadFromCheckpoint(initialThreadProjection(threadId), records, tailDigest);\n\n/**\n * Pure checkpoint replay. A validated checkpoint projection and its canonical tail produce the\n * same reducer path as full replay for every later record.\n * Decode persisted state with `ThreadProjection` first; an incompatible state requires full replay.\n */\nexport const replayThreadFromCheckpoint = (\n checkpoint: ThreadProjection,\n records: ReadonlyArray<CanonicalRecordEnvelope>,\n tailDigest: Digest = checkpoint.tailDigest,\n): ThreadProjection => {\n let projection = checkpoint;\n\n for (const record of records) {\n projection = reduceThreadRecord(projection, record, tailDigest);\n }\n\n return projection;\n};\n"],"mappings":"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"}