effect-agent 0.1.0-beta.12 → 0.1.0-beta.121

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 (553) hide show
  1. package/dist/Agent-1DMSO_Fl.mjs +86 -0
  2. package/dist/Agent-1DMSO_Fl.mjs.map +1 -0
  3. package/dist/Agent-D9cXqfF3.d.mts +252 -0
  4. package/dist/AgentError-Bn1ytXRD.d.mts +117 -0
  5. package/dist/AgentPolicy-BqDoSXO6.d.mts +96 -0
  6. package/dist/AgentRuntime-BUxDdLpw.d.mts +346 -0
  7. package/dist/AgentRuntime-Cp1hAb-W.mjs +4739 -0
  8. package/dist/AgentRuntime-Cp1hAb-W.mjs.map +1 -0
  9. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  10. package/dist/ContextCompactor-WwSIG_Z2.d.mts +161 -0
  11. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  12. package/dist/DurableAgentRuntime-B-9w7jDt.mjs +7061 -0
  13. package/dist/DurableAgentRuntime-B-9w7jDt.mjs.map +1 -0
  14. package/dist/DurableFailpoint-Cnr3wx1L.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/EventSource-CnlZ3Kma.d.mts +51 -0
  17. package/dist/FailureDiagnostic-BElLOoED.mjs +274 -0
  18. package/dist/FailureDiagnostic-BElLOoED.mjs.map +1 -0
  19. package/dist/FailureDiagnostic-CaAkzGHL.d.mts +223 -0
  20. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  21. package/dist/InMemory.d.mts +24 -0
  22. package/dist/InMemory.mjs +24 -0
  23. package/dist/InMemory.mjs.map +1 -0
  24. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  25. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  26. package/dist/Messaging-Dkg87ebg.d.mts +221 -0
  27. package/dist/Messaging-JYYN3oYS.d.mts +1067 -0
  28. package/dist/MessagingHost-CqzpxbGz.d.mts +74 -0
  29. package/dist/MessagingHost-DfsbMPvq.mjs +110 -0
  30. package/dist/MessagingHost-DfsbMPvq.mjs.map +1 -0
  31. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  32. package/dist/Output-V-6YL1_Z.d.mts +25 -0
  33. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  34. package/dist/PageScreenshot-BpgZKAxl.d.mts +48 -0
  35. package/dist/PreparedInputAdmission-BQLGldl-.d.mts +42 -0
  36. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  37. package/dist/Records-D88mgvyS.d.mts +4214 -0
  38. package/dist/RunEvent-DIrzkjLr.d.mts +460 -0
  39. package/dist/RunEventSink-D5aVhISG.d.mts +108 -0
  40. package/dist/RunJournal-BXrq0VIK.mjs +931 -0
  41. package/dist/RunJournal-BXrq0VIK.mjs.map +1 -0
  42. package/dist/RunOptions-CSBsSj0X.d.mts +935 -0
  43. package/dist/RunPolicyUsage-ClZxyR46.d.mts +21 -0
  44. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  45. package/dist/Schedule-BIOHA6RR.d.mts +847 -0
  46. package/dist/Scheduling-DPb2QyAK.mjs +691 -0
  47. package/dist/Scheduling-DPb2QyAK.mjs.map +1 -0
  48. package/dist/Subagent-CNik9RiA.d.mts +1635 -0
  49. package/dist/Subagent-DCrB7an7.mjs +1498 -0
  50. package/dist/Subagent-DCrB7an7.mjs.map +1 -0
  51. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  52. package/dist/SubagentHost-4WB8Hj0C.d.mts +164 -0
  53. package/dist/Subscription-CRteOKRf.d.mts +948 -0
  54. package/dist/SubscriptionInput-oNcwTPti.d.mts +41 -0
  55. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  56. package/dist/ThreadHistory-tS1KwxHR.d.mts +60 -0
  57. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  58. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  59. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  60. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  61. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  62. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  63. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  64. package/dist/ToolExposure.d.mts +8 -0
  65. package/dist/ToolExposure.mjs +21 -0
  66. package/dist/ToolExposure.mjs.map +1 -0
  67. package/dist/ToolReconciler-BmVRAHKs.d.mts +80 -0
  68. package/dist/ToolResult-BKdqWRff.d.mts +78 -0
  69. package/dist/Usage-Dx0aknfk.d.mts +121 -0
  70. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  71. package/dist/Worker-CfwzMZEK.mjs +271 -0
  72. package/dist/Worker-CfwzMZEK.mjs.map +1 -0
  73. package/dist/Worker-fwWkBg12.d.mts +472 -0
  74. package/dist/agent-registration-CKNsrpwo.mjs +201 -0
  75. package/dist/agent-registration-CKNsrpwo.mjs.map +1 -0
  76. package/dist/capabilities/Approval.d.mts +114 -0
  77. package/dist/capabilities/Approval.mjs +226 -0
  78. package/dist/capabilities/Approval.mjs.map +1 -0
  79. package/dist/capabilities/Budget.d.mts +112 -0
  80. package/dist/capabilities/Budget.mjs +346 -0
  81. package/dist/capabilities/Budget.mjs.map +1 -0
  82. package/dist/capabilities/CodeMode.d.mts +157 -0
  83. package/dist/capabilities/CodeMode.mjs +522 -0
  84. package/dist/capabilities/CodeMode.mjs.map +1 -0
  85. package/dist/capabilities/Commands.d.mts +55 -0
  86. package/dist/capabilities/Commands.mjs +57 -0
  87. package/dist/capabilities/Commands.mjs.map +1 -0
  88. package/dist/capabilities/ContextTools.d.mts +321 -0
  89. package/dist/capabilities/ContextTools.mjs +126 -0
  90. package/dist/capabilities/ContextTools.mjs.map +1 -0
  91. package/dist/capabilities/Mcp.d.mts +108 -0
  92. package/dist/capabilities/Mcp.mjs +259 -0
  93. package/dist/capabilities/Mcp.mjs.map +1 -0
  94. package/dist/capabilities/McpClient.d.mts +115 -0
  95. package/dist/capabilities/McpClient.mjs +506 -0
  96. package/dist/capabilities/McpClient.mjs.map +1 -0
  97. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  98. package/dist/capabilities/MemoryNotes.mjs +128 -0
  99. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  100. package/dist/capabilities/Messaging.d.mts +3 -0
  101. package/dist/capabilities/Messaging.mjs +152 -0
  102. package/dist/capabilities/Messaging.mjs.map +1 -0
  103. package/dist/capabilities/ModelContext.d.mts +89 -0
  104. package/dist/capabilities/ModelContext.mjs +168 -0
  105. package/dist/capabilities/ModelContext.mjs.map +1 -0
  106. package/dist/capabilities/Redaction.d.mts +37 -0
  107. package/dist/capabilities/Redaction.mjs +104 -0
  108. package/dist/capabilities/Redaction.mjs.map +1 -0
  109. package/dist/capabilities/Remembering.d.mts +434 -0
  110. package/dist/capabilities/Remembering.mjs +290 -0
  111. package/dist/capabilities/Remembering.mjs.map +1 -0
  112. package/dist/capabilities/RunHooks.d.mts +82 -0
  113. package/dist/capabilities/RunHooks.mjs +144 -0
  114. package/dist/capabilities/RunHooks.mjs.map +1 -0
  115. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  116. package/dist/capabilities/SemanticMemory.mjs +315 -0
  117. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  118. package/dist/capabilities/Subagent.d.mts +4 -0
  119. package/dist/capabilities/Subagent.mjs +5 -0
  120. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  121. package/dist/capabilities/SubagentReservations.mjs +479 -0
  122. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  123. package/dist/capabilities/ToolDiscovery.d.mts +124 -0
  124. package/dist/capabilities/ToolDiscovery.mjs +230 -0
  125. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  126. package/dist/capabilities/WebCapture.d.mts +163 -0
  127. package/dist/capabilities/WebCapture.mjs +335 -0
  128. package/dist/capabilities/WebCapture.mjs.map +1 -0
  129. package/dist/capabilities/WebSearch.d.mts +71 -0
  130. package/dist/capabilities/WebSearch.mjs +115 -0
  131. package/dist/capabilities/WebSearch.mjs.map +1 -0
  132. package/dist/compaction-C2OTceKw.mjs +505 -0
  133. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  134. package/dist/core/Agent.d.mts +2 -0
  135. package/dist/core/Agent.mjs +2 -0
  136. package/dist/core/AgentError.d.mts +2 -0
  137. package/dist/core/AgentError.mjs +134 -0
  138. package/dist/core/AgentError.mjs.map +1 -0
  139. package/dist/core/AgentPolicy.d.mts +2 -0
  140. package/dist/core/AgentPolicy.mjs +94 -0
  141. package/dist/core/AgentPolicy.mjs.map +1 -0
  142. package/dist/core/AgentUpdates.d.mts +2 -0
  143. package/dist/core/AgentUpdates.mjs +63 -0
  144. package/dist/core/AgentUpdates.mjs.map +1 -0
  145. package/dist/core/FailureDiagnostic.d.mts +2 -0
  146. package/dist/core/FailureDiagnostic.mjs +2 -0
  147. package/dist/core/IdGenerator.d.mts +26 -0
  148. package/dist/core/IdGenerator.mjs +27 -0
  149. package/dist/core/IdGenerator.mjs.map +1 -0
  150. package/dist/core/Identifiers.d.mts +2 -0
  151. package/dist/core/Identifiers.mjs +43 -0
  152. package/dist/core/Identifiers.mjs.map +1 -0
  153. package/dist/core/Memory.d.mts +57 -0
  154. package/dist/core/Memory.mjs +203 -0
  155. package/dist/core/Memory.mjs.map +1 -0
  156. package/dist/core/MemoryNamespace.d.mts +2 -0
  157. package/dist/core/MemoryNamespace.mjs +116 -0
  158. package/dist/core/MemoryNamespace.mjs.map +1 -0
  159. package/dist/core/MemoryReference.d.mts +2 -0
  160. package/dist/core/MemoryReference.mjs +109 -0
  161. package/dist/core/MemoryReference.mjs.map +1 -0
  162. package/dist/core/MemoryRevalidation.d.mts +65 -0
  163. package/dist/core/MemoryRevalidation.mjs +126 -0
  164. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  165. package/dist/core/MemoryStore.d.mts +186 -0
  166. package/dist/core/MemoryStore.mjs +243 -0
  167. package/dist/core/MemoryStore.mjs.map +1 -0
  168. package/dist/core/Receipt.d.mts +2 -0
  169. package/dist/core/Receipt.mjs +36 -0
  170. package/dist/core/Receipt.mjs.map +1 -0
  171. package/dist/core/RememberingStore.d.mts +1562 -0
  172. package/dist/core/RememberingStore.mjs +190 -0
  173. package/dist/core/RememberingStore.mjs.map +1 -0
  174. package/dist/core/RunEvent.d.mts +2 -0
  175. package/dist/core/RunEvent.mjs +337 -0
  176. package/dist/core/RunEvent.mjs.map +1 -0
  177. package/dist/core/RunPolicyUsage.d.mts +2 -0
  178. package/dist/core/RunPolicyUsage.mjs +21 -0
  179. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  180. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  181. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  182. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  183. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  184. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  185. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  186. package/dist/core/SubagentContract.d.mts +2 -0
  187. package/dist/core/SubagentContract.mjs +148 -0
  188. package/dist/core/SubagentContract.mjs.map +1 -0
  189. package/dist/core/Thread.d.mts +2 -0
  190. package/dist/core/Thread.mjs +250 -0
  191. package/dist/core/Thread.mjs.map +1 -0
  192. package/dist/core/ToolResult.d.mts +2 -0
  193. package/dist/core/ToolResult.mjs +156 -0
  194. package/dist/core/ToolResult.mjs.map +1 -0
  195. package/dist/core/Usage.d.mts +2 -0
  196. package/dist/core/Usage.mjs +319 -0
  197. package/dist/core/Usage.mjs.map +1 -0
  198. package/dist/core/Worker.d.mts +3 -0
  199. package/dist/core/Worker.mjs +3 -0
  200. package/dist/durable/ActivityStore.d.mts +116 -0
  201. package/dist/durable/ActivityStore.mjs +131 -0
  202. package/dist/durable/ActivityStore.mjs.map +1 -0
  203. package/dist/durable/Admin.d.mts +2 -0
  204. package/dist/durable/Admin.mjs +330 -0
  205. package/dist/durable/Admin.mjs.map +1 -0
  206. package/dist/durable/AgentRegistration.d.mts +2 -0
  207. package/dist/durable/AgentRegistration.mjs +14 -0
  208. package/dist/durable/AgentRegistration.mjs.map +1 -0
  209. package/dist/durable/Certification.d.mts +110 -0
  210. package/dist/durable/Certification.mjs +159 -0
  211. package/dist/durable/Certification.mjs.map +1 -0
  212. package/dist/durable/CommittedActivity.d.mts +62 -0
  213. package/dist/durable/CommittedActivity.mjs +159 -0
  214. package/dist/durable/CommittedActivity.mjs.map +1 -0
  215. package/dist/durable/Digest.d.mts +2 -0
  216. package/dist/durable/Digest.mjs +50 -0
  217. package/dist/durable/Digest.mjs.map +1 -0
  218. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  219. package/dist/durable/DurableAgentRuntime.mjs +3 -0
  220. package/dist/durable/DurableFailpoint.d.mts +2 -0
  221. package/dist/durable/DurableFailpoint.mjs +102 -0
  222. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  223. package/dist/durable/DurableFailpointTestControl.d.mts +14 -0
  224. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  225. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  226. package/dist/durable/EventSource.d.mts +2 -0
  227. package/dist/durable/EventSource.mjs +65 -0
  228. package/dist/durable/EventSource.mjs.map +1 -0
  229. package/dist/durable/GitHubWorkflowSource.d.mts +185 -0
  230. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  231. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  232. package/dist/durable/MessageDelivery.d.mts +893 -0
  233. package/dist/durable/MessageDelivery.mjs +557 -0
  234. package/dist/durable/MessageDelivery.mjs.map +1 -0
  235. package/dist/durable/MessageDeliveryStoreConformance.d.mts +378 -0
  236. package/dist/durable/MessageDeliveryStoreConformance.mjs +270 -0
  237. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  238. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  239. package/dist/durable/OperationAuthorizer.mjs +70 -0
  240. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  241. package/dist/durable/PersistentHistory.d.mts +16 -0
  242. package/dist/durable/PersistentHistory.mjs +125 -0
  243. package/dist/durable/PersistentHistory.mjs.map +1 -0
  244. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  245. package/dist/durable/PreparedInputAdmission.mjs +38 -0
  246. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  247. package/dist/durable/Records.d.mts +2 -0
  248. package/dist/durable/Records.mjs +848 -0
  249. package/dist/durable/Records.mjs.map +1 -0
  250. package/dist/durable/Recovery.d.mts +2 -0
  251. package/dist/durable/Recovery.mjs +739 -0
  252. package/dist/durable/Recovery.mjs.map +1 -0
  253. package/dist/durable/RunJournal.d.mts +2 -0
  254. package/dist/durable/RunJournal.mjs +2 -0
  255. package/dist/durable/Schedule.d.mts +2 -0
  256. package/dist/durable/Schedule.mjs +391 -0
  257. package/dist/durable/Schedule.mjs.map +1 -0
  258. package/dist/durable/ScheduleStoreConformance.d.mts +17 -0
  259. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  260. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  261. package/dist/durable/ScheduleTransition.d.mts +24 -0
  262. package/dist/durable/ScheduleTransition.mjs +180 -0
  263. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  264. package/dist/durable/Scheduling.d.mts +54 -0
  265. package/dist/durable/Scheduling.mjs +2 -0
  266. package/dist/durable/SqlMemoryStore.d.mts +29 -0
  267. package/dist/durable/SqlMemoryStore.mjs +436 -0
  268. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  269. package/dist/durable/SqlMessageDeliveryStore.d.mts +42 -0
  270. package/dist/durable/SqlMessageDeliveryStore.mjs +179 -0
  271. package/dist/durable/SqlMessageDeliveryStore.mjs.map +1 -0
  272. package/dist/durable/SqlStorageV2Upgrade.d.mts +21 -0
  273. package/dist/durable/SqlStorageV2Upgrade.mjs +459 -0
  274. package/dist/durable/SqlStorageV2Upgrade.mjs.map +1 -0
  275. package/dist/durable/SqlSubscriptionStore.d.mts +62 -0
  276. package/dist/durable/SqlSubscriptionStore.mjs +751 -0
  277. package/dist/durable/SqlSubscriptionStore.mjs.map +1 -0
  278. package/dist/durable/SqlThreadNativeReads.d.mts +53 -0
  279. package/dist/durable/SqlThreadNativeReads.mjs +159 -0
  280. package/dist/durable/SqlThreadNativeReads.mjs.map +1 -0
  281. package/dist/durable/SubmissionLedger.d.mts +3 -0
  282. package/dist/durable/SubmissionLedger.mjs +959 -0
  283. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  284. package/dist/durable/SubmissionLedgerConformance.d.mts +29 -0
  285. package/dist/durable/SubmissionLedgerConformance.mjs +2187 -0
  286. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  287. package/dist/durable/SubmissionStatus.d.mts +2 -0
  288. package/dist/durable/SubmissionStatus.mjs +18 -0
  289. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  290. package/dist/durable/Subscription.d.mts +2 -0
  291. package/dist/durable/Subscription.mjs +360 -0
  292. package/dist/durable/Subscription.mjs.map +1 -0
  293. package/dist/durable/SubscriptionInput.d.mts +2 -0
  294. package/dist/durable/SubscriptionInput.mjs +52 -0
  295. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  296. package/dist/durable/SubscriptionStoreConformance.d.mts +16 -0
  297. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  298. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  299. package/dist/durable/SubscriptionTools.d.mts +273 -0
  300. package/dist/durable/SubscriptionTools.mjs +190 -0
  301. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  302. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  303. package/dist/durable/SubscriptionTransition.mjs +148 -0
  304. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  305. package/dist/durable/Subscriptions.d.mts +73 -0
  306. package/dist/durable/Subscriptions.mjs +627 -0
  307. package/dist/durable/Subscriptions.mjs.map +1 -0
  308. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  309. package/dist/durable/ThreadContextHistory.mjs +152 -0
  310. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  311. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  312. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  313. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  314. package/dist/durable/ThreadInvariants.d.mts +76 -0
  315. package/dist/durable/ThreadInvariants.mjs +246 -0
  316. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  317. package/dist/durable/ThreadProjection.d.mts +78 -0
  318. package/dist/durable/ThreadProjection.mjs +158 -0
  319. package/dist/durable/ThreadProjection.mjs.map +1 -0
  320. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  321. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  322. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  323. package/dist/durable/ThreadStore.d.mts +2 -0
  324. package/dist/durable/ThreadStore.mjs +355 -0
  325. package/dist/durable/ThreadStore.mjs.map +1 -0
  326. package/dist/durable/ThreadStoreConformance.d.mts +28 -0
  327. package/dist/durable/ThreadStoreConformance.mjs +503 -0
  328. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  329. package/dist/durable/ToolReconciler.d.mts +2 -0
  330. package/dist/durable/ToolReconciler.mjs +85 -0
  331. package/dist/durable/ToolReconciler.mjs.map +1 -0
  332. package/dist/durable/WakeScheduler.d.mts +2 -0
  333. package/dist/durable/WakeScheduler.mjs +85 -0
  334. package/dist/durable/WakeScheduler.mjs.map +1 -0
  335. package/dist/durable/WorkerHost.d.mts +129 -0
  336. package/dist/durable/WorkerHost.mjs +77 -0
  337. package/dist/durable/WorkerHost.mjs.map +1 -0
  338. package/dist/engine/AgentRuntime.d.mts +2 -0
  339. package/dist/engine/AgentRuntime.mjs +2 -0
  340. package/dist/engine/Compaction.d.mts +7 -0
  341. package/dist/engine/Compaction.mjs +16 -0
  342. package/dist/engine/Compaction.mjs.map +1 -0
  343. package/dist/engine/ContextCompactor.d.mts +2 -0
  344. package/dist/engine/ContextCompactor.mjs +119 -0
  345. package/dist/engine/ContextCompactor.mjs.map +1 -0
  346. package/dist/engine/ContextHistory.d.mts +65 -0
  347. package/dist/engine/ContextHistory.mjs +76 -0
  348. package/dist/engine/ContextHistory.mjs.map +1 -0
  349. package/dist/engine/ContextWindow.d.mts +2 -0
  350. package/dist/engine/ContextWindow.mjs +59 -0
  351. package/dist/engine/ContextWindow.mjs.map +1 -0
  352. package/dist/engine/DurableStep.d.mts +2 -0
  353. package/dist/engine/DurableStep.mjs +62 -0
  354. package/dist/engine/DurableStep.mjs.map +1 -0
  355. package/dist/engine/MessagingHost.d.mts +2 -0
  356. package/dist/engine/MessagingHost.mjs +2 -0
  357. package/dist/engine/Output.d.mts +2 -0
  358. package/dist/engine/Output.mjs +8 -0
  359. package/dist/engine/Output.mjs.map +1 -0
  360. package/dist/engine/RunEventSink.d.mts +2 -0
  361. package/dist/engine/RunEventSink.mjs +22 -0
  362. package/dist/engine/RunEventSink.mjs.map +1 -0
  363. package/dist/engine/RunOptions.d.mts +2 -0
  364. package/dist/engine/RunOptions.mjs +124 -0
  365. package/dist/engine/RunOptions.mjs.map +1 -0
  366. package/dist/engine/SubagentHost.d.mts +2 -0
  367. package/dist/engine/SubagentHost.mjs +76 -0
  368. package/dist/engine/SubagentHost.mjs.map +1 -0
  369. package/dist/engine/ThreadHistory.d.mts +2 -0
  370. package/dist/engine/ThreadHistory.mjs +67 -0
  371. package/dist/engine/ThreadHistory.mjs.map +1 -0
  372. package/dist/engine/ToolBroker.d.mts +2 -0
  373. package/dist/engine/ToolBroker.mjs +42 -0
  374. package/dist/engine/ToolBroker.mjs.map +1 -0
  375. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  376. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  377. package/dist/index.d.mts +91 -6
  378. package/dist/index.mjs +100 -6
  379. package/dist/output-contract-BC7tjlGw.mjs +84 -0
  380. package/dist/output-contract-BC7tjlGw.mjs.map +1 -0
  381. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  382. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  383. package/dist/sandbox/CodeExecutor.mjs +278 -0
  384. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  385. package/dist/sandbox/InteractiveBrowser.d.mts +257 -0
  386. package/dist/sandbox/InteractiveBrowser.mjs +236 -0
  387. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  388. package/dist/sandbox/PageCapture.d.mts +2 -0
  389. package/dist/sandbox/PageCapture.mjs +450 -0
  390. package/dist/sandbox/PageCapture.mjs.map +1 -0
  391. package/dist/sandbox/PageCrawl.d.mts +88 -0
  392. package/dist/sandbox/PageCrawl.mjs +124 -0
  393. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  394. package/dist/sandbox/PageScreenshot.d.mts +2 -0
  395. package/dist/sandbox/PageScreenshot.mjs +53 -0
  396. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  397. package/dist/sandbox/ProtectedBrowser.d.mts +283 -0
  398. package/dist/sandbox/ProtectedBrowser.mjs +298 -0
  399. package/dist/sandbox/ProtectedBrowser.mjs.map +1 -0
  400. package/dist/sandbox/Sandbox.d.mts +2 -0
  401. package/dist/sandbox/Sandbox.mjs +208 -0
  402. package/dist/sandbox/Sandbox.mjs.map +1 -0
  403. package/dist/utf8-BYfhEkcj.mjs +11 -0
  404. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  405. package/dist/utf8-DchGZRBd.mjs +23 -0
  406. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  407. package/package.json +1 -40
  408. package/src/InMemory.ts +19 -0
  409. package/src/ToolExposure.ts +2 -0
  410. package/src/capabilities/Approval.ts +352 -0
  411. package/src/capabilities/Budget.ts +536 -0
  412. package/src/capabilities/CodeMode.ts +1090 -0
  413. package/src/capabilities/Commands.ts +86 -0
  414. package/src/capabilities/ContextTools.ts +184 -0
  415. package/src/capabilities/Mcp.ts +426 -0
  416. package/src/capabilities/McpClient.ts +967 -0
  417. package/src/capabilities/MemoryNotes.ts +174 -0
  418. package/src/capabilities/Messaging.ts +261 -0
  419. package/src/capabilities/ModelContext.ts +354 -0
  420. package/src/capabilities/Redaction.ts +157 -0
  421. package/src/capabilities/Remembering.ts +550 -0
  422. package/src/capabilities/RunHooks.ts +280 -0
  423. package/src/capabilities/SemanticMemory.ts +447 -0
  424. package/src/capabilities/Subagent.ts +2489 -0
  425. package/src/capabilities/SubagentReservations.ts +850 -0
  426. package/src/capabilities/ToolDiscovery.ts +369 -0
  427. package/src/capabilities/WebCapture.ts +722 -0
  428. package/src/capabilities/WebSearch.ts +190 -0
  429. package/src/capabilities/internal/subagent-background.ts +1273 -0
  430. package/src/capabilities/internal/subagent-contract.ts +146 -0
  431. package/src/capabilities/internal/subagent-policy.ts +235 -0
  432. package/src/capabilities/internal/subagent-reporting.ts +136 -0
  433. package/src/capabilities/internal/utf8.ts +10 -0
  434. package/src/core/Agent.ts +602 -0
  435. package/src/core/AgentError.ts +172 -0
  436. package/src/core/AgentPolicy.ts +153 -0
  437. package/src/core/AgentUpdates.ts +100 -0
  438. package/src/core/FailureDiagnostic.ts +343 -0
  439. package/src/core/IdGenerator.ts +39 -0
  440. package/src/core/Identifiers.ts +48 -0
  441. package/src/core/Memory.ts +290 -0
  442. package/src/core/MemoryNamespace.ts +196 -0
  443. package/src/core/MemoryReference.ts +121 -0
  444. package/src/core/MemoryRevalidation.ts +185 -0
  445. package/src/core/MemoryStore.ts +368 -0
  446. package/src/core/Messaging.ts +72 -0
  447. package/src/core/Receipt.ts +42 -0
  448. package/src/core/RememberingStore.ts +300 -0
  449. package/src/core/RunEvent.ts +366 -0
  450. package/src/core/RunPolicyUsage.ts +17 -0
  451. package/src/core/SemanticMemoryIndex.ts +250 -0
  452. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  453. package/src/core/SubagentContract.ts +196 -0
  454. package/src/core/Thread.ts +371 -0
  455. package/src/core/ToolExposure.ts +74 -0
  456. package/src/core/ToolResult.ts +190 -0
  457. package/src/core/Usage.ts +529 -0
  458. package/src/core/Worker.ts +240 -0
  459. package/src/core/internal/agent-updates.ts +34 -0
  460. package/src/core/internal/message-status.ts +60 -0
  461. package/src/core/internal/strict-schema.ts +14 -0
  462. package/src/core/internal/utf8.ts +23 -0
  463. package/src/durable/ActivityStore.ts +160 -0
  464. package/src/durable/Admin.ts +505 -0
  465. package/src/durable/AgentRegistration.ts +14 -0
  466. package/src/durable/Certification.ts +210 -0
  467. package/src/durable/CommittedActivity.ts +296 -0
  468. package/src/durable/Digest.ts +87 -0
  469. package/src/durable/DurableAgentRuntime.ts +11275 -0
  470. package/src/durable/DurableFailpoint.ts +111 -0
  471. package/src/durable/DurableFailpointTestControl.ts +39 -0
  472. package/src/durable/EventSource.ts +172 -0
  473. package/src/durable/GitHubWorkflowSource.ts +447 -0
  474. package/src/durable/MessageDelivery.ts +832 -0
  475. package/src/durable/MessageDeliveryStoreConformance.ts +410 -0
  476. package/src/durable/OperationAuthorizer.ts +85 -0
  477. package/src/durable/PersistentHistory.ts +260 -0
  478. package/src/durable/PreparedInputAdmission.ts +57 -0
  479. package/src/durable/Records.ts +1075 -0
  480. package/src/durable/Recovery.ts +1018 -0
  481. package/src/durable/RunJournal.ts +1631 -0
  482. package/src/durable/Schedule.ts +513 -0
  483. package/src/durable/ScheduleStoreConformance.ts +638 -0
  484. package/src/durable/ScheduleTransition.ts +265 -0
  485. package/src/durable/Scheduling.ts +1077 -0
  486. package/src/durable/SqlMemoryStore.ts +778 -0
  487. package/src/durable/SqlMessageDeliveryStore.ts +335 -0
  488. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  489. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  490. package/src/durable/SqlThreadNativeReads.ts +270 -0
  491. package/src/durable/SubmissionLedger.ts +1265 -0
  492. package/src/durable/SubmissionLedgerConformance.ts +4820 -0
  493. package/src/durable/SubmissionStatus.ts +14 -0
  494. package/src/durable/Subscription.ts +544 -0
  495. package/src/durable/SubscriptionInput.ts +144 -0
  496. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  497. package/src/durable/SubscriptionTools.ts +327 -0
  498. package/src/durable/SubscriptionTransition.ts +302 -0
  499. package/src/durable/Subscriptions.ts +1210 -0
  500. package/src/durable/ThreadContextHistory.ts +227 -0
  501. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  502. package/src/durable/ThreadInvariants.ts +507 -0
  503. package/src/durable/ThreadProjection.ts +269 -0
  504. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  505. package/src/durable/ThreadStore.ts +573 -0
  506. package/src/durable/ThreadStoreConformance.ts +1156 -0
  507. package/src/durable/ToolReconciler.ts +109 -0
  508. package/src/durable/WakeScheduler.ts +134 -0
  509. package/src/durable/WorkerHost.ts +171 -0
  510. package/src/durable/internal/agent-registration.ts +587 -0
  511. package/src/durable/internal/agent-updates.ts +302 -0
  512. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  513. package/src/durable/internal/journal-checkpoint.ts +104 -0
  514. package/src/durable/internal/journal-metadata.ts +117 -0
  515. package/src/durable/internal/message-status.ts +20 -0
  516. package/src/durable/internal/messaging-host.ts +637 -0
  517. package/src/durable/internal/schedule-time.ts +303 -0
  518. package/src/durable/internal/storage-v2-layout.ts +163 -0
  519. package/src/durable/internal/storage-v2.ts +73 -0
  520. package/src/durable/internal/worker-host.ts +2885 -0
  521. package/src/durable/internal/worker-runtime.ts +9 -0
  522. package/src/engine/AgentRuntime.ts +37 -0
  523. package/src/engine/Compaction.ts +11 -0
  524. package/src/engine/ContextCompactor.ts +277 -0
  525. package/src/engine/ContextHistory.ts +73 -0
  526. package/src/engine/ContextWindow.ts +72 -0
  527. package/src/engine/DurableStep.ts +132 -0
  528. package/src/engine/MessagingHost.ts +110 -0
  529. package/src/engine/Output.ts +2 -0
  530. package/src/engine/RunEventSink.ts +132 -0
  531. package/src/engine/RunOptions.ts +1101 -0
  532. package/src/engine/SubagentHost.ts +230 -0
  533. package/src/engine/ThreadHistory.ts +120 -0
  534. package/src/engine/ToolBroker.ts +157 -0
  535. package/src/engine/ToolExposure.ts +48 -0
  536. package/src/engine/internal/agent-runtime.ts +10500 -0
  537. package/src/engine/internal/bounded-value.ts +315 -0
  538. package/src/engine/internal/compaction.ts +678 -0
  539. package/src/engine/internal/error-diagnostic.ts +39 -0
  540. package/src/engine/internal/output-contract.ts +173 -0
  541. package/src/engine/internal/primitive-delta.ts +80 -0
  542. package/src/engine/internal/provider-result-staging.ts +211 -0
  543. package/src/engine/internal/tool-derivative.ts +106 -0
  544. package/src/engine/internal/tool-exposure.ts +224 -0
  545. package/src/engine/internal/tool-telemetry.ts +484 -0
  546. package/src/index.ts +99 -21
  547. package/src/sandbox/CodeExecutor.ts +352 -0
  548. package/src/sandbox/InteractiveBrowser.ts +339 -0
  549. package/src/sandbox/PageCapture.ts +691 -0
  550. package/src/sandbox/PageCrawl.ts +148 -0
  551. package/src/sandbox/PageScreenshot.ts +81 -0
  552. package/src/sandbox/ProtectedBrowser.ts +452 -0
  553. package/src/sandbox/Sandbox.ts +241 -0
@@ -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":";;;;;;;;;;;;;;;;;AAsBA,IAAa,oBAAb,cAAuC,OAAO,MAC5C,wCACF,CAAC,CAAC;CACA,YAAY;CACZ,UAAU,iBAAiB,OAAO;CAClC,MAAM,iBAAiB,OAAO;CAC9B,OAAO;AACT,CAAC,CAAC,CAAC,CAAC;;AAGJ,MAAa,iBAAiB,OAAO,MAAM,CAAC,uBAAuB,mBAAmB,CAAC;;;;;;;AASvF,IAAa,0BAAb,cAA6C,OAAO,MAClD,8CACF,CAAC,CAAC;CACA,OAAO;CACP,YAAY;CACZ,WAAW,OAAO,YAAY,iBAAiB;CAC/C,SAAS,OAAO,YAAY,eAAe;CAC3C,QAAQ,OAAO,YAAY,cAAc;AAC3C,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;AAiBJ,IAAa,mBAAb,cAAsC,OAAO,MAC3C,uCACF,CAAC,CAAC;CACA,eAAe,OAAO,QAAQ,CAAC;CAC/B,UAAU;CACV,iBAAiB;CACjB,YAAY;CACZ,QAAQ,OAAO,MAAM,aAAa;CAClC,cAAc,OAAO,MAAM,aAAa;CACxC,eAAe,OAAO,MAAM,KAAK;CACjC,YAAY,OAAO,MAAM,KAAK;CAC9B,aAAa,OAAO,MAAM,uBAAuB;CACjD,eAAe,OAAO,MAAM,cAAc;CAC1C,eAAe,OAAO,MAAM,iBAAiB;CAC7C,kBAAkB,OAAO,MAAM,eAAe;CAC9C,WAAW,OAAO,MAAM,cAAc;CACtC,qBAAqB,OAAO,MAAM,uBAAuB;CACzD,YAAY,OAAO,YAAY,uBAAuB;AACxD,CAAC,CAAC,CAAC,CAAC;AAEJ,MAAa,2BAA2B,aACtC,iBAAiB,KAAK;CACpB,eAAe;CACf;CACA,iBAAiB,OAAO,WAAW,iBAAiB,CAAC,CAAC,CAAC;CACvD,YAAY;CACZ,QAAQ,CAAC;CACT,cAAc,CAAC;CACf,eAAe,CAAC;CAChB,YAAY,CAAC;CACb,aAAa,CAAC;CACd,eAAe,CAAC;CAChB,eAAe,CAAC;CAChB,kBAAkB,CAAC;CACnB,WAAW,CAAC;CACZ,qBAAqB,CAAC;AACxB,CAAC;;;;;;AAOH,MAAM,4BACJ,aACA,YAC2C;CAC3C,MAAM,WAAW,YAAY,MAC1B,eACC,WAAW,UAAU,QAAQ,SAAS,WAAW,eAAe,QAAQ,UAC5E;CAEA,MAAM,YACJ,UAAU,cAAc,QAAQ,SAAS,sBAAsB,UAAU,KAAA;CAE3E,MAAM,UAAU,UAAU,YAAY,QAAQ,SAAS,oBAAoB,UAAU,KAAA;CACrF,MAAM,SAAS,UAAU,WAAW,QAAQ,SAAS,mBAAmB,UAAU,KAAA;CAElF,MAAM,OAAO,wBAAwB,KAAK;EACxC,OAAO,QAAQ;EACf,YAAY,QAAQ;EACpB,GAAI,cAAc,KAAA,IAAY,CAAC,IAAI,EAAE,UAAU;EAC/C,GAAI,YAAY,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ;EAC3C,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO;CAC3C,CAAC;CAED,OAAO,aAAa,KAAA,IAChB,CAAC,GAAG,aAAa,IAAI,IACrB,YAAY,KAAK,eACf,WAAW,UAAU,QAAQ,SAAS,WAAW,eAAe,QAAQ,aACpE,OACA,UACN;AACN;;AAGA,MAAa,sBACX,YACA,UACA,aAAqB,WAAW,eACX;CACrB,MAAM,UAAU,SAAS,OAAO;CAEhC,MAAM,SACJ,QAAQ,SAAS,sBACb,CAAC,GAAG,WAAW,QAAQ,QAAQ,KAAK,IACpC,WAAW;CAEjB,MAAM,eACJ,QAAQ,SAAS,mBACb,CAAC,GAAG,WAAW,cAAc,QAAQ,MAAM,IAC3C,WAAW;CAEjB,MAAM,gBACJ,QAAQ,SAAS,iBACb,CAAC,GAAG,WAAW,eAAe,QAAQ,KAAK,IAC3C,WAAW;CAEjB,MAAM,aACJ,QAAQ,SAAS,cACb,CAAC,GAAG,WAAW,YAAY,QAAQ,KAAK,IACxC,WAAW;CAEjB,MAAM,cACJ,QAAQ,SAAS,sBACb,CAAC,GAAG,WAAW,aAAa,OAAO,IACnC,WAAW;CAEjB,MAAM,gBACJ,QAAQ,SAAS,mBACb,CAAC,GAAG,WAAW,eAAe,OAAO,IACrC,WAAW;CAKjB,MAAM,gBACJ,QAAQ,SAAS,qBACb,WAAW,cAAc,MACtB,SAAS,KAAK,UAAU,QAAQ,SAAS,KAAK,eAAe,QAAQ,UACxE,IACE,WAAW,gBACX,CACE,GAAG,WAAW,eACd,kBAAkB,KAAK;EACrB,YAAY,QAAQ;EACpB,UAAU,QAAQ;EAClB,MAAM,QAAQ;EACd,OAAO,QAAQ;CACjB,CAAC,CACH,IACF,QAAQ,SAAS,qBAAqB,QAAQ,SAAS,qBACrD,WAAW,cAAc,QACtB,SAAS,KAAK,UAAU,QAAQ,SAAS,KAAK,eAAe,QAAQ,UACxE,IACA,WAAW;CAEnB,MAAM,mBACJ,QAAQ,SAAS,oBACb,CAAC,GAAG,WAAW,kBAAkB,OAAO,IACxC,WAAW;CAEjB,MAAM,YACJ,QAAQ,SAAS,2BAA2B,QAAQ,SAAS,wBACzD,CAAC,GAAG,WAAW,WAAW,OAAO,IACjC,WAAW;CAEjB,MAAM,sBACJ,QAAQ,SAAS,uBACjB,QAAQ,SAAS,qBACjB,QAAQ,SAAS,mBACb,yBAAyB,WAAW,qBAAqB,OAAO,IAChE,WAAW;CAGjB,MAAM,aACJ,WAAW,eAAe,QAAQ,SAAS,4BAA4B,UAAU,KAAA;CAEnF,OAAO,iBAAiB,KAAK;EAC3B,eAAe;EACf,UAAU,WAAW;EACrB,iBAAiB,SAAS;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAI,eAAe,KAAA,IAAY,CAAC,IAAI,EAAE,WAAW;CACnD,CAAC;AACH;;AAGA,MAAa,gBACX,UACA,SACA,aAAqB,sBAErB,2BAA2B,wBAAwB,QAAQ,GAAG,SAAS,UAAU;;;;;;AAOnF,MAAa,8BACX,YACA,SACA,aAAqB,WAAW,eACX;CACrB,IAAI,aAAa;CAEjB,KAAK,MAAM,UAAU,SACnB,aAAa,mBAAmB,YAAY,QAAQ,UAAU;CAGhE,OAAO;AACT"}
@@ -0,0 +1,49 @@
1
+ import { Zt as AppendResult, en as FencedAppendRequest } from "../Records-D88mgvyS.mjs";
2
+ import { Context, Effect, Layer, Option, Schema } from "effect";
3
+ declare namespace ThreadProjectionMaintenance_d_exports {
4
+ export { ThreadProjectionError, ThreadProjectionMaintenance, ThreadProjectionMaintenanceService, drainDue };
5
+ }
6
+ declare const ThreadProjectionError_base: Schema.Class<ThreadProjectionError, Schema.TaggedStruct<"ThreadProjectionError", {
7
+ readonly operation: Schema.String;
8
+ readonly message: Schema.String;
9
+ readonly cause: Schema.optionalKey<Schema.Defect>;
10
+ }>, import("effect/Cause").YieldableError>;
11
+ /** A derived projection failed; the canonical source remains authoritative. */
12
+ export declare class ThreadProjectionError extends ThreadProjectionError_base {}
13
+ /**
14
+ * Host-owned, disposable indexes over a canonical Thread. Hooks receive raw local source
15
+ * ports at construction and must not mutate them or acquire source producer ownership.
16
+ * Rows and their contiguous watermark commit atomically; an empty projection still consumes
17
+ * its record. Concurrent work must compare the starting watermark before committing.
18
+ *
19
+ * No method owns a scheduler. The platform owns wakeups, durable scheduling metadata and
20
+ * source-producer fencing. Per-call resources belong to Scope; interruption remains interruption.
21
+ */
22
+ export interface ThreadProjectionMaintenanceService {
23
+ /**
24
+ * Runs after a successful source commit and before dependent Tools can execute. An index
25
+ * caught up through firstSequence - 1 must process the entire committed range, including
26
+ * empty records, before returning. Canonical batches contain at most 256 records: chunk
27
+ * within local byte limits and stop at result.lastSequence, never chase a changing tail.
28
+ * An earlier gap defers to drain. Replayed or superseded ranges are idempotent no-ops.
29
+ * Failure must leave the unprocessed prefix visible to pendingDeadline.
30
+ */
31
+ readonly applyCommitted: (request: FencedAppendRequest, result: AppendResult) => Effect.Effect<void, ThreadProjectionError>;
32
+ /** One bounded, restartable backfill batch. Never drain until caught up in a loop. */
33
+ readonly drain: Effect.Effect<void, ThreadProjectionError>;
34
+ /**
35
+ * Bounded local inspection. None means caught up; a pending epoch-millisecond deadline
36
+ * survives reconstruction and repeated reads must not postpone it. Projection backlog
37
+ * does not gate canonical execution or host approval publication.
38
+ */
39
+ readonly pendingDeadline: Effect.Effect<Option.Option<number>, ThreadProjectionError>;
40
+ }
41
+ declare const ThreadProjectionMaintenance_base: Context.ServiceClass<ThreadProjectionMaintenance, "@effect-agent/thread/ThreadProjectionMaintenance", ThreadProjectionMaintenanceService>;
42
+ export declare class ThreadProjectionMaintenance extends ThreadProjectionMaintenance_base {
43
+ static readonly layer: Layer.Layer<ThreadProjectionMaintenance, never, never>;
44
+ }
45
+ /** Run at most one due backfill batch, preserving typed failures, defects and interruption. */
46
+ export declare const drainDue: Effect.Effect<boolean, ThreadProjectionError, ThreadProjectionMaintenance>;
47
+ //#endregion
48
+ export { ThreadProjectionMaintenance_d_exports as t };
49
+ //# sourceMappingURL=ThreadProjectionMaintenance.d.mts.map
@@ -0,0 +1,33 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { Clock, Context, Effect, Layer, Option, Schema } from "effect";
3
+ //#region src/durable/ThreadProjectionMaintenance.ts
4
+ var ThreadProjectionMaintenance_exports = /* @__PURE__ */ __exportAll({
5
+ ThreadProjectionError: () => ThreadProjectionError,
6
+ ThreadProjectionMaintenance: () => ThreadProjectionMaintenance,
7
+ drainDue: () => drainDue
8
+ });
9
+ /** A derived projection failed; the canonical source remains authoritative. */
10
+ var ThreadProjectionError = class extends Schema.TaggedError()("ThreadProjectionError", {
11
+ operation: Schema.String,
12
+ message: Schema.String,
13
+ cause: Schema.optionalKey(Schema.Defect())
14
+ }) {};
15
+ var ThreadProjectionMaintenance = class extends Context.Service()("@effect-agent/thread/ThreadProjectionMaintenance") {
16
+ static layer = Layer.succeed(this)({
17
+ applyCommitted: () => Effect.void,
18
+ drain: Effect.void,
19
+ pendingDeadline: Effect.succeed(Option.none())
20
+ });
21
+ };
22
+ /** Run at most one due backfill batch, preserving typed failures, defects and interruption. */
23
+ const drainDue = Effect.gen(function* () {
24
+ const projection = yield* ThreadProjectionMaintenance;
25
+ const deadline = yield* projection.pendingDeadline;
26
+ if (Option.isNone(deadline) || deadline.value > (yield* Clock.currentTimeMillis)) return false;
27
+ yield* projection.drain;
28
+ return true;
29
+ });
30
+ //#endregion
31
+ export { ThreadProjectionError, ThreadProjectionMaintenance, drainDue, ThreadProjectionMaintenance_exports as t };
32
+
33
+ //# sourceMappingURL=ThreadProjectionMaintenance.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadProjectionMaintenance.mjs","names":[],"sources":["../../src/durable/ThreadProjectionMaintenance.ts"],"sourcesContent":["import { Clock, Context, Effect, Layer, Option, Schema } from \"effect\";\n\nimport type { AppendResult, FencedAppendRequest } from \"./ThreadStore.ts\";\n\n/** A derived projection failed; the canonical source remains authoritative. */\nexport class ThreadProjectionError extends Schema.TaggedError<ThreadProjectionError>()(\n \"ThreadProjectionError\",\n {\n operation: Schema.String,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\n/**\n * Host-owned, disposable indexes over a canonical Thread. Hooks receive raw local source\n * ports at construction and must not mutate them or acquire source producer ownership.\n * Rows and their contiguous watermark commit atomically; an empty projection still consumes\n * its record. Concurrent work must compare the starting watermark before committing.\n *\n * No method owns a scheduler. The platform owns wakeups, durable scheduling metadata and\n * source-producer fencing. Per-call resources belong to Scope; interruption remains interruption.\n */\nexport interface ThreadProjectionMaintenanceService {\n /**\n * Runs after a successful source commit and before dependent Tools can execute. An index\n * caught up through firstSequence - 1 must process the entire committed range, including\n * empty records, before returning. Canonical batches contain at most 256 records: chunk\n * within local byte limits and stop at result.lastSequence, never chase a changing tail.\n * An earlier gap defers to drain. Replayed or superseded ranges are idempotent no-ops.\n * Failure must leave the unprocessed prefix visible to pendingDeadline.\n */\n readonly applyCommitted: (\n request: FencedAppendRequest,\n result: AppendResult,\n ) => Effect.Effect<void, ThreadProjectionError>;\n /** One bounded, restartable backfill batch. Never drain until caught up in a loop. */\n readonly drain: Effect.Effect<void, ThreadProjectionError>;\n /**\n * Bounded local inspection. None means caught up; a pending epoch-millisecond deadline\n * survives reconstruction and repeated reads must not postpone it. Projection backlog\n * does not gate canonical execution or host approval publication.\n */\n readonly pendingDeadline: Effect.Effect<Option.Option<number>, ThreadProjectionError>;\n}\n\nexport class ThreadProjectionMaintenance extends Context.Service<\n ThreadProjectionMaintenance,\n ThreadProjectionMaintenanceService\n>()(\"@effect-agent/thread/ThreadProjectionMaintenance\") {\n static readonly layer = Layer.succeed(this)({\n applyCommitted: () => Effect.void,\n drain: Effect.void,\n pendingDeadline: Effect.succeed(Option.none()),\n });\n}\n\n/** Run at most one due backfill batch, preserving typed failures, defects and interruption. */\nexport const drainDue = Effect.gen(function* () {\n const projection = yield* ThreadProjectionMaintenance;\n const deadline = yield* projection.pendingDeadline;\n\n if (Option.isNone(deadline) || deadline.value > (yield* Clock.currentTimeMillis)) return false;\n yield* projection.drain;\n\n return true;\n});\n"],"mappings":";;;;;;;;;AAKA,IAAa,wBAAb,cAA2C,OAAO,YAAmC,CAAC,CACpF,yBACA;CACE,WAAW,OAAO;CAClB,SAAS,OAAO;CAChB,OAAO,OAAO,YAAY,OAAO,OAAO,CAAC;AAC3C,CACF,CAAC,CAAC,CAAC;AAkCH,IAAa,8BAAb,cAAiD,QAAQ,QAGvD,CAAC,CAAC,kDAAkD,CAAC,CAAC;CACtD,OAAgB,QAAQ,MAAM,QAAQ,IAAI,CAAC,CAAC;EAC1C,sBAAsB,OAAO;EAC7B,OAAO,OAAO;EACd,iBAAiB,OAAO,QAAQ,OAAO,KAAK,CAAC;CAC/C,CAAC;AACH;;AAGA,MAAa,WAAW,OAAO,IAAI,aAAa;CAC9C,MAAM,aAAa,OAAO;CAC1B,MAAM,WAAW,OAAO,WAAW;CAEnC,IAAI,OAAO,OAAO,QAAQ,KAAK,SAAS,SAAS,OAAO,MAAM,oBAAoB,OAAO;CACzF,OAAO,WAAW;CAElB,OAAO;AACT,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { $t as FenceRejected, An as getRecord, Cn as ThreadStoreDiagnostic, Dn as ThreadTail, Mn as readOutstanding, Nn as readWorkerState, On as ThreadTailRequest, Qt as CheckpointRejected, Sn as ThreadStore, Tn as ThreadStoreFailure, Xt as AppendConflict, Zt as AppendResult, _n as ThreadReadRequest, an as SelectedThreadRead, bn as ThreadRunInputRequest, cn as ThreadExport, dn as ThreadNotMaterialized, en as FencedAppendRequest, fn as ThreadObservation, gn as ThreadRead, hn as ThreadPeerCountRequest, in as SaveRecoveryCheckpointRequest, jn as getRunInput, kn as ThreadWorkerStateRequest, ln as ThreadExportRequest, mn as ThreadOutstandingRequest, nn as MAX_THREAD_EXPORT_RECORDS, on as ThreadCheckpoint, pn as ThreadOutstanding, rn as SaveCheckpointRequest, sn as ThreadCheckpoints, tn as LoadCheckpointRequest, un as ThreadMaterialization, vn as ThreadRecordRequest, wn as ThreadStoreError, xn as ThreadSelection, yn as ThreadRecoveryCheckpoints } from "../Records-D88mgvyS.mjs";
2
+ export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadCheckpoints, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstanding, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRecoveryCheckpoints, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreDiagnostic, ThreadStoreError, ThreadStoreFailure, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState };
@@ -0,0 +1,355 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.mjs";
2
+ import { RunId, SubmissionId, ThreadId } from "../core/Identifiers.mjs";
3
+ import { BatchId, CanonicalBatch, CanonicalRecordEnvelope, CanonicalSequence, Digest, ObservationOffset, PersistedJson, ProducerEpoch, RecordId } from "./Records.mjs";
4
+ import { SubmissionLedger, SubmissionLookupById } from "./SubmissionLedger.mjs";
5
+ import { F as toolCallPreparedRecordId, S as runIdForSubmission } from "../RunJournal-BXrq0VIK.mjs";
6
+ import { Context, Effect, Option, Schema, Stream } from "effect";
7
+ //#region src/durable/ThreadStore.ts
8
+ var ThreadStore_exports = /* @__PURE__ */ __exportAll({
9
+ AppendConflict: () => AppendConflict,
10
+ AppendResult: () => AppendResult,
11
+ CheckpointRejected: () => CheckpointRejected,
12
+ FenceRejected: () => FenceRejected,
13
+ FencedAppendRequest: () => FencedAppendRequest,
14
+ LoadCheckpointRequest: () => LoadCheckpointRequest,
15
+ MAX_THREAD_EXPORT_RECORDS: () => MAX_THREAD_EXPORT_RECORDS,
16
+ SaveCheckpointRequest: () => SaveCheckpointRequest,
17
+ SaveRecoveryCheckpointRequest: () => SaveRecoveryCheckpointRequest,
18
+ SelectedThreadRead: () => SelectedThreadRead,
19
+ ThreadCheckpoint: () => ThreadCheckpoint,
20
+ ThreadExport: () => ThreadExport,
21
+ ThreadExportRequest: () => ThreadExportRequest,
22
+ ThreadMaterialization: () => ThreadMaterialization,
23
+ ThreadNotMaterialized: () => ThreadNotMaterialized,
24
+ ThreadObservation: () => ThreadObservation,
25
+ ThreadOutstandingRequest: () => ThreadOutstandingRequest,
26
+ ThreadPeerCountRequest: () => ThreadPeerCountRequest,
27
+ ThreadRead: () => ThreadRead,
28
+ ThreadReadRequest: () => ThreadReadRequest,
29
+ ThreadRecordRequest: () => ThreadRecordRequest,
30
+ ThreadRunInputRequest: () => ThreadRunInputRequest,
31
+ ThreadSelection: () => ThreadSelection,
32
+ ThreadStore: () => ThreadStore,
33
+ ThreadStoreDiagnostic: () => ThreadStoreDiagnostic,
34
+ ThreadStoreError: () => ThreadStoreError,
35
+ ThreadTail: () => ThreadTail,
36
+ ThreadTailRequest: () => ThreadTailRequest,
37
+ ThreadWorkerStateRequest: () => ThreadWorkerStateRequest,
38
+ getRecord: () => getRecord,
39
+ getRunInput: () => getRunInput,
40
+ readOutstanding: () => readOutstanding,
41
+ readWorkerState: () => readWorkerState
42
+ });
43
+ const MAX_THREAD_EXPORT_RECORDS = 131072;
44
+ /** Exact canonical identity; absence is not proof that an admission was never accepted. */
45
+ const ThreadRecordRequest = Schema.Struct({
46
+ threadId: ThreadId,
47
+ recordId: RecordId
48
+ });
49
+ /** The original user input for a Run, excluding later joined inputs. */
50
+ const ThreadRunInputRequest = Schema.Struct({
51
+ threadId: ThreadId,
52
+ runId: RunId
53
+ });
54
+ const ThreadOutstandingRequest = Schema.Struct({
55
+ threadId: ThreadId,
56
+ /** Exceeding this bound fails; a truncated inventory never grants authority. */
57
+ limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(4096))
58
+ });
59
+ /** Native worker reservation/accounting snapshot at a captured canonical tail. */
60
+ const ThreadWorkerStateRequest = Schema.Struct({
61
+ threadId: ThreadId,
62
+ sourceSubmissionId: Schema.optionalKey(SubmissionId),
63
+ limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(MAX_THREAD_EXPORT_RECORDS))
64
+ });
65
+ /** Saturating lifetime peer-message count: the result is at most the requested cap. */
66
+ const ThreadPeerCountRequest = Schema.Struct({
67
+ threadId: ThreadId,
68
+ limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1e3))
69
+ });
70
+ const incomplete = (operation) => ThreadStoreError.make({
71
+ operation,
72
+ message: "Native canonical read is incomplete or corrupt"
73
+ });
74
+ /** Collect a complete bounded selection, using canonical sequence as a sparse cursor. */
75
+ const selectedRecords = Effect.fnUntraced(function* (threadId, selection, limit) {
76
+ const store = yield* ThreadStore;
77
+ const records = [];
78
+ let afterSequence;
79
+ while (true) {
80
+ const pageLimit = Math.min(1024, limit + 1 - records.length);
81
+ const page = yield* Stream.runCollect(store.read({
82
+ threadId,
83
+ selection,
84
+ page: {
85
+ limit: pageLimit,
86
+ ...afterSequence === void 0 ? {} : { afterSequence }
87
+ }
88
+ }));
89
+ for (const entry of page) {
90
+ if (entry.threadId !== threadId || entry.sequence <= (afterSequence ?? 0) || "expectedTailSequence" in selection && entry.sequence > selection.expectedTailSequence) return yield* incomplete("read selection identity");
91
+ afterSequence = entry.sequence;
92
+ records.push(entry);
93
+ }
94
+ if (page.length > pageLimit || records.length > limit) return yield* incomplete("read selection limit");
95
+ if (page.length < pageLimit) return records;
96
+ }
97
+ });
98
+ /** Host-owned read: authenticate the Thread and exact locator before calling. */
99
+ const getRecord = Effect.fn("ThreadStore.getRecord")(function* (request) {
100
+ yield* Schema.decodeEffect(ThreadRecordRequest)(request).pipe(Effect.mapError(() => incomplete("getRecord request")));
101
+ const records = yield* selectedRecords(request.threadId, {
102
+ _tag: "RecordId",
103
+ recordId: request.recordId
104
+ }, 1);
105
+ if (records.some((entry) => entry.record.recordId !== request.recordId)) return yield* incomplete("getRecord identity");
106
+ return Option.fromUndefinedOr(records[0]);
107
+ });
108
+ const getRunInput = Effect.fn("ThreadStore.getRunInput")(function* (request) {
109
+ yield* Schema.decodeEffect(ThreadRunInputRequest)(request).pipe(Effect.mapError(() => incomplete("getRunInput request")));
110
+ const records = yield* selectedRecords(request.threadId, {
111
+ _tag: "RunInput",
112
+ runId: request.runId
113
+ }, 1);
114
+ if (records.some(({ record: { payload } }) => payload._tag !== "UserInputRecorded" || payload.kind !== "user" || payload.runId !== request.runId)) return yield* incomplete("getRunInput identity");
115
+ return Option.fromUndefinedOr(records[0]);
116
+ });
117
+ /** A bounded snapshot of native lifetime and source-submission worker accounting. */
118
+ const readWorkerState = Effect.fn("ThreadStore.readWorkerState")(function* (request) {
119
+ yield* Schema.decodeEffect(ThreadWorkerStateRequest)(request).pipe(Effect.mapError(() => incomplete("readWorkerState request")));
120
+ const tail = yield* (yield* ThreadStore).inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));
121
+ const records = yield* selectedRecords(request.threadId, {
122
+ _tag: "WorkerState",
123
+ expectedTailSequence: tail.tailSequence,
124
+ expectedTailDigest: tail.tailDigest,
125
+ ...request.sourceSubmissionId === void 0 ? {} : { sourceSubmissionId: request.sourceSubmissionId }
126
+ }, request.limit);
127
+ return {
128
+ threadId: request.threadId,
129
+ tailSequence: tail.tailSequence,
130
+ tailDigest: tail.tailDigest,
131
+ records
132
+ };
133
+ });
134
+ /**
135
+ * Work is proportional to outstanding records, independent of completed history. Unknown
136
+ * effects survive abort and resolution intent; only canonical closure removes them. A
137
+ * preparation from another Run still requires native recovery before it can be treated as
138
+ * safe. This snapshot grants no execution authority and does not freeze other owners.
139
+ */
140
+ const readOutstanding = Effect.fn("ThreadStore.readOutstanding")(function* (request) {
141
+ yield* Schema.decodeEffect(ThreadOutstandingRequest)(request).pipe(Effect.mapError(() => incomplete("readOutstanding request")));
142
+ const store = yield* ThreadStore;
143
+ const ledger = yield* SubmissionLedger;
144
+ const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));
145
+ const records = yield* selectedRecords(request.threadId, {
146
+ _tag: "Outstanding",
147
+ expectedTailSequence: tail.tailSequence,
148
+ expectedTailDigest: tail.tailDigest
149
+ }, request.limit);
150
+ const operations = [];
151
+ const workerInputs = [];
152
+ for (const entry of records) {
153
+ const payload = entry.record.payload;
154
+ if (payload._tag === "WorkerInputRequested") {
155
+ workerInputs.push(payload);
156
+ continue;
157
+ }
158
+ if (payload._tag !== "ToolCallPrepared" && payload._tag !== "ToolCallUnknown") return yield* incomplete("readOutstanding record");
159
+ const preparedEntry = payload._tag === "ToolCallPrepared" ? entry : Option.getOrUndefined(yield* getRecord({
160
+ threadId: request.threadId,
161
+ recordId: toolCallPreparedRecordId(payload.runId, payload.turn, payload.toolCallId)
162
+ }));
163
+ const inputEntry = Option.getOrUndefined(yield* getRunInput({
164
+ threadId: request.threadId,
165
+ runId: payload.runId
166
+ }));
167
+ if (preparedEntry === void 0 || inputEntry === void 0 || preparedEntry.sequence > tail.tailSequence || inputEntry.sequence > tail.tailSequence) return yield* incomplete("readOutstanding proof beyond snapshot");
168
+ const prepared = preparedEntry.record.payload;
169
+ const input = inputEntry.record.payload;
170
+ if (prepared?._tag !== "ToolCallPrepared" || prepared.runId !== payload.runId || prepared.turn !== payload.turn || prepared.toolCallId !== payload.toolCallId || prepared.toolName !== payload.toolName || input?._tag !== "UserInputRecorded" || input.submissionId === void 0 || runIdForSubmission(input.submissionId) !== prepared.runId) return yield* incomplete("readOutstanding canonical ownership");
171
+ const submission = yield* ledger.lookup(SubmissionLookupById.make({ submissionId: input.submissionId }));
172
+ if (Option.isNone(submission) || submission.value.threadId !== request.threadId) return yield* incomplete("readOutstanding native admission");
173
+ operations.push({
174
+ submissionId: input.submissionId,
175
+ prepared,
176
+ state: payload._tag === "ToolCallUnknown" ? "unknown" : "prepared"
177
+ });
178
+ }
179
+ return {
180
+ threadId: request.threadId,
181
+ throughSequence: tail.tailSequence,
182
+ complete: true,
183
+ operations,
184
+ workerInputs
185
+ };
186
+ });
187
+ var ThreadMaterialization = class extends Schema.Class("@effect-agent/thread/ThreadMaterialization")({
188
+ threadId: ThreadId,
189
+ producerEpoch: ProducerEpoch
190
+ }) {};
191
+ var FencedAppendRequest = class extends Schema.Class("@effect-agent/thread/FencedAppendRequest")({
192
+ threadId: ThreadId,
193
+ batch: CanonicalBatch,
194
+ expectedTailSequence: CanonicalSequence,
195
+ expectedTailDigest: Digest,
196
+ producerEpoch: ProducerEpoch
197
+ }) {};
198
+ var AppendResult = class extends Schema.Class("@effect-agent/thread/AppendResult")({
199
+ firstSequence: CanonicalSequence,
200
+ lastSequence: CanonicalSequence,
201
+ tailDigest: Digest,
202
+ replayed: Schema.Boolean
203
+ }) {};
204
+ var ThreadRead = class extends Schema.Class("@effect-agent/thread/ThreadRead")({
205
+ threadId: ThreadId,
206
+ afterSequence: Schema.optionalKey(CanonicalSequence),
207
+ limit: Schema.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1024))
208
+ }) {};
209
+ /** Closed native selections; mutable metadata is read at this exact canonical tail. */
210
+ const ThreadSelection = Schema.Union([
211
+ Schema.Struct({
212
+ _tag: Schema.Literal("RecordId"),
213
+ recordId: RecordId
214
+ }),
215
+ Schema.Struct({
216
+ _tag: Schema.Literal("RunInput"),
217
+ runId: RunId
218
+ }),
219
+ Schema.Struct({
220
+ _tag: Schema.Literal("Outstanding"),
221
+ expectedTailSequence: CanonicalSequence,
222
+ expectedTailDigest: Digest
223
+ }),
224
+ Schema.Struct({
225
+ _tag: Schema.Literal("WorkerExecution"),
226
+ expectedTailSequence: CanonicalSequence,
227
+ expectedTailDigest: Digest
228
+ }),
229
+ Schema.Struct({
230
+ _tag: Schema.Literal("WorkerState"),
231
+ expectedTailSequence: CanonicalSequence,
232
+ expectedTailDigest: Digest,
233
+ sourceSubmissionId: Schema.optionalKey(SubmissionId)
234
+ })
235
+ ]);
236
+ /** Nested page makes an old ThreadRead decoder reject, never strip a selection into history. */
237
+ const SelectedThreadRead = Schema.Struct({
238
+ threadId: ThreadId,
239
+ selection: ThreadSelection,
240
+ page: Schema.Struct({
241
+ afterSequence: Schema.optionalKey(CanonicalSequence),
242
+ limit: ThreadRead.fields.limit
243
+ })
244
+ });
245
+ const ThreadReadRequest = Schema.Union([SelectedThreadRead, ThreadRead]);
246
+ var ThreadObservation = class extends Schema.Class("@effect-agent/thread/ThreadObservation")({
247
+ threadId: ThreadId,
248
+ afterOffset: Schema.optionalKey(ObservationOffset)
249
+ }) {};
250
+ var ThreadExportRequest = class extends Schema.Class("@effect-agent/thread/ThreadExportRequest")({ threadId: ThreadId }) {};
251
+ var ThreadTailRequest = class extends Schema.Class("@effect-agent/thread/ThreadTailRequest")({ threadId: ThreadId }) {};
252
+ /**
253
+ * The committed tail of one Thread Log. A resuming producer composes its next
254
+ * FencedAppendRequest from this value instead of exporting the whole log.
255
+ */
256
+ var ThreadTail = class extends Schema.Class("@effect-agent/thread/ThreadTail")({
257
+ threadId: ThreadId,
258
+ tailSequence: CanonicalSequence,
259
+ tailDigest: Digest,
260
+ producerEpoch: ProducerEpoch
261
+ }) {};
262
+ /** Maximum canonical records represented by one Thread export. */
263
+ var ThreadExport = class extends Schema.Class("@effect-agent/thread/ThreadExport")({
264
+ format: Schema.Literal("effect-agent/thread@1"),
265
+ threadId: ThreadId,
266
+ tailSequence: CanonicalSequence,
267
+ tailDigest: Digest,
268
+ records: Schema.Array(CanonicalRecordEnvelope).check(Schema.isMaxLength(MAX_THREAD_EXPORT_RECORDS))
269
+ }) {};
270
+ /**
271
+ * A disposable projection snapshot. Adapters bind its sequence and digest to the canonical
272
+ * log; consumers decode `state` and decide projection compatibility before suffix replay.
273
+ * Legacy metadata is optional for application projections and preserved when supplied.
274
+ * Runtime-owned recovery checkpoints populate and compare it before using cached state.
275
+ */
276
+ var ThreadCheckpoint = class extends Schema.Class("@effect-agent/thread/ThreadCheckpoint")({
277
+ schemaVersion: Schema.Literal(1),
278
+ threadId: ThreadId,
279
+ throughSequence: CanonicalSequence,
280
+ tailDigest: Digest,
281
+ /** @deprecated For application projections; retained for existing data and runtime recovery. */
282
+ engineVersion: Schema.optionalKey(Schema.NonEmptyString),
283
+ /** @deprecated For application projections; retained for existing data and runtime recovery. */
284
+ agentDefinitionDigest: Schema.optionalKey(Digest),
285
+ /** @deprecated For application projections; retained for existing data and runtime recovery. */
286
+ modelDigest: Schema.optionalKey(Digest),
287
+ /** @deprecated For application projections; retained for existing data and runtime recovery. */
288
+ toolDigest: Schema.optionalKey(Digest),
289
+ state: PersistedJson,
290
+ createdAt: Schema.DateTimeUtcFromString
291
+ }) {};
292
+ var SaveCheckpointRequest = class extends Schema.Class("@effect-agent/thread/SaveCheckpointRequest")({ checkpoint: ThreadCheckpoint }) {};
293
+ /** Replace the disposable recovery view only under the current canonical producer fence. */
294
+ var SaveRecoveryCheckpointRequest = class extends Schema.Class("@effect-agent/thread/SaveRecoveryCheckpointRequest")({
295
+ checkpoint: ThreadCheckpoint,
296
+ producerEpoch: ProducerEpoch
297
+ }) {};
298
+ var LoadCheckpointRequest = class extends Schema.Class("@effect-agent/thread/LoadCheckpointRequest")({
299
+ threadId: ThreadId,
300
+ atOrBeforeSequence: Schema.optionalKey(CanonicalSequence)
301
+ }) {};
302
+ /**
303
+ * Content-free storage provenance constructed by adapters from source-authored labels.
304
+ * Raw foreign lookalikes are not trusted diagnostics. Never include rejected values, SQL,
305
+ * or schema messages.
306
+ */
307
+ var ThreadStoreDiagnostic = class extends Schema.Class("@effect-agent/thread/ThreadStoreDiagnostic")({
308
+ causeTag: Schema.String.check(Schema.isMaxLength(128)),
309
+ operation: Schema.String.check(Schema.isMaxLength(256)),
310
+ decoder: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),
311
+ issueTag: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),
312
+ sequence: Schema.optionalKey(CanonicalSequence)
313
+ }) {};
314
+ var ThreadStoreError = class extends Schema.TaggedError()("ThreadStoreError", {
315
+ operation: Schema.String,
316
+ message: Schema.String,
317
+ cause: Schema.optionalKey(Schema.Defect()),
318
+ diagnostic: Schema.optionalKey(ThreadStoreDiagnostic)
319
+ }) {};
320
+ var ThreadNotMaterialized = class extends Schema.TaggedError()("ThreadNotMaterialized", { threadId: ThreadId }) {};
321
+ /**
322
+ * A canonical append that cannot commit: `batch-digest` replays a batch ID with different
323
+ * content, `record-identity` reuses a canonical record ID, and `tail` declares a stale expected
324
+ * tail. Tail conflicts carry the actual committed tail as a diagnostic resume hint.
325
+ */
326
+ var AppendConflict = class extends Schema.TaggedError()("AppendConflict", {
327
+ threadId: ThreadId,
328
+ batchId: BatchId,
329
+ reason: Schema.Literals([
330
+ "batch-digest",
331
+ "record-identity",
332
+ "tail"
333
+ ]),
334
+ actualTailSequence: Schema.optionalKey(CanonicalSequence),
335
+ actualTailDigest: Schema.optionalKey(Digest)
336
+ }) {};
337
+ var FenceRejected = class extends Schema.TaggedError()("FenceRejected", {
338
+ threadId: ThreadId,
339
+ actualEpoch: ProducerEpoch,
340
+ attemptedEpoch: ProducerEpoch
341
+ }) {};
342
+ var CheckpointRejected = class extends Schema.TaggedError()("CheckpointRejected", {
343
+ threadId: ThreadId,
344
+ reason: Schema.Literals([
345
+ "ahead-of-tail",
346
+ "digest-mismatch",
347
+ "unsupported-version",
348
+ "corrupt"
349
+ ])
350
+ }) {};
351
+ var ThreadStore = class extends Context.Service()("@effect-agent/thread/ThreadStore") {};
352
+ //#endregion
353
+ export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreDiagnostic, ThreadStoreError, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState, ThreadStore_exports as t };
354
+
355
+ //# sourceMappingURL=ThreadStore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadStore.mjs","names":[],"sources":["../../src/durable/ThreadStore.ts"],"sourcesContent":["import { Context, Effect, Option, Schema, Stream } from \"effect\";\n\nimport { RunId, SubmissionId, ThreadId } from \"../core/Identifiers.ts\";\nimport type { ToolCallPrepared, WorkerInputRequested } from \"./Records.ts\";\nimport {\n BatchId,\n CanonicalBatch,\n CanonicalRecordEnvelope,\n CanonicalSequence,\n Digest,\n ObservationOffset,\n PersistedJson,\n ProducerEpoch,\n RecordId,\n} from \"./Records.ts\";\nimport { runIdForSubmission, toolCallPreparedRecordId } from \"./RunJournal.ts\";\nimport { SubmissionLedger, SubmissionLookupById } from \"./SubmissionLedger.ts\";\n\nexport const MAX_THREAD_EXPORT_RECORDS = 131_072;\n\n/** Exact canonical identity; absence is not proof that an admission was never accepted. */\nexport const ThreadRecordRequest = Schema.Struct({ threadId: ThreadId, recordId: RecordId });\nexport type ThreadRecordRequest = typeof ThreadRecordRequest.Type;\n\n/** The original user input for a Run, excluding later joined inputs. */\nexport const ThreadRunInputRequest = Schema.Struct({ threadId: ThreadId, runId: RunId });\nexport type ThreadRunInputRequest = typeof ThreadRunInputRequest.Type;\n\nexport const ThreadOutstandingRequest = Schema.Struct({\n threadId: ThreadId,\n /** Exceeding this bound fails; a truncated inventory never grants authority. */\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(4_096)),\n});\n\nexport type ThreadOutstandingRequest = typeof ThreadOutstandingRequest.Type;\n\nexport interface ThreadOutstanding {\n readonly threadId: ThreadId;\n readonly throughSequence: CanonicalSequence;\n readonly complete: true;\n readonly operations: ReadonlyArray<{\n readonly submissionId: SubmissionId;\n readonly prepared: ToolCallPrepared;\n /** Prepared is not an unknown outcome or a grant to execute. */\n readonly state: \"prepared\" | \"unknown\";\n }>;\n /** Source reservations without proof that external effects are resolved. */\n readonly workerInputs: ReadonlyArray<WorkerInputRequested>;\n}\n\n/** Native worker reservation/accounting snapshot at a captured canonical tail. */\nexport const ThreadWorkerStateRequest = Schema.Struct({\n threadId: ThreadId,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n limit: Schema.Int.check(\n Schema.isGreaterThan(0),\n Schema.isLessThanOrEqualTo(MAX_THREAD_EXPORT_RECORDS),\n ),\n});\n\nexport type ThreadWorkerStateRequest = typeof ThreadWorkerStateRequest.Type;\n\n/** Saturating lifetime peer-message count: the result is at most the requested cap. */\nexport const ThreadPeerCountRequest = Schema.Struct({\n threadId: ThreadId,\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1000)),\n});\n\nexport type ThreadPeerCountRequest = typeof ThreadPeerCountRequest.Type;\n\nconst incomplete = (operation: string) =>\n ThreadStoreError.make({\n operation,\n message: \"Native canonical read is incomplete or corrupt\",\n });\n\n/** Collect a complete bounded selection, using canonical sequence as a sparse cursor. */\nconst selectedRecords = Effect.fnUntraced(function* (\n threadId: ThreadId,\n selection: ThreadSelection,\n limit: number,\n) {\n const store = yield* ThreadStore;\n const records: Array<CanonicalRecordEnvelope> = [];\n let afterSequence: CanonicalSequence | undefined;\n\n while (true) {\n const pageLimit = Math.min(1024, limit + 1 - records.length);\n\n const page = yield* Stream.runCollect(\n store.read({\n threadId,\n selection,\n page: { limit: pageLimit, ...(afterSequence === undefined ? {} : { afterSequence }) },\n }),\n );\n\n for (const entry of page) {\n if (\n entry.threadId !== threadId ||\n entry.sequence <= (afterSequence ?? 0) ||\n (\"expectedTailSequence\" in selection && entry.sequence > selection.expectedTailSequence)\n )\n return yield* incomplete(\"read selection identity\");\n afterSequence = entry.sequence;\n records.push(entry);\n }\n if (page.length > pageLimit || records.length > limit)\n return yield* incomplete(\"read selection limit\");\n if (page.length < pageLimit) return records;\n }\n});\n\n/** Host-owned read: authenticate the Thread and exact locator before calling. */\nexport const getRecord = Effect.fn(\"ThreadStore.getRecord\")(function* (\n request: ThreadRecordRequest,\n) {\n yield* Schema.decodeEffect(ThreadRecordRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRecord request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RecordId\", recordId: request.recordId },\n 1,\n );\n\n if (records.some((entry) => entry.record.recordId !== request.recordId))\n return yield* incomplete(\"getRecord identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\nexport const getRunInput = Effect.fn(\"ThreadStore.getRunInput\")(function* (\n request: ThreadRunInputRequest,\n) {\n yield* Schema.decodeEffect(ThreadRunInputRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRunInput request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RunInput\", runId: request.runId },\n 1,\n );\n\n if (\n records.some(\n ({ record: { payload } }) =>\n payload._tag !== \"UserInputRecorded\" ||\n payload.kind !== \"user\" ||\n payload.runId !== request.runId,\n )\n )\n return yield* incomplete(\"getRunInput identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\n/** A bounded snapshot of native lifetime and source-submission worker accounting. */\nexport const readWorkerState = Effect.fn(\"ThreadStore.readWorkerState\")(function* (\n request: ThreadWorkerStateRequest,\n) {\n yield* Schema.decodeEffect(ThreadWorkerStateRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readWorkerState request\")),\n );\n const store = yield* ThreadStore;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"WorkerState\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n ...(request.sourceSubmissionId === undefined\n ? {}\n : { sourceSubmissionId: request.sourceSubmissionId }),\n },\n request.limit,\n );\n\n return {\n threadId: request.threadId,\n tailSequence: tail.tailSequence,\n tailDigest: tail.tailDigest,\n records,\n };\n});\n\n/**\n * Work is proportional to outstanding records, independent of completed history. Unknown\n * effects survive abort and resolution intent; only canonical closure removes them. A\n * preparation from another Run still requires native recovery before it can be treated as\n * safe. This snapshot grants no execution authority and does not freeze other owners.\n */\nexport const readOutstanding = Effect.fn(\"ThreadStore.readOutstanding\")(function* (\n request: ThreadOutstandingRequest,\n) {\n yield* Schema.decodeEffect(ThreadOutstandingRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readOutstanding request\")),\n );\n const store = yield* ThreadStore;\n const ledger = yield* SubmissionLedger;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"Outstanding\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n },\n request.limit,\n );\n\n const operations: Array<ThreadOutstanding[\"operations\"][number]> = [];\n const workerInputs: Array<WorkerInputRequested> = [];\n\n for (const entry of records) {\n const payload = entry.record.payload;\n\n if (payload._tag === \"WorkerInputRequested\") {\n workerInputs.push(payload);\n continue;\n }\n if (payload._tag !== \"ToolCallPrepared\" && payload._tag !== \"ToolCallUnknown\")\n return yield* incomplete(\"readOutstanding record\");\n\n const preparedEntry =\n payload._tag === \"ToolCallPrepared\"\n ? entry\n : Option.getOrUndefined(\n yield* getRecord({\n threadId: request.threadId,\n recordId: toolCallPreparedRecordId(payload.runId, payload.turn, payload.toolCallId),\n }),\n );\n\n const inputEntry = Option.getOrUndefined(\n yield* getRunInput({ threadId: request.threadId, runId: payload.runId }),\n );\n\n if (\n preparedEntry === undefined ||\n inputEntry === undefined ||\n preparedEntry.sequence > tail.tailSequence ||\n inputEntry.sequence > tail.tailSequence\n )\n return yield* incomplete(\"readOutstanding proof beyond snapshot\");\n const prepared = preparedEntry.record.payload;\n const input = inputEntry.record.payload;\n\n if (\n prepared?._tag !== \"ToolCallPrepared\" ||\n prepared.runId !== payload.runId ||\n prepared.turn !== payload.turn ||\n prepared.toolCallId !== payload.toolCallId ||\n prepared.toolName !== payload.toolName ||\n input?._tag !== \"UserInputRecorded\" ||\n input.submissionId === undefined ||\n runIdForSubmission(input.submissionId) !== prepared.runId\n )\n return yield* incomplete(\"readOutstanding canonical ownership\");\n\n const submission = yield* ledger.lookup(\n SubmissionLookupById.make({ submissionId: input.submissionId }),\n );\n\n if (Option.isNone(submission) || submission.value.threadId !== request.threadId)\n return yield* incomplete(\"readOutstanding native admission\");\n operations.push({\n submissionId: input.submissionId,\n prepared,\n state: payload._tag === \"ToolCallUnknown\" ? \"unknown\" : \"prepared\",\n });\n }\n\n return {\n threadId: request.threadId,\n throughSequence: tail.tailSequence,\n complete: true as const,\n operations,\n workerInputs,\n };\n});\n\nexport class ThreadMaterialization extends Schema.Class<ThreadMaterialization>(\n \"@effect-agent/thread/ThreadMaterialization\",\n)({\n threadId: ThreadId,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class FencedAppendRequest extends Schema.Class<FencedAppendRequest>(\n \"@effect-agent/thread/FencedAppendRequest\",\n)({\n threadId: ThreadId,\n batch: CanonicalBatch,\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class AppendResult extends Schema.Class<AppendResult>(\"@effect-agent/thread/AppendResult\")({\n firstSequence: CanonicalSequence,\n lastSequence: CanonicalSequence,\n tailDigest: Digest,\n replayed: Schema.Boolean,\n}) {}\n\nexport class ThreadRead extends Schema.Class<ThreadRead>(\"@effect-agent/thread/ThreadRead\")({\n threadId: ThreadId,\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: Schema.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1_024)),\n}) {}\n\n/** Closed native selections; mutable metadata is read at this exact canonical tail. */\nexport const ThreadSelection = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"RecordId\"), recordId: RecordId }),\n Schema.Struct({ _tag: Schema.Literal(\"RunInput\"), runId: RunId }),\n Schema.Struct({\n _tag: Schema.Literal(\"Outstanding\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"WorkerExecution\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"WorkerState\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n }),\n]);\n\nexport type ThreadSelection = typeof ThreadSelection.Type;\n\n/** Nested page makes an old ThreadRead decoder reject, never strip a selection into history. */\nexport const SelectedThreadRead = Schema.Struct({\n threadId: ThreadId,\n selection: ThreadSelection,\n page: Schema.Struct({\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: ThreadRead.fields.limit,\n }),\n});\n\nexport type SelectedThreadRead = typeof SelectedThreadRead.Type;\nexport const ThreadReadRequest = Schema.Union([SelectedThreadRead, ThreadRead]);\nexport type ThreadReadRequest = typeof ThreadReadRequest.Type;\n\nexport class ThreadObservation extends Schema.Class<ThreadObservation>(\n \"@effect-agent/thread/ThreadObservation\",\n)({\n threadId: ThreadId,\n afterOffset: Schema.optionalKey(ObservationOffset),\n}) {}\n\nexport class ThreadExportRequest extends Schema.Class<ThreadExportRequest>(\n \"@effect-agent/thread/ThreadExportRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\nexport class ThreadTailRequest extends Schema.Class<ThreadTailRequest>(\n \"@effect-agent/thread/ThreadTailRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\n/**\n * The committed tail of one Thread Log. A resuming producer composes its next\n * FencedAppendRequest from this value instead of exporting the whole log.\n */\nexport class ThreadTail extends Schema.Class<ThreadTail>(\"@effect-agent/thread/ThreadTail\")({\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\n/** Maximum canonical records represented by one Thread export. */\n\nexport class ThreadExport extends Schema.Class<ThreadExport>(\"@effect-agent/thread/ThreadExport\")({\n format: Schema.Literal(\"effect-agent/thread@1\"),\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n records: Schema.Array(CanonicalRecordEnvelope).check(\n Schema.isMaxLength(MAX_THREAD_EXPORT_RECORDS),\n ),\n}) {}\n\n/**\n * A disposable projection snapshot. Adapters bind its sequence and digest to the canonical\n * log; consumers decode `state` and decide projection compatibility before suffix replay.\n * Legacy metadata is optional for application projections and preserved when supplied.\n * Runtime-owned recovery checkpoints populate and compare it before using cached state.\n */\nexport class ThreadCheckpoint extends Schema.Class<ThreadCheckpoint>(\n \"@effect-agent/thread/ThreadCheckpoint\",\n)({\n schemaVersion: Schema.Literal(1),\n threadId: ThreadId,\n throughSequence: CanonicalSequence,\n tailDigest: Digest,\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n engineVersion: Schema.optionalKey(Schema.NonEmptyString),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n agentDefinitionDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n modelDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n toolDigest: Schema.optionalKey(Digest),\n state: PersistedJson,\n createdAt: Schema.DateTimeUtcFromString,\n}) {}\n\nexport class SaveCheckpointRequest extends Schema.Class<SaveCheckpointRequest>(\n \"@effect-agent/thread/SaveCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n}) {}\n\n/** Replace the disposable recovery view only under the current canonical producer fence. */\nexport class SaveRecoveryCheckpointRequest extends Schema.Class<SaveRecoveryCheckpointRequest>(\n \"@effect-agent/thread/SaveRecoveryCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class LoadCheckpointRequest extends Schema.Class<LoadCheckpointRequest>(\n \"@effect-agent/thread/LoadCheckpointRequest\",\n)({\n threadId: ThreadId,\n atOrBeforeSequence: Schema.optionalKey(CanonicalSequence),\n}) {}\n\n/**\n * Content-free storage provenance constructed by adapters from source-authored labels.\n * Raw foreign lookalikes are not trusted diagnostics. Never include rejected values, SQL,\n * or schema messages.\n */\nexport class ThreadStoreDiagnostic extends Schema.Class<ThreadStoreDiagnostic>(\n \"@effect-agent/thread/ThreadStoreDiagnostic\",\n)({\n causeTag: Schema.String.check(Schema.isMaxLength(128)),\n operation: Schema.String.check(Schema.isMaxLength(256)),\n decoder: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n issueTag: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n sequence: Schema.optionalKey(CanonicalSequence),\n}) {}\n\nexport class ThreadStoreError extends Schema.TaggedError<ThreadStoreError>()(\"ThreadStoreError\", {\n operation: Schema.String,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n diagnostic: Schema.optionalKey(ThreadStoreDiagnostic),\n}) {}\n\nexport class ThreadNotMaterialized extends Schema.TaggedError<ThreadNotMaterialized>()(\n \"ThreadNotMaterialized\",\n { threadId: ThreadId },\n) {}\n\n/**\n * A canonical append that cannot commit: `batch-digest` replays a batch ID with different\n * content, `record-identity` reuses a canonical record ID, and `tail` declares a stale expected\n * tail. Tail conflicts carry the actual committed tail as a diagnostic resume hint.\n */\nexport class AppendConflict extends Schema.TaggedError<AppendConflict>()(\"AppendConflict\", {\n threadId: ThreadId,\n batchId: BatchId,\n reason: Schema.Literals([\"batch-digest\", \"record-identity\", \"tail\"]),\n actualTailSequence: Schema.optionalKey(CanonicalSequence),\n actualTailDigest: Schema.optionalKey(Digest),\n}) {}\n\nexport class FenceRejected extends Schema.TaggedError<FenceRejected>()(\"FenceRejected\", {\n threadId: ThreadId,\n actualEpoch: ProducerEpoch,\n attemptedEpoch: ProducerEpoch,\n}) {}\n\nexport class CheckpointRejected extends Schema.TaggedError<CheckpointRejected>()(\n \"CheckpointRejected\",\n {\n threadId: ThreadId,\n reason: Schema.Literals([\"ahead-of-tail\", \"digest-mismatch\", \"unsupported-version\", \"corrupt\"]),\n },\n) {}\n\nexport type ThreadStoreFailure =\n | ThreadStoreError\n | ThreadNotMaterialized\n | AppendConflict\n | FenceRejected;\n\n/**\n * Optional, disposable projection storage. Neither history execution nor durable recovery\n * requires it. Adapters that offer it must bind every checkpoint to a canonical batch tail.\n * Application consumers own projection compatibility; this port does not interpret metadata.\n */\nexport interface ThreadCheckpoints {\n readonly save: (\n request: SaveCheckpointRequest,\n ) => Effect.Effect<void, ThreadStoreError | ThreadNotMaterialized | CheckpointRejected>;\n readonly load: (\n request: LoadCheckpointRequest,\n ) => Effect.Effect<\n Option.Option<ThreadCheckpoint>,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected\n >;\n}\n\n/**\n * Optional latest-only recovery cache, independent of application projection checkpoints.\n * Saves atomically validate the producer epoch and canonical batch tail. An older snapshot\n * cannot replace a newer one; equal-tail replacement repairs disposable state. Invalid cached\n * data fails with CheckpointRejected, while infrastructure failures remain ThreadStoreError.\n * Loading at an earlier tail or outside the adapter's cache locality may return none so callers\n * can replay canonical records. Canonical records and the ledger remain authority.\n */\nexport interface ThreadRecoveryCheckpoints {\n readonly save: (\n request: SaveRecoveryCheckpointRequest,\n ) => Effect.Effect<\n void,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected | FenceRejected\n >;\n readonly load: ThreadCheckpoints[\"load\"];\n}\n\nexport class ThreadStore extends Context.Service<\n ThreadStore,\n {\n readonly materialize: (\n request: ThreadMaterialization,\n ) => Effect.Effect<void, ThreadStoreError | FenceRejected>;\n readonly append: (\n request: FencedAppendRequest,\n ) => Effect.Effect<\n AppendResult,\n ThreadStoreError | ThreadNotMaterialized | AppendConflict | FenceRejected\n >;\n readonly read: (\n request: ThreadReadRequest,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly observe: (\n request: ThreadObservation,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly export: (\n request: ThreadExportRequest,\n ) => Effect.Effect<ThreadExport, ThreadStoreError | ThreadNotMaterialized>;\n readonly inspectTail: (\n request: ThreadTailRequest,\n ) => Effect.Effect<ThreadTail, ThreadStoreError | ThreadNotMaterialized>;\n /** Absent when this adapter does not support disposable checkpoints. */\n readonly checkpoints?: ThreadCheckpoints | undefined;\n readonly recoveryCheckpoints?: ThreadRecoveryCheckpoints | undefined;\n /** Indexed scalar count; unsupported adapters fail closed at the caller. */\n readonly countPeerMessages?:\n | ((\n request: ThreadPeerCountRequest,\n ) => Effect.Effect<number, ThreadStoreError | ThreadNotMaterialized>)\n | undefined;\n }\n>()(\"@effect-agent/thread/ThreadStore\") {}\n"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Qt as CheckpointRejected, Sn as ThreadStore, Tn as ThreadStoreFailure } from "../Records-D88mgvyS.mjs";
2
+ import { Effect, Schema } from "effect";
3
+ //#region src/durable/ThreadStoreConformance.d.ts
4
+ declare const ThreadStoreConformanceViolation_base: Schema.Class<ThreadStoreConformanceViolation, Schema.TaggedStruct<"ThreadStoreConformanceViolation", {
5
+ readonly caseName: Schema.String;
6
+ readonly message: Schema.String;
7
+ }>, import("effect/Cause").YieldableError>;
8
+ /** A ThreadStore contract invariant that an adapter under test violated. */
9
+ export declare class ThreadStoreConformanceViolation extends ThreadStoreConformanceViolation_base {}
10
+ export type ThreadStoreConformanceFailure = ThreadStoreFailure | CheckpointRejected | ThreadStoreConformanceViolation;
11
+ /**
12
+ * One adapter-neutral ThreadStore contract case. Each case owns disjoint
13
+ * Thread identities, so a suite may run every case against one shared store
14
+ * instance or against a fresh store per case.
15
+ */
16
+ export interface ThreadStoreConformanceCase {
17
+ readonly name: string;
18
+ readonly run: Effect.Effect<void, ThreadStoreConformanceFailure, ThreadStore>;
19
+ }
20
+ /**
21
+ * The shared, adapter-parameterized ThreadStore contract suite (STORE-010). Every
22
+ * durable adapter test suite must execute each case against its own store provisioning.
23
+ */
24
+ export declare const threadStoreConformanceCases: ReadonlyArray<ThreadStoreConformanceCase>;
25
+ /** Additional contract cases only for adapters advertising `ThreadStore.checkpoints`. */
26
+ export declare const threadCheckpointConformanceCases: ReadonlyArray<ThreadStoreConformanceCase>;
27
+ //#endregion
28
+ //# sourceMappingURL=ThreadStoreConformance.d.mts.map