effect-agent 0.1.0-beta.9 → 0.1.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/dist/Agent-CN0EWRsR.d.mts +226 -0
  2. package/dist/Agent-RklVROrm.mjs +83 -0
  3. package/dist/Agent-RklVROrm.mjs.map +1 -0
  4. package/dist/AgentError-CggcAQ7V.d.mts +101 -0
  5. package/dist/AgentPolicy-CetmQrf3.d.mts +96 -0
  6. package/dist/AgentRuntime-CHipL2jG.mjs +4598 -0
  7. package/dist/AgentRuntime-CHipL2jG.mjs.map +1 -0
  8. package/dist/AgentRuntime-uxR_a4VM.d.mts +346 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-Dxu5zhOL.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-D7gDKGjH.mjs +6368 -0
  13. package/dist/DurableAgentRuntime-D7gDKGjH.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Oinuuedm.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/Ephemeral.d.mts +22 -0
  17. package/dist/Ephemeral.mjs +22 -0
  18. package/dist/Ephemeral.mjs.map +1 -0
  19. package/dist/EventSource-OqS_P9ug.d.mts +51 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  22. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  23. package/dist/Messaging-CkcIdt4I.d.mts +490 -0
  24. package/dist/MessagingHost-CRk0kXzT.d.mts +246 -0
  25. package/dist/MessagingHost-CWi_PP3g.mjs +137 -0
  26. package/dist/MessagingHost-CWi_PP3g.mjs.map +1 -0
  27. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  28. package/dist/Output-D6SkedVx.d.mts +25 -0
  29. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  30. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  31. package/dist/PreparedInputAdmission-C4HbjHgl.d.mts +38 -0
  32. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  33. package/dist/Records-BAGkekt8.d.mts +3570 -0
  34. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  35. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  36. package/dist/RunJournal-Cgg1kNvc.mjs +825 -0
  37. package/dist/RunJournal-Cgg1kNvc.mjs.map +1 -0
  38. package/dist/RunOptions-g1aigcKI.d.mts +915 -0
  39. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  40. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  41. package/dist/Schedule-H3SEYX9g.d.mts +842 -0
  42. package/dist/Scheduling-C9aIP8zT.mjs +691 -0
  43. package/dist/Scheduling-C9aIP8zT.mjs.map +1 -0
  44. package/dist/Subagent-DyfzHNdv.d.mts +826 -0
  45. package/dist/Subagent-U5qXOFE8.mjs +1469 -0
  46. package/dist/Subagent-U5qXOFE8.mjs.map +1 -0
  47. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  48. package/dist/SubagentHost-CJUBQlcc.d.mts +140 -0
  49. package/dist/Subscription-BEP8oQO5.d.mts +921 -0
  50. package/dist/SubscriptionInput-vAAOBrK7.d.mts +41 -0
  51. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  52. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  53. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  54. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  55. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  56. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  57. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  58. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  59. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  60. package/dist/ToolExposure.d.mts +8 -0
  61. package/dist/ToolExposure.mjs +21 -0
  62. package/dist/ToolExposure.mjs.map +1 -0
  63. package/dist/ToolReconciler-DQVaJfpE.d.mts +76 -0
  64. package/dist/ToolResult-DmmgoChv.d.mts +61 -0
  65. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  66. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  67. package/dist/Worker-CaPYykpe.d.mts +228 -0
  68. package/dist/agent-registration-CWDMOAZA.mjs +172 -0
  69. package/dist/agent-registration-CWDMOAZA.mjs.map +1 -0
  70. package/dist/capabilities/Approval.d.mts +114 -0
  71. package/dist/capabilities/Approval.mjs +226 -0
  72. package/dist/capabilities/Approval.mjs.map +1 -0
  73. package/dist/capabilities/Budget.d.mts +112 -0
  74. package/dist/capabilities/Budget.mjs +346 -0
  75. package/dist/capabilities/Budget.mjs.map +1 -0
  76. package/dist/capabilities/CodeMode.d.mts +157 -0
  77. package/dist/capabilities/CodeMode.mjs +522 -0
  78. package/dist/capabilities/CodeMode.mjs.map +1 -0
  79. package/dist/capabilities/Commands.d.mts +55 -0
  80. package/dist/capabilities/Commands.mjs +57 -0
  81. package/dist/capabilities/Commands.mjs.map +1 -0
  82. package/dist/capabilities/ContextTools.d.mts +321 -0
  83. package/dist/capabilities/ContextTools.mjs +126 -0
  84. package/dist/capabilities/ContextTools.mjs.map +1 -0
  85. package/dist/capabilities/Mcp.d.mts +108 -0
  86. package/dist/capabilities/Mcp.mjs +260 -0
  87. package/dist/capabilities/Mcp.mjs.map +1 -0
  88. package/dist/capabilities/McpClient.d.mts +115 -0
  89. package/dist/capabilities/McpClient.mjs +506 -0
  90. package/dist/capabilities/McpClient.mjs.map +1 -0
  91. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  92. package/dist/capabilities/MemoryNotes.mjs +128 -0
  93. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  94. package/dist/capabilities/Messaging.d.mts +3 -0
  95. package/dist/capabilities/Messaging.mjs +151 -0
  96. package/dist/capabilities/Messaging.mjs.map +1 -0
  97. package/dist/capabilities/ModelContext.d.mts +89 -0
  98. package/dist/capabilities/ModelContext.mjs +168 -0
  99. package/dist/capabilities/ModelContext.mjs.map +1 -0
  100. package/dist/capabilities/Redaction.d.mts +37 -0
  101. package/dist/capabilities/Redaction.mjs +104 -0
  102. package/dist/capabilities/Redaction.mjs.map +1 -0
  103. package/dist/capabilities/Remembering.d.mts +434 -0
  104. package/dist/capabilities/Remembering.mjs +290 -0
  105. package/dist/capabilities/Remembering.mjs.map +1 -0
  106. package/dist/capabilities/RunHooks.d.mts +82 -0
  107. package/dist/capabilities/RunHooks.mjs +144 -0
  108. package/dist/capabilities/RunHooks.mjs.map +1 -0
  109. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  110. package/dist/capabilities/SemanticMemory.mjs +315 -0
  111. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  112. package/dist/capabilities/Subagent.d.mts +4 -0
  113. package/dist/capabilities/Subagent.mjs +5 -0
  114. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  115. package/dist/capabilities/SubagentReservations.mjs +479 -0
  116. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  117. package/dist/capabilities/ToolDiscovery.d.mts +109 -0
  118. package/dist/capabilities/ToolDiscovery.mjs +211 -0
  119. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  120. package/dist/capabilities/WebCapture.d.mts +163 -0
  121. package/dist/capabilities/WebCapture.mjs +335 -0
  122. package/dist/capabilities/WebCapture.mjs.map +1 -0
  123. package/dist/capabilities/WebSearch.d.mts +71 -0
  124. package/dist/capabilities/WebSearch.mjs +112 -0
  125. package/dist/capabilities/WebSearch.mjs.map +1 -0
  126. package/dist/compaction-C2OTceKw.mjs +505 -0
  127. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  128. package/dist/core/Agent.d.mts +2 -0
  129. package/dist/core/Agent.mjs +2 -0
  130. package/dist/core/AgentError.d.mts +2 -0
  131. package/dist/core/AgentError.mjs +117 -0
  132. package/dist/core/AgentError.mjs.map +1 -0
  133. package/dist/core/AgentPolicy.d.mts +2 -0
  134. package/dist/core/AgentPolicy.mjs +94 -0
  135. package/dist/core/AgentPolicy.mjs.map +1 -0
  136. package/dist/core/AgentUpdates.d.mts +2 -0
  137. package/dist/core/AgentUpdates.mjs +63 -0
  138. package/dist/core/AgentUpdates.mjs.map +1 -0
  139. package/dist/core/IdGenerator.d.mts +26 -0
  140. package/dist/core/IdGenerator.mjs +27 -0
  141. package/dist/core/IdGenerator.mjs.map +1 -0
  142. package/dist/core/Identifiers.d.mts +2 -0
  143. package/dist/core/Identifiers.mjs +43 -0
  144. package/dist/core/Identifiers.mjs.map +1 -0
  145. package/dist/core/Memory.d.mts +57 -0
  146. package/dist/core/Memory.mjs +203 -0
  147. package/dist/core/Memory.mjs.map +1 -0
  148. package/dist/core/MemoryNamespace.d.mts +2 -0
  149. package/dist/core/MemoryNamespace.mjs +116 -0
  150. package/dist/core/MemoryNamespace.mjs.map +1 -0
  151. package/dist/core/MemoryReference.d.mts +2 -0
  152. package/dist/core/MemoryReference.mjs +109 -0
  153. package/dist/core/MemoryReference.mjs.map +1 -0
  154. package/dist/core/MemoryRevalidation.d.mts +65 -0
  155. package/dist/core/MemoryRevalidation.mjs +126 -0
  156. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  157. package/dist/core/MemoryStore.d.mts +186 -0
  158. package/dist/core/MemoryStore.mjs +243 -0
  159. package/dist/core/MemoryStore.mjs.map +1 -0
  160. package/dist/core/Receipt.d.mts +2 -0
  161. package/dist/core/Receipt.mjs +36 -0
  162. package/dist/core/Receipt.mjs.map +1 -0
  163. package/dist/core/RememberingStore.d.mts +1562 -0
  164. package/dist/core/RememberingStore.mjs +190 -0
  165. package/dist/core/RememberingStore.mjs.map +1 -0
  166. package/dist/core/RunEvent.d.mts +2 -0
  167. package/dist/core/RunEvent.mjs +337 -0
  168. package/dist/core/RunEvent.mjs.map +1 -0
  169. package/dist/core/RunPolicyUsage.d.mts +2 -0
  170. package/dist/core/RunPolicyUsage.mjs +21 -0
  171. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  172. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  173. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  174. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  175. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  176. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  177. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  178. package/dist/core/SubagentContract.d.mts +2 -0
  179. package/dist/core/SubagentContract.mjs +148 -0
  180. package/dist/core/SubagentContract.mjs.map +1 -0
  181. package/dist/core/Thread.d.mts +2 -0
  182. package/dist/core/Thread.mjs +250 -0
  183. package/dist/core/Thread.mjs.map +1 -0
  184. package/dist/core/ToolResult.d.mts +2 -0
  185. package/dist/core/ToolResult.mjs +140 -0
  186. package/dist/core/ToolResult.mjs.map +1 -0
  187. package/dist/core/Usage.d.mts +2 -0
  188. package/dist/core/Usage.mjs +319 -0
  189. package/dist/core/Usage.mjs.map +1 -0
  190. package/dist/core/Worker.d.mts +3 -0
  191. package/dist/core/Worker.mjs +147 -0
  192. package/dist/core/Worker.mjs.map +1 -0
  193. package/dist/durable/ActivityStore.d.mts +116 -0
  194. package/dist/durable/ActivityStore.mjs +131 -0
  195. package/dist/durable/ActivityStore.mjs.map +1 -0
  196. package/dist/durable/Admin.d.mts +2 -0
  197. package/dist/durable/Admin.mjs +328 -0
  198. package/dist/durable/Admin.mjs.map +1 -0
  199. package/dist/durable/AgentRegistration.d.mts +2 -0
  200. package/dist/durable/AgentRegistration.mjs +14 -0
  201. package/dist/durable/AgentRegistration.mjs.map +1 -0
  202. package/dist/durable/Certification.d.mts +111 -0
  203. package/dist/durable/Certification.mjs +159 -0
  204. package/dist/durable/Certification.mjs.map +1 -0
  205. package/dist/durable/CommittedActivity.d.mts +62 -0
  206. package/dist/durable/CommittedActivity.mjs +159 -0
  207. package/dist/durable/CommittedActivity.mjs.map +1 -0
  208. package/dist/durable/Digest.d.mts +2 -0
  209. package/dist/durable/Digest.mjs +50 -0
  210. package/dist/durable/Digest.mjs.map +1 -0
  211. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  212. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  213. package/dist/durable/DurableFailpoint.d.mts +2 -0
  214. package/dist/durable/DurableFailpoint.mjs +94 -0
  215. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  216. package/dist/durable/DurableFailpointTestControl.d.mts +15 -0
  217. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  218. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  219. package/dist/durable/EventSource.d.mts +2 -0
  220. package/dist/durable/EventSource.mjs +65 -0
  221. package/dist/durable/EventSource.mjs.map +1 -0
  222. package/dist/durable/GitHubWorkflowSource.d.mts +144 -0
  223. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  224. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  225. package/dist/durable/MessageDelivery.d.mts +492 -0
  226. package/dist/durable/MessageDelivery.mjs +495 -0
  227. package/dist/durable/MessageDelivery.mjs.map +1 -0
  228. package/dist/durable/MessageDeliveryStoreConformance.d.mts +358 -0
  229. package/dist/durable/MessageDeliveryStoreConformance.mjs +243 -0
  230. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  231. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  232. package/dist/durable/OperationAuthorizer.mjs +70 -0
  233. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  234. package/dist/durable/PersistentHistory.d.mts +16 -0
  235. package/dist/durable/PersistentHistory.mjs +125 -0
  236. package/dist/durable/PersistentHistory.mjs.map +1 -0
  237. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  238. package/dist/durable/PreparedInputAdmission.mjs +34 -0
  239. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  240. package/dist/durable/Records.d.mts +2 -0
  241. package/dist/durable/Records.mjs +795 -0
  242. package/dist/durable/Records.mjs.map +1 -0
  243. package/dist/durable/Recovery.d.mts +2 -0
  244. package/dist/durable/Recovery.mjs +739 -0
  245. package/dist/durable/Recovery.mjs.map +1 -0
  246. package/dist/durable/RunJournal.d.mts +2 -0
  247. package/dist/durable/RunJournal.mjs +2 -0
  248. package/dist/durable/Schedule.d.mts +2 -0
  249. package/dist/durable/Schedule.mjs +382 -0
  250. package/dist/durable/Schedule.mjs.map +1 -0
  251. package/dist/durable/ScheduleStoreConformance.d.mts +18 -0
  252. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  253. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  254. package/dist/durable/ScheduleTransition.d.mts +24 -0
  255. package/dist/durable/ScheduleTransition.mjs +180 -0
  256. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  257. package/dist/durable/Scheduling.d.mts +54 -0
  258. package/dist/durable/Scheduling.mjs +2 -0
  259. package/dist/durable/SqlMemoryStore.d.mts +30 -0
  260. package/dist/durable/SqlMemoryStore.mjs +436 -0
  261. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  262. package/dist/durable/SqlMessageDeliveryStore.d.mts +40 -0
  263. package/dist/durable/SqlMessageDeliveryStore.mjs +167 -0
  264. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  265. package/dist/durable/SqlStorageV2Upgrade.d.mts +22 -0
  266. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  267. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  268. package/dist/durable/SqlSubscriptionStore.d.mts +63 -0
  269. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  270. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  271. package/dist/durable/SubmissionLedger.d.mts +3 -0
  272. package/dist/durable/SubmissionLedger.mjs +914 -0
  273. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  274. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  275. package/dist/durable/SubmissionLedgerConformance.mjs +1986 -0
  276. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  277. package/dist/durable/SubmissionStatus.d.mts +2 -0
  278. package/dist/durable/SubmissionStatus.mjs +18 -0
  279. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  280. package/dist/durable/Subscription.d.mts +2 -0
  281. package/dist/durable/Subscription.mjs +360 -0
  282. package/dist/durable/Subscription.mjs.map +1 -0
  283. package/dist/durable/SubscriptionInput.d.mts +2 -0
  284. package/dist/durable/SubscriptionInput.mjs +52 -0
  285. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  286. package/dist/durable/SubscriptionStoreConformance.d.mts +17 -0
  287. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  288. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  289. package/dist/durable/SubscriptionTools.d.mts +273 -0
  290. package/dist/durable/SubscriptionTools.mjs +190 -0
  291. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  292. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  293. package/dist/durable/SubscriptionTransition.mjs +148 -0
  294. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  295. package/dist/durable/Subscriptions.d.mts +73 -0
  296. package/dist/durable/Subscriptions.mjs +627 -0
  297. package/dist/durable/Subscriptions.mjs.map +1 -0
  298. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  299. package/dist/durable/ThreadContextHistory.mjs +152 -0
  300. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  301. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  302. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  303. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  304. package/dist/durable/ThreadInvariants.d.mts +74 -0
  305. package/dist/durable/ThreadInvariants.mjs +200 -0
  306. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  307. package/dist/durable/ThreadProjection.d.mts +78 -0
  308. package/dist/durable/ThreadProjection.mjs +158 -0
  309. package/dist/durable/ThreadProjection.mjs.map +1 -0
  310. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  311. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  312. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  313. package/dist/durable/ThreadStore.d.mts +2 -0
  314. package/dist/durable/ThreadStore.mjs +147 -0
  315. package/dist/durable/ThreadStore.mjs.map +1 -0
  316. package/dist/durable/ThreadStoreConformance.d.mts +29 -0
  317. package/dist/durable/ThreadStoreConformance.mjs +248 -0
  318. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  319. package/dist/durable/ToolReconciler.d.mts +2 -0
  320. package/dist/durable/ToolReconciler.mjs +81 -0
  321. package/dist/durable/ToolReconciler.mjs.map +1 -0
  322. package/dist/durable/WakeScheduler.d.mts +2 -0
  323. package/dist/durable/WakeScheduler.mjs +85 -0
  324. package/dist/durable/WakeScheduler.mjs.map +1 -0
  325. package/dist/durable/WorkerHost.d.mts +129 -0
  326. package/dist/durable/WorkerHost.mjs +77 -0
  327. package/dist/durable/WorkerHost.mjs.map +1 -0
  328. package/dist/engine/AgentRuntime.d.mts +2 -0
  329. package/dist/engine/AgentRuntime.mjs +2 -0
  330. package/dist/engine/Compaction.d.mts +7 -0
  331. package/dist/engine/Compaction.mjs +16 -0
  332. package/dist/engine/Compaction.mjs.map +1 -0
  333. package/dist/engine/ContextCompactor.d.mts +2 -0
  334. package/dist/engine/ContextCompactor.mjs +119 -0
  335. package/dist/engine/ContextCompactor.mjs.map +1 -0
  336. package/dist/engine/ContextHistory.d.mts +65 -0
  337. package/dist/engine/ContextHistory.mjs +76 -0
  338. package/dist/engine/ContextHistory.mjs.map +1 -0
  339. package/dist/engine/ContextWindow.d.mts +2 -0
  340. package/dist/engine/ContextWindow.mjs +59 -0
  341. package/dist/engine/ContextWindow.mjs.map +1 -0
  342. package/dist/engine/DurableStep.d.mts +2 -0
  343. package/dist/engine/DurableStep.mjs +62 -0
  344. package/dist/engine/DurableStep.mjs.map +1 -0
  345. package/dist/engine/MessagingHost.d.mts +2 -0
  346. package/dist/engine/MessagingHost.mjs +2 -0
  347. package/dist/engine/Output.d.mts +2 -0
  348. package/dist/engine/Output.mjs +8 -0
  349. package/dist/engine/Output.mjs.map +1 -0
  350. package/dist/engine/RunEventSink.d.mts +2 -0
  351. package/dist/engine/RunEventSink.mjs +22 -0
  352. package/dist/engine/RunEventSink.mjs.map +1 -0
  353. package/dist/engine/RunOptions.d.mts +2 -0
  354. package/dist/engine/RunOptions.mjs +122 -0
  355. package/dist/engine/RunOptions.mjs.map +1 -0
  356. package/dist/engine/SubagentHost.d.mts +2 -0
  357. package/dist/engine/SubagentHost.mjs +72 -0
  358. package/dist/engine/SubagentHost.mjs.map +1 -0
  359. package/dist/engine/ThreadHistory.d.mts +2 -0
  360. package/dist/engine/ThreadHistory.mjs +67 -0
  361. package/dist/engine/ThreadHistory.mjs.map +1 -0
  362. package/dist/engine/ToolBroker.d.mts +2 -0
  363. package/dist/engine/ToolBroker.mjs +42 -0
  364. package/dist/engine/ToolBroker.mjs.map +1 -0
  365. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  366. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  367. package/dist/index.d.mts +89 -6
  368. package/dist/index.mjs +98 -6
  369. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  370. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  371. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  372. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  373. package/dist/sandbox/CodeExecutor.mjs +278 -0
  374. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  375. package/dist/sandbox/InteractiveBrowser.d.mts +142 -0
  376. package/dist/sandbox/InteractiveBrowser.mjs +165 -0
  377. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  378. package/dist/sandbox/PageCapture.d.mts +2 -0
  379. package/dist/sandbox/PageCapture.mjs +450 -0
  380. package/dist/sandbox/PageCapture.mjs.map +1 -0
  381. package/dist/sandbox/PageCrawl.d.mts +88 -0
  382. package/dist/sandbox/PageCrawl.mjs +124 -0
  383. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  384. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  385. package/dist/sandbox/PageScreenshot.mjs +53 -0
  386. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  387. package/dist/sandbox/ProtectedBrowser.d.mts +273 -0
  388. package/dist/sandbox/ProtectedBrowser.mjs +287 -0
  389. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  390. package/dist/sandbox/Sandbox.d.mts +2 -0
  391. package/dist/sandbox/Sandbox.mjs +208 -0
  392. package/dist/sandbox/Sandbox.mjs.map +1 -0
  393. package/dist/utf8-BYfhEkcj.mjs +11 -0
  394. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  395. package/dist/utf8-DchGZRBd.mjs +23 -0
  396. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  397. package/package.json +1 -40
  398. package/src/Ephemeral.ts +17 -0
  399. package/src/ToolExposure.ts +2 -0
  400. package/src/capabilities/Approval.ts +352 -0
  401. package/src/capabilities/Budget.ts +536 -0
  402. package/src/capabilities/CodeMode.ts +1090 -0
  403. package/src/capabilities/Commands.ts +86 -0
  404. package/src/capabilities/ContextTools.ts +184 -0
  405. package/src/capabilities/Mcp.ts +427 -0
  406. package/src/capabilities/McpClient.ts +967 -0
  407. package/src/capabilities/MemoryNotes.ts +174 -0
  408. package/src/capabilities/Messaging.ts +261 -0
  409. package/src/capabilities/ModelContext.ts +354 -0
  410. package/src/capabilities/Redaction.ts +157 -0
  411. package/src/capabilities/Remembering.ts +550 -0
  412. package/src/capabilities/RunHooks.ts +280 -0
  413. package/src/capabilities/SemanticMemory.ts +447 -0
  414. package/src/capabilities/Subagent.ts +2277 -0
  415. package/src/capabilities/SubagentReservations.ts +850 -0
  416. package/src/capabilities/ToolDiscovery.ts +339 -0
  417. package/src/capabilities/WebCapture.ts +722 -0
  418. package/src/capabilities/WebSearch.ts +184 -0
  419. package/src/capabilities/internal/subagent-background.ts +1106 -0
  420. package/src/capabilities/internal/subagent-contract.ts +142 -0
  421. package/src/capabilities/internal/subagent-policy.ts +235 -0
  422. package/src/capabilities/internal/subagent-reporting.ts +261 -0
  423. package/src/capabilities/internal/utf8.ts +10 -0
  424. package/src/core/Agent.ts +575 -0
  425. package/src/core/AgentError.ts +152 -0
  426. package/src/core/AgentPolicy.ts +153 -0
  427. package/src/core/AgentUpdates.ts +100 -0
  428. package/src/core/IdGenerator.ts +39 -0
  429. package/src/core/Identifiers.ts +48 -0
  430. package/src/core/Memory.ts +290 -0
  431. package/src/core/MemoryNamespace.ts +196 -0
  432. package/src/core/MemoryReference.ts +121 -0
  433. package/src/core/MemoryRevalidation.ts +185 -0
  434. package/src/core/MemoryStore.ts +368 -0
  435. package/src/core/Messaging.ts +90 -0
  436. package/src/core/Receipt.ts +42 -0
  437. package/src/core/RememberingStore.ts +300 -0
  438. package/src/core/RunEvent.ts +366 -0
  439. package/src/core/RunPolicyUsage.ts +17 -0
  440. package/src/core/SemanticMemoryIndex.ts +250 -0
  441. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  442. package/src/core/SubagentContract.ts +196 -0
  443. package/src/core/Thread.ts +371 -0
  444. package/src/core/ToolExposure.ts +74 -0
  445. package/src/core/ToolResult.ts +170 -0
  446. package/src/core/Usage.ts +529 -0
  447. package/src/core/Worker.ts +173 -0
  448. package/src/core/internal/agent-updates.ts +32 -0
  449. package/src/core/internal/utf8.ts +23 -0
  450. package/src/durable/ActivityStore.ts +160 -0
  451. package/src/durable/Admin.ts +496 -0
  452. package/src/durable/AgentRegistration.ts +13 -0
  453. package/src/durable/Certification.ts +210 -0
  454. package/src/durable/CommittedActivity.ts +296 -0
  455. package/src/durable/Digest.ts +93 -0
  456. package/src/durable/DurableAgentRuntime.ts +10340 -0
  457. package/src/durable/DurableFailpoint.ts +103 -0
  458. package/src/durable/DurableFailpointTestControl.ts +39 -0
  459. package/src/durable/EventSource.ts +172 -0
  460. package/src/durable/GitHubWorkflowSource.ts +453 -0
  461. package/src/durable/MessageDelivery.ts +708 -0
  462. package/src/durable/MessageDeliveryStoreConformance.ts +363 -0
  463. package/src/durable/OperationAuthorizer.ts +85 -0
  464. package/src/durable/PersistentHistory.ts +260 -0
  465. package/src/durable/PreparedInputAdmission.ts +44 -0
  466. package/src/durable/Records.ts +1010 -0
  467. package/src/durable/Recovery.ts +1018 -0
  468. package/src/durable/RunJournal.ts +1479 -0
  469. package/src/durable/Schedule.ts +504 -0
  470. package/src/durable/ScheduleStoreConformance.ts +638 -0
  471. package/src/durable/ScheduleTransition.ts +265 -0
  472. package/src/durable/Scheduling.ts +1077 -0
  473. package/src/durable/SqlMemoryStore.ts +778 -0
  474. package/src/durable/SqlMessageDeliveryStore.ts +302 -0
  475. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  476. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  477. package/src/durable/SubmissionLedger.ts +1201 -0
  478. package/src/durable/SubmissionLedgerConformance.ts +4579 -0
  479. package/src/durable/SubmissionStatus.ts +14 -0
  480. package/src/durable/Subscription.ts +544 -0
  481. package/src/durable/SubscriptionInput.ts +144 -0
  482. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  483. package/src/durable/SubscriptionTools.ts +327 -0
  484. package/src/durable/SubscriptionTransition.ts +302 -0
  485. package/src/durable/Subscriptions.ts +1210 -0
  486. package/src/durable/ThreadContextHistory.ts +227 -0
  487. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  488. package/src/durable/ThreadInvariants.ts +442 -0
  489. package/src/durable/ThreadProjection.ts +269 -0
  490. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  491. package/src/durable/ThreadStore.ts +242 -0
  492. package/src/durable/ThreadStoreConformance.ts +710 -0
  493. package/src/durable/ToolReconciler.ts +105 -0
  494. package/src/durable/WakeScheduler.ts +134 -0
  495. package/src/durable/WorkerHost.ts +171 -0
  496. package/src/durable/internal/agent-registration.ts +525 -0
  497. package/src/durable/internal/agent-updates.ts +302 -0
  498. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  499. package/src/durable/internal/journal-checkpoint.ts +104 -0
  500. package/src/durable/internal/journal-metadata.ts +107 -0
  501. package/src/durable/internal/messaging-host.ts +608 -0
  502. package/src/durable/internal/schedule-time.ts +303 -0
  503. package/src/durable/internal/storage-v2-layout.ts +163 -0
  504. package/src/durable/internal/storage-v2.ts +73 -0
  505. package/src/durable/internal/worker-host.ts +2467 -0
  506. package/src/durable/internal/worker-runtime.ts +9 -0
  507. package/src/engine/AgentRuntime.ts +37 -0
  508. package/src/engine/Compaction.ts +11 -0
  509. package/src/engine/ContextCompactor.ts +277 -0
  510. package/src/engine/ContextHistory.ts +73 -0
  511. package/src/engine/ContextWindow.ts +72 -0
  512. package/src/engine/DurableStep.ts +132 -0
  513. package/src/engine/MessagingHost.ts +110 -0
  514. package/src/engine/Output.ts +2 -0
  515. package/src/engine/RunEventSink.ts +132 -0
  516. package/src/engine/RunOptions.ts +1077 -0
  517. package/src/engine/SubagentHost.ts +181 -0
  518. package/src/engine/ThreadHistory.ts +120 -0
  519. package/src/engine/ToolBroker.ts +157 -0
  520. package/src/engine/ToolExposure.ts +48 -0
  521. package/src/engine/internal/agent-runtime.ts +10162 -0
  522. package/src/engine/internal/bounded-value.ts +315 -0
  523. package/src/engine/internal/compaction.ts +678 -0
  524. package/src/engine/internal/error-diagnostic.ts +39 -0
  525. package/src/engine/internal/output-contract.ts +173 -0
  526. package/src/engine/internal/primitive-delta.ts +80 -0
  527. package/src/engine/internal/provider-result-staging.ts +211 -0
  528. package/src/engine/internal/tool-derivative.ts +106 -0
  529. package/src/engine/internal/tool-exposure.ts +224 -0
  530. package/src/engine/internal/tool-telemetry.ts +484 -0
  531. package/src/index.ts +97 -22
  532. package/src/sandbox/CodeExecutor.ts +352 -0
  533. package/src/sandbox/InteractiveBrowser.ts +257 -0
  534. package/src/sandbox/PageCapture.ts +692 -0
  535. package/src/sandbox/PageCrawl.ts +148 -0
  536. package/src/sandbox/PageScreenshot.ts +81 -0
  537. package/src/sandbox/ProtectedBrowser.ts +436 -0
  538. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,442 @@
1
+ import type { Crypto } from "effect";
2
+ import { Effect, Schema } from "effect";
3
+
4
+ import { IntegrityCheck, IntegrityReport, type IntegrityCheckName } from "./Admin.ts";
5
+ import { digestCanonicalBatch, EMPTY_TAIL_DIGEST } from "./Digest.ts";
6
+ import {
7
+ CanonicalBatch,
8
+ CanonicalRecordEnvelope,
9
+ type BatchId,
10
+ type ProducerId,
11
+ type RecordEnvelope,
12
+ } from "./Records.ts";
13
+ import {
14
+ submissionInputRecordId,
15
+ submissionSettlementRecordId,
16
+ type SubmissionSnapshot,
17
+ } from "./SubmissionLedger.ts";
18
+ import type { ThreadCheckpoint, ThreadExport } from "./ThreadStore.ts";
19
+
20
+ /**
21
+ * The production thread invariant checker, shared by the durable coordinator, admin
22
+ * verification, and development harnesses. Keeping it independent of certification and
23
+ * conformance modules prevents ordinary runtime imports from loading test-only dependencies.
24
+ *
25
+ * `verifyThreadInvariants` — hoisted from the DC eviction harness's `assertConvergence`
26
+ * so the admin `verify` operation, the adapter certification tiers (WP2), and the chaos/soak
27
+ * properties (WP4) all assert one set of claims.
28
+ */
29
+
30
+ /**
31
+ * Input of one invariant verification, assembled entirely from port reads (or from a captured
32
+ * copy under test):
33
+ *
34
+ * - `export` — the Thread's canonical export (`ThreadStore.export`).
35
+ * - `submissions` — every known Submission row of the lane (ledger scan + lookups). Order is
36
+ * irrelevant; the checker sorts by `queueSequence`.
37
+ * - `batchProducers` — OPTIONAL per-batch producer identity directory. The digest chain hashes
38
+ * each batch's Schema-encoded `CanonicalBatch` — including its `producerId`, which the
39
+ * `ThreadStore` port deliberately does not export — so full chain recomputation needs
40
+ * this directory (capture it at append time, or from adapter-private storage). Without it the
41
+ * `digest-chain` and `checkpoint-binding` checks report `skipped` with the honest reason;
42
+ * adapter-level `verifyOnOpen` remains the storage-side full audit.
43
+ * - `checkpoint` — the stored checkpoint to bind against the recomputed chain, when one exists.
44
+ * - `checkpointsSupported` — whether the caller inspected a supporting adapter. Without this
45
+ * evidence or a supplied checkpoint, checkpoint verification is skipped.
46
+ * - `requireAllSettled` — convergence mode (certification Tier 2, chaos, soak): additionally
47
+ * require every known Submission to be settled.
48
+ */
49
+ export interface ThreadInvariantInput {
50
+ readonly export: ThreadExport;
51
+ readonly submissions: ReadonlyArray<SubmissionSnapshot>;
52
+ readonly batchProducers?: ReadonlyMap<BatchId, ProducerId> | undefined;
53
+ readonly checkpoint?: ThreadCheckpoint | undefined;
54
+ /** Set only after checking the adapter's optional checkpoint capability. */
55
+ readonly checkpointsSupported?: boolean | undefined;
56
+ readonly requireAllSettled?: boolean | undefined;
57
+ }
58
+
59
+ const encodeEnvelope = Schema.encodeEffect(CanonicalRecordEnvelope);
60
+ const decodeEnvelope = Schema.decodeUnknownEffect(CanonicalRecordEnvelope);
61
+
62
+ const check = (
63
+ name: IntegrityCheckName,
64
+ status: "passed" | "failed" | "skipped",
65
+ detail?: string,
66
+ ): IntegrityCheck =>
67
+ IntegrityCheck.make({
68
+ name,
69
+ status,
70
+ ...(detail === undefined ? {} : { detail: detail.slice(0, 4_096) }),
71
+ });
72
+
73
+ interface BatchRun {
74
+ readonly batchId: BatchId;
75
+ readonly records: Array<RecordEnvelope>;
76
+ readonly lastSequence: number;
77
+ }
78
+
79
+ /** Group the export's records into their atomic append runs (batches append contiguously). */
80
+ const batchRunsOf = (records: ReadonlyArray<CanonicalRecordEnvelope>): Array<BatchRun> => {
81
+ const runs: Array<BatchRun> = [];
82
+
83
+ for (const envelope of records) {
84
+ const current = runs.at(-1);
85
+
86
+ if (current !== undefined && current.batchId === envelope.batchId) {
87
+ current.records.push(envelope.record);
88
+ runs[runs.length - 1] = { ...current, lastSequence: envelope.sequence };
89
+ continue;
90
+ }
91
+ runs.push({
92
+ batchId: envelope.batchId,
93
+ records: [envelope.record],
94
+ lastSequence: envelope.sequence,
95
+ });
96
+ }
97
+
98
+ return runs;
99
+ };
100
+
101
+ /**
102
+ * The shared thread invariant checker (plan §1/§3): the DC harness `assertConvergence`
103
+ * claims, verbatim, as typed per-check results over a canonical export plus the lane's ledger
104
+ * rows — read-only, never a repair:
105
+ *
106
+ * 1. `schema-round-trip` — every envelope re-encodes and re-decodes through its canonical
107
+ * Schema (a corrupted copy fails typed instead of decoding incorrectly).
108
+ * 2. `record-identity` — no canonical record identity appears twice (DUR-007 dedupe held).
109
+ * 3. `sequence-contiguity` — gap-free sequences from 1 through the exported tail.
110
+ * 4. `digest-chain` — the tail digest recomputes from `EMPTY_TAIL_DIGEST` through every batch
111
+ * (requires the per-batch producer directory; skipped honestly otherwise).
112
+ * 5. `fifo-input-order` / `fifo-settlement-order` — canonical input and settlement records
113
+ * follow the admitted queue order (DUR-004). Aborted settlements of never-run work (no
114
+ * canonical `input:{sid}` record) are exempt from the settlement comparison: P7 §7(c)
115
+ * settles them immediately without waiting for the head, and DUR-004 bounds execution
116
+ * order, which never-run work has none of.
117
+ * 6. `terminal-uniqueness` — at most one canonical terminal record per Submission, exactly one
118
+ * for every settled ledger row (DUR-002).
119
+ * 7. `ledger-canonical-agreement` — a settled ledger row has a canonical settlement record and
120
+ * the outcomes agree; canonical history remains the authority (DUR-015).
121
+ * 8. `checkpoint-binding` — a stored checkpoint's digest matches the recomputed chain at its
122
+ * sequence (needs the chain; bounds are checked regardless).
123
+ * 9. `all-settled` — convergence mode only: every known Submission settled.
124
+ *
125
+ * Requires only `Crypto.Crypto` (digest recomputation); it performs no port access, so the
126
+ * admin operation, certification runners, and chaos properties feed it whatever copies they
127
+ * hold.
128
+ */
129
+ export const verifyThreadInvariants = Effect.fn("Thread.verifyThreadInvariants")(function* (
130
+ input: ThreadInvariantInput,
131
+ ): Effect.fn.Return<IntegrityReport, never, Crypto.Crypto> {
132
+ const exported = input.export;
133
+ const records = exported.records;
134
+ const checks: Array<IntegrityCheck> = [];
135
+
136
+ // 1. schema-round-trip
137
+ {
138
+ let failure: string | undefined;
139
+
140
+ for (const envelope of records) {
141
+ const roundTrip = yield* encodeEnvelope(envelope).pipe(
142
+ Effect.flatMap(decodeEnvelope),
143
+ Effect.exit,
144
+ );
145
+
146
+ if (roundTrip._tag === "Failure") {
147
+ failure = `record ${envelope.record.recordId} does not round-trip its Schema`;
148
+ break;
149
+ }
150
+ }
151
+ checks.push(
152
+ failure === undefined
153
+ ? check("schema-round-trip", "passed")
154
+ : check("schema-round-trip", "failed", failure),
155
+ );
156
+ }
157
+
158
+ // 2. record-identity
159
+ {
160
+ const seen = new Set<string>();
161
+ const duplicates = new Set<string>();
162
+
163
+ for (const envelope of records) {
164
+ if (seen.has(envelope.record.recordId)) duplicates.add(envelope.record.recordId);
165
+ seen.add(envelope.record.recordId);
166
+ }
167
+ checks.push(
168
+ duplicates.size === 0
169
+ ? check("record-identity", "passed")
170
+ : check(
171
+ "record-identity",
172
+ "failed",
173
+ `duplicated canonical record identities: ${[...duplicates].join(", ")}`,
174
+ ),
175
+ );
176
+ }
177
+
178
+ // 3. sequence-contiguity
179
+ {
180
+ let contiguityFailure: string | undefined;
181
+
182
+ for (const [index, envelope] of records.entries()) {
183
+ if (envelope.sequence !== index + 1) {
184
+ contiguityFailure = `sequence ${envelope.sequence} at position ${index} (expected ${index + 1})`;
185
+ break;
186
+ }
187
+ }
188
+ if (contiguityFailure === undefined && records.length !== exported.tailSequence) {
189
+ contiguityFailure = `exported tail sequence ${exported.tailSequence} disagrees with ${records.length} records`;
190
+ }
191
+ checks.push(
192
+ contiguityFailure === undefined
193
+ ? check("sequence-contiguity", "passed")
194
+ : check("sequence-contiguity", "failed", contiguityFailure),
195
+ );
196
+ }
197
+
198
+ // 4. digest-chain (+ collect per-sequence chain digests for checkpoint binding)
199
+ const chainDigestAtSequence = new Map<number, string>();
200
+
201
+ if (input.batchProducers === undefined) {
202
+ checks.push(
203
+ check(
204
+ "digest-chain",
205
+ "skipped",
206
+ "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",
207
+ ),
208
+ );
209
+ } else {
210
+ let chain = EMPTY_TAIL_DIGEST;
211
+ let chainFailure: string | undefined;
212
+
213
+ for (const run of batchRunsOf(records)) {
214
+ const producerId = input.batchProducers.get(run.batchId);
215
+
216
+ if (producerId === undefined) {
217
+ chainFailure = `no producer identity supplied for batch ${run.batchId}`;
218
+ break;
219
+ }
220
+ const [first, ...rest] = run.records;
221
+
222
+ if (first === undefined) {
223
+ chainFailure = `batch ${run.batchId} grouped zero records`;
224
+ break;
225
+ }
226
+
227
+ const digest = yield* digestCanonicalBatch(
228
+ chain,
229
+ CanonicalBatch.make({ batchId: run.batchId, producerId, records: [first, ...rest] }),
230
+ ).pipe(Effect.exit);
231
+
232
+ if (digest._tag === "Failure") {
233
+ chainFailure = `batch ${run.batchId} could not be re-digested`;
234
+ break;
235
+ }
236
+ chain = digest.value;
237
+ chainDigestAtSequence.set(run.lastSequence, chain);
238
+ }
239
+ if (chainFailure === undefined && chain !== exported.tailDigest) {
240
+ chainFailure = `recomputed tail digest ${chain} disagrees with exported tail digest ${exported.tailDigest}`;
241
+ }
242
+ checks.push(
243
+ chainFailure === undefined
244
+ ? check("digest-chain", "passed")
245
+ : check("digest-chain", "failed", chainFailure),
246
+ );
247
+ }
248
+
249
+ // Shared FIFO/terminal machinery
250
+ const ordered = [...input.submissions].sort(
251
+ (left, right) => left.queueSequence - right.queueSequence,
252
+ );
253
+
254
+ const recordIds = records.map((envelope) => envelope.record.recordId);
255
+
256
+ // 5a. fifo-input-order
257
+ {
258
+ const expectedInputs = ordered.map((row) => submissionInputRecordId(row.submissionId));
259
+ const expectedSet = new Set<string>(expectedInputs);
260
+ const inputOrder = recordIds.filter((recordId) => expectedSet.has(recordId));
261
+ const presentInputs = new Set(inputOrder);
262
+ const expectedPresent = expectedInputs.filter((expected) => presentInputs.has(expected));
263
+
264
+ const matches =
265
+ inputOrder.length === expectedPresent.length &&
266
+ inputOrder.every((recordId, index) => recordId === expectedPresent[index]);
267
+
268
+ checks.push(
269
+ matches
270
+ ? check("fifo-input-order", "passed")
271
+ : check(
272
+ "fifo-input-order",
273
+ "failed",
274
+ `canonical input order [${inputOrder.join(", ")}] violates queue order`,
275
+ ),
276
+ );
277
+ }
278
+
279
+ // 5b. fifo-settlement-order — P7 §7(c) exemption: an ABORTED settlement for never-run work
280
+ // (no canonical `input:{sid}` record) settles immediately by design, without waiting to
281
+ // head the lane, so it is excluded from the FIFO comparison. DUR-004 bounds EXECUTION
282
+ // order; the exempted rows provably never executed.
283
+ {
284
+ const recordIdSet = new Set<string>(recordIds);
285
+ const abortedNeverRun = new Set<string>();
286
+
287
+ for (const envelope of records) {
288
+ const payload = envelope.record.payload;
289
+
290
+ if (
291
+ payload._tag === "SubmissionSettled" &&
292
+ payload.outcome === "aborted" &&
293
+ !recordIdSet.has(submissionInputRecordId(payload.submissionId))
294
+ ) {
295
+ abortedNeverRun.add(payload.submissionId);
296
+ }
297
+ }
298
+
299
+ const expectedSettlements = ordered
300
+ .filter((row) => !abortedNeverRun.has(row.submissionId))
301
+ .map((row) => submissionSettlementRecordId(row.submissionId));
302
+
303
+ const expectedSet = new Set<string>(expectedSettlements);
304
+ const settlementOrder = recordIds.filter((recordId) => expectedSet.has(recordId));
305
+
306
+ const presentSettlements = new Set(settlementOrder);
307
+
308
+ const expectedPresent = expectedSettlements.filter((expected) =>
309
+ presentSettlements.has(expected),
310
+ );
311
+
312
+ const matches =
313
+ settlementOrder.length === expectedPresent.length &&
314
+ settlementOrder.every((recordId, index) => recordId === expectedPresent[index]);
315
+
316
+ checks.push(
317
+ matches
318
+ ? check("fifo-settlement-order", "passed")
319
+ : check(
320
+ "fifo-settlement-order",
321
+ "failed",
322
+ `canonical settlement order [${settlementOrder.join(", ")}] violates queue order`,
323
+ ),
324
+ );
325
+ }
326
+
327
+ // 6 + 7. terminal-uniqueness and ledger-canonical-agreement
328
+ {
329
+ const settlementsBySubmission = new Map<string, Array<CanonicalRecordEnvelope>>();
330
+
331
+ for (const envelope of records) {
332
+ if (envelope.record.payload._tag !== "SubmissionSettled") continue;
333
+ const submissionId = envelope.record.payload.submissionId;
334
+ const existing = settlementsBySubmission.get(submissionId) ?? [];
335
+
336
+ existing.push(envelope);
337
+ settlementsBySubmission.set(submissionId, existing);
338
+ }
339
+ let uniquenessFailure: string | undefined;
340
+ let agreementFailure: string | undefined;
341
+
342
+ for (const [submissionId, settlements] of settlementsBySubmission) {
343
+ if (settlements.length > 1) {
344
+ uniquenessFailure = `submission ${submissionId} has ${settlements.length} canonical terminal records`;
345
+ }
346
+ }
347
+ for (const row of ordered) {
348
+ const settlements = settlementsBySubmission.get(row.submissionId) ?? [];
349
+ const canonical = settlements[0]?.record.payload;
350
+
351
+ if (row.state === "settled") {
352
+ if (settlements.length !== 1) {
353
+ uniquenessFailure ??= `settled submission ${row.submissionId} has ${settlements.length} canonical terminal records (expected exactly 1)`;
354
+ }
355
+ if (
356
+ canonical !== undefined &&
357
+ canonical._tag === "SubmissionSettled" &&
358
+ row.settledOutcome !== undefined &&
359
+ canonical.outcome !== row.settledOutcome
360
+ ) {
361
+ agreementFailure = `submission ${row.submissionId}: ledger outcome ${row.settledOutcome} disagrees with canonical outcome ${canonical.outcome}`;
362
+ }
363
+ if (settlements.length === 0) {
364
+ agreementFailure ??= `settled submission ${row.submissionId} has no canonical settlement record (DUR-015: history is the authority)`;
365
+ }
366
+ }
367
+ }
368
+ checks.push(
369
+ uniquenessFailure === undefined
370
+ ? check("terminal-uniqueness", "passed")
371
+ : check("terminal-uniqueness", "failed", uniquenessFailure),
372
+ );
373
+ checks.push(
374
+ agreementFailure === undefined
375
+ ? check("ledger-canonical-agreement", "passed")
376
+ : check("ledger-canonical-agreement", "failed", agreementFailure),
377
+ );
378
+ }
379
+
380
+ // 8. checkpoint-binding
381
+ if (input.checkpoint === undefined && input.checkpointsSupported !== true) {
382
+ checks.push(check("checkpoint-binding", "skipped", "checkpoint support was not supplied"));
383
+ } else if (input.checkpoint === undefined) {
384
+ checks.push(check("checkpoint-binding", "passed", "no stored checkpoint"));
385
+ } else if (input.checkpoint.throughSequence > exported.tailSequence) {
386
+ checks.push(
387
+ check(
388
+ "checkpoint-binding",
389
+ "failed",
390
+ `checkpoint through-sequence ${input.checkpoint.throughSequence} is ahead of the tail ${exported.tailSequence}`,
391
+ ),
392
+ );
393
+ } else if (input.batchProducers === undefined) {
394
+ checks.push(
395
+ check(
396
+ "checkpoint-binding",
397
+ "skipped",
398
+ "digest binding needs the recomputed chain; supply batchProducers (the adapter rejects mismatched checkpoints on save/load regardless)",
399
+ ),
400
+ );
401
+ } else {
402
+ const bound = chainDigestAtSequence.get(input.checkpoint.throughSequence);
403
+
404
+ checks.push(
405
+ bound === input.checkpoint.tailDigest
406
+ ? check("checkpoint-binding", "passed")
407
+ : check(
408
+ "checkpoint-binding",
409
+ "failed",
410
+ `checkpoint digest ${input.checkpoint.tailDigest} does not match the recomputed chain at sequence ${input.checkpoint.throughSequence}`,
411
+ ),
412
+ );
413
+ }
414
+
415
+ // 9. all-settled (convergence mode)
416
+ if (input.requireAllSettled === true) {
417
+ const nonterminal = ordered.filter((row) => row.state !== "settled");
418
+
419
+ checks.push(
420
+ nonterminal.length === 0 && ordered.length > 0
421
+ ? check("all-settled", "passed")
422
+ : check(
423
+ "all-settled",
424
+ "failed",
425
+ ordered.length === 0
426
+ ? "no Submissions are known to the lane"
427
+ : `nonterminal submissions: ${nonterminal
428
+ .map((row) => `${row.submissionId}(${row.state})`)
429
+ .join(", ")}`,
430
+ ),
431
+ );
432
+ }
433
+
434
+ return IntegrityReport.make({
435
+ threadId: exported.threadId,
436
+ tailSequence: exported.tailSequence,
437
+ recordCount: records.length,
438
+ submissionCount: ordered.length,
439
+ checks,
440
+ ok: checks.every((result) => result.status !== "failed"),
441
+ });
442
+ });