effect-agent 0.1.0-beta.11 → 0.1.0-beta.111

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-DriBcXBN.d.mts +245 -0
  4. package/dist/AgentError-Bn1ytXRD.d.mts +117 -0
  5. package/dist/AgentPolicy-BqDoSXO6.d.mts +96 -0
  6. package/dist/AgentRuntime-CWkHuzyt.d.mts +346 -0
  7. package/dist/AgentRuntime-DLwPoEVH.mjs +4735 -0
  8. package/dist/AgentRuntime-DLwPoEVH.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-PyIgNYXF.mjs +6772 -0
  13. package/dist/DurableAgentRuntime-PyIgNYXF.mjs.map +1 -0
  14. package/dist/DurableFailpoint-mx3-nsxU.d.mts +41 -0
  15. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  16. package/dist/EventSource-BUYLmL77.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-DaZDlBqh.d.mts +1067 -0
  27. package/dist/Messaging-Dkg87ebg.d.mts +221 -0
  28. package/dist/MessagingHost-D89X7ma8.mjs +110 -0
  29. package/dist/MessagingHost-D89X7ma8.mjs.map +1 -0
  30. package/dist/MessagingHost-e1Sbzfao.d.mts +74 -0
  31. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  32. package/dist/Output-CAFJTAbP.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-J3YK6LAm.d.mts +42 -0
  36. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  37. package/dist/Records-4qnRmniE.d.mts +4058 -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-BoESJrxw.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-C2lH2kxY.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-D9eYdGTl.mjs +1537 -0
  49. package/dist/Subagent-D9eYdGTl.mjs.map +1 -0
  50. package/dist/Subagent-F72tuaxy.d.mts +1360 -0
  51. package/dist/SubagentContract-DdT7Cqe6.d.mts +116 -0
  52. package/dist/SubagentHost-CmiNTOBZ.d.mts +149 -0
  53. package/dist/Subscription-pQUv0QD6.d.mts +945 -0
  54. package/dist/SubscriptionInput-DdJOiNMY.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-Du9dhVnp.d.mts +279 -0
  72. package/dist/Worker-T_3RbaKc.mjs +210 -0
  73. package/dist/Worker-T_3RbaKc.mjs.map +1 -0
  74. package/dist/agent-registration-B5CI-Ygk.mjs +201 -0
  75. package/dist/agent-registration-B5CI-Ygk.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 +260 -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 +98 -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 +876 -0
  233. package/dist/durable/MessageDelivery.mjs +549 -0
  234. package/dist/durable/MessageDelivery.mjs.map +1 -0
  235. package/dist/durable/MessageDeliveryStoreConformance.d.mts +376 -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 +841 -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 +173 -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 +49 -0
  279. package/dist/durable/SqlThreadNativeReads.mjs +153 -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 +918 -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 +1993 -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 +336 -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 +72 -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 +273 -0
  398. package/dist/sandbox/ProtectedBrowser.mjs +287 -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 +427 -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 +2488 -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 +1246 -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 +261 -0
  433. package/src/capabilities/internal/utf8.ts +10 -0
  434. package/src/core/Agent.ts +595 -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 +184 -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 +10950 -0
  470. package/src/durable/DurableFailpoint.ts +107 -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 +817 -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 +1065 -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 +321 -0
  488. package/src/durable/SqlStorageV2Upgrade.ts +500 -0
  489. package/src/durable/SqlSubscriptionStore.ts +1440 -0
  490. package/src/durable/SqlThreadNativeReads.ts +256 -0
  491. package/src/durable/SubmissionLedger.ts +1205 -0
  492. package/src/durable/SubmissionLedgerConformance.ts +4590 -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 +552 -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 +621 -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 +2678 -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 +193 -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 +10485 -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 +436 -0
  553. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,269 @@
1
+ import { Schema } from "effect";
2
+
3
+ import { ThreadId, RunId, ToolCallId } from "../core/Identifiers.ts";
4
+ import { EMPTY_TAIL_DIGEST } from "./Digest.ts";
5
+ import type { CanonicalRecordEnvelope } from "./Records.ts";
6
+ import {
7
+ AbortRequested,
8
+ CanonicalSequence,
9
+ Digest,
10
+ PersistedJson,
11
+ SubagentJoined,
12
+ SubagentLineageRecorded,
13
+ SubagentRequested,
14
+ SubagentStarted,
15
+ SubmissionSettledRecord,
16
+ ToolApprovalDecided,
17
+ ToolApprovalRequested,
18
+ ToolCallPrepared,
19
+ ToolCallUnknown,
20
+ } from "./Records.ts";
21
+
22
+ /** One prepared ordinary Tool Call still awaiting a canonical settled/resolved outcome. */
23
+ export class OpenToolCallState extends Schema.Class<OpenToolCallState>(
24
+ "@effect-agent/thread/OpenToolCallState",
25
+ )({
26
+ toolCallId: ToolCallId,
27
+ toolName: ToolCallPrepared.fields.toolName,
28
+ turn: ToolCallPrepared.fields.turn,
29
+ runId: RunId,
30
+ }) {}
31
+
32
+ /** The canonical approval trail: requests and decisions in canonical order. */
33
+ export const ApprovalRecord = Schema.Union([ToolApprovalRequested, ToolApprovalDecided]);
34
+ export type ApprovalRecord = typeof ApprovalRecord.Type;
35
+
36
+ /**
37
+ * Parent-side view of one Subagent Invocation, keyed by the parent Run and Tool Call: the canonical
38
+ * `SubagentRequested`/`SubagentStarted`/`SubagentJoined` payloads as they become canonical
39
+ * in history. A disposable derived view — the canonical records and the child's
40
+ * own Settlement remain the recovery truth (DUR-015).
41
+ */
42
+ export class SubagentInvocationState extends Schema.Class<SubagentInvocationState>(
43
+ "@effect-agent/thread/SubagentInvocationState",
44
+ )({
45
+ runId: RunId,
46
+ toolCallId: ToolCallId,
47
+ requested: Schema.optionalKey(SubagentRequested),
48
+ started: Schema.optionalKey(SubagentStarted),
49
+ joined: Schema.optionalKey(SubagentJoined),
50
+ }) {}
51
+
52
+ /**
53
+ * Rebuildable canonical projection. It contains only canonical values and can be discarded and
54
+ * reconstructed from the record stream at any time.
55
+ *
56
+ * Phase 4 added `settlements` and `abortRequests`; Phase 5 added `openToolCalls` (the
57
+ * prepared-minus-settled/resolved fold), `unknownToolCalls`, and `approvals`; S2 adds
58
+ * `subagentInvocations` (the parent-side requested/started/joined fold) and `parentLink` (the
59
+ * child-side immutable lineage). A checkpoint whose persisted state lacks these fields fails to
60
+ * decode against this schema; callers must reject the checkpoint and rebuild the projection from
61
+ * canonical records (documented disposable-checkpoint behavior, STORE-007/STORE-008).
62
+ * Version 2 scopes Tool identities by Run. Earlier projections must rebuild, including empty
63
+ * invocation views that may have already lost an earlier Run's unresolved Tool evidence.
64
+ * `ModelResponseRecorded` advances `throughSequence` without dedicated projection state: Prompt
65
+ * reconstruction reads canonical records directly.
66
+ */
67
+ export class ThreadProjection extends Schema.Class<ThreadProjection>(
68
+ "@effect-agent/thread/ThreadProjection",
69
+ )({
70
+ schemaVersion: Schema.Literal(2),
71
+ threadId: ThreadId,
72
+ throughSequence: CanonicalSequence,
73
+ tailDigest: Digest,
74
+ inputs: Schema.Array(PersistedJson),
75
+ modelOutputs: Schema.Array(PersistedJson),
76
+ completedRuns: Schema.Array(RunId),
77
+ failedRuns: Schema.Array(RunId),
78
+ settlements: Schema.Array(SubmissionSettledRecord),
79
+ abortRequests: Schema.Array(AbortRequested),
80
+ openToolCalls: Schema.Array(OpenToolCallState),
81
+ unknownToolCalls: Schema.Array(ToolCallUnknown),
82
+ approvals: Schema.Array(ApprovalRecord),
83
+ subagentInvocations: Schema.Array(SubagentInvocationState),
84
+ parentLink: Schema.optionalKey(SubagentLineageRecorded),
85
+ }) {}
86
+
87
+ export const initialThreadProjection = (threadId: ThreadId): ThreadProjection =>
88
+ ThreadProjection.make({
89
+ schemaVersion: 2,
90
+ threadId,
91
+ throughSequence: Schema.decodeSync(CanonicalSequence)(0),
92
+ tailDigest: EMPTY_TAIL_DIGEST,
93
+ inputs: [],
94
+ modelOutputs: [],
95
+ completedRuns: [],
96
+ failedRuns: [],
97
+ settlements: [],
98
+ abortRequests: [],
99
+ openToolCalls: [],
100
+ unknownToolCalls: [],
101
+ approvals: [],
102
+ subagentInvocations: [],
103
+ });
104
+
105
+ /**
106
+ * Idempotent per-Run-and-Tool-Call upsert of the parent-side Subagent fold. Deterministic record
107
+ * identities make duplicates impossible in one canonical stream; the first canonical payload of
108
+ * each stage wins so a replayed reduce is a no-op.
109
+ */
110
+ const upsertSubagentInvocation = (
111
+ invocations: ReadonlyArray<SubagentInvocationState>,
112
+ payload: SubagentRequested | SubagentStarted | SubagentJoined,
113
+ ): ReadonlyArray<SubagentInvocationState> => {
114
+ const existing = invocations.find(
115
+ (invocation) =>
116
+ invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId,
117
+ );
118
+
119
+ const requested =
120
+ existing?.requested ?? (payload._tag === "SubagentRequested" ? payload : undefined);
121
+
122
+ const started = existing?.started ?? (payload._tag === "SubagentStarted" ? payload : undefined);
123
+ const joined = existing?.joined ?? (payload._tag === "SubagentJoined" ? payload : undefined);
124
+
125
+ const next = SubagentInvocationState.make({
126
+ runId: payload.runId,
127
+ toolCallId: payload.toolCallId,
128
+ ...(requested === undefined ? {} : { requested }),
129
+ ...(started === undefined ? {} : { started }),
130
+ ...(joined === undefined ? {} : { joined }),
131
+ });
132
+
133
+ return existing === undefined
134
+ ? [...invocations, next]
135
+ : invocations.map((invocation) =>
136
+ invocation.runId === payload.runId && invocation.toolCallId === payload.toolCallId
137
+ ? next
138
+ : invocation,
139
+ );
140
+ };
141
+
142
+ /** Pure one-record Thread transition. */
143
+ export const reduceThreadRecord = (
144
+ projection: ThreadProjection,
145
+ envelope: CanonicalRecordEnvelope,
146
+ tailDigest: Digest = projection.tailDigest,
147
+ ): ThreadProjection => {
148
+ const payload = envelope.record.payload;
149
+
150
+ const inputs =
151
+ payload._tag === "UserInputRecorded"
152
+ ? [...projection.inputs, payload.input]
153
+ : projection.inputs;
154
+
155
+ const modelOutputs =
156
+ payload._tag === "ModelCompleted"
157
+ ? [...projection.modelOutputs, payload.output]
158
+ : projection.modelOutputs;
159
+
160
+ const completedRuns =
161
+ payload._tag === "RunCompleted"
162
+ ? [...projection.completedRuns, payload.runId]
163
+ : projection.completedRuns;
164
+
165
+ const failedRuns =
166
+ payload._tag === "RunFailed"
167
+ ? [...projection.failedRuns, payload.runId]
168
+ : projection.failedRuns;
169
+
170
+ const settlements =
171
+ payload._tag === "SubmissionSettled"
172
+ ? [...projection.settlements, payload]
173
+ : projection.settlements;
174
+
175
+ const abortRequests =
176
+ payload._tag === "AbortRequested"
177
+ ? [...projection.abortRequests, payload]
178
+ : projection.abortRequests;
179
+
180
+ // `ToolCallPrepared` opens a call; `ToolCallSettled` (results batch or late settle) and
181
+ // `ToolCallResolved` (DUR-017) close it. `ToolCallUnknown` does NOT close it: the call stays
182
+ // open until an authorized resolution or a recovered result arrives.
183
+ const openToolCalls =
184
+ payload._tag === "ToolCallPrepared"
185
+ ? projection.openToolCalls.some(
186
+ (call) => call.runId === payload.runId && call.toolCallId === payload.toolCallId,
187
+ )
188
+ ? projection.openToolCalls
189
+ : [
190
+ ...projection.openToolCalls,
191
+ OpenToolCallState.make({
192
+ toolCallId: payload.toolCallId,
193
+ toolName: payload.toolName,
194
+ turn: payload.turn,
195
+ runId: payload.runId,
196
+ }),
197
+ ]
198
+ : payload._tag === "ToolCallSettled" || payload._tag === "ToolCallResolved"
199
+ ? projection.openToolCalls.filter(
200
+ (call) => call.runId !== payload.runId || call.toolCallId !== payload.toolCallId,
201
+ )
202
+ : projection.openToolCalls;
203
+
204
+ const unknownToolCalls =
205
+ payload._tag === "ToolCallUnknown"
206
+ ? [...projection.unknownToolCalls, payload]
207
+ : projection.unknownToolCalls;
208
+
209
+ const approvals =
210
+ payload._tag === "ToolApprovalRequested" || payload._tag === "ToolApprovalDecided"
211
+ ? [...projection.approvals, payload]
212
+ : projection.approvals;
213
+
214
+ const subagentInvocations =
215
+ payload._tag === "SubagentRequested" ||
216
+ payload._tag === "SubagentStarted" ||
217
+ payload._tag === "SubagentJoined"
218
+ ? upsertSubagentInvocation(projection.subagentInvocations, payload)
219
+ : projection.subagentInvocations;
220
+
221
+ // The child-side lineage is immutable (SUB-004): the first canonical record wins forever.
222
+ const parentLink =
223
+ projection.parentLink ?? (payload._tag === "SubagentLineageRecorded" ? payload : undefined);
224
+
225
+ return ThreadProjection.make({
226
+ schemaVersion: 2,
227
+ threadId: projection.threadId,
228
+ throughSequence: envelope.sequence,
229
+ tailDigest,
230
+ inputs,
231
+ modelOutputs,
232
+ completedRuns,
233
+ failedRuns,
234
+ settlements,
235
+ abortRequests,
236
+ openToolCalls,
237
+ unknownToolCalls,
238
+ approvals,
239
+ subagentInvocations,
240
+ ...(parentLink === undefined ? {} : { parentLink }),
241
+ });
242
+ };
243
+
244
+ /** Pure full replay from the canonical beginning. */
245
+ export const replayThread = (
246
+ threadId: ThreadId,
247
+ records: ReadonlyArray<CanonicalRecordEnvelope>,
248
+ tailDigest: Digest = EMPTY_TAIL_DIGEST,
249
+ ): ThreadProjection =>
250
+ replayThreadFromCheckpoint(initialThreadProjection(threadId), records, tailDigest);
251
+
252
+ /**
253
+ * Pure checkpoint replay. A validated checkpoint projection and its canonical tail produce the
254
+ * same reducer path as full replay for every later record.
255
+ * Decode persisted state with `ThreadProjection` first; an incompatible state requires full replay.
256
+ */
257
+ export const replayThreadFromCheckpoint = (
258
+ checkpoint: ThreadProjection,
259
+ records: ReadonlyArray<CanonicalRecordEnvelope>,
260
+ tailDigest: Digest = checkpoint.tailDigest,
261
+ ): ThreadProjection => {
262
+ let projection = checkpoint;
263
+
264
+ for (const record of records) {
265
+ projection = reduceThreadRecord(projection, record, tailDigest);
266
+ }
267
+
268
+ return projection;
269
+ };
@@ -0,0 +1,67 @@
1
+ import { Clock, Context, Effect, Layer, Option, Schema } from "effect";
2
+
3
+ import type { AppendResult, FencedAppendRequest } from "./ThreadStore.ts";
4
+
5
+ /** A derived projection failed; the canonical source remains authoritative. */
6
+ export class ThreadProjectionError extends Schema.TaggedError<ThreadProjectionError>()(
7
+ "ThreadProjectionError",
8
+ {
9
+ operation: Schema.String,
10
+ message: Schema.String,
11
+ cause: Schema.optionalKey(Schema.Defect()),
12
+ },
13
+ ) {}
14
+
15
+ /**
16
+ * Host-owned, disposable indexes over a canonical Thread. Hooks receive raw local source
17
+ * ports at construction and must not mutate them or acquire source producer ownership.
18
+ * Rows and their contiguous watermark commit atomically; an empty projection still consumes
19
+ * its record. Concurrent work must compare the starting watermark before committing.
20
+ *
21
+ * No method owns a scheduler. The platform owns wakeups, durable scheduling metadata and
22
+ * source-producer fencing. Per-call resources belong to Scope; interruption remains interruption.
23
+ */
24
+ export interface ThreadProjectionMaintenanceService {
25
+ /**
26
+ * Runs after a successful source commit and before dependent Tools can execute. An index
27
+ * caught up through firstSequence - 1 must process the entire committed range, including
28
+ * empty records, before returning. Canonical batches contain at most 256 records: chunk
29
+ * within local byte limits and stop at result.lastSequence, never chase a changing tail.
30
+ * An earlier gap defers to drain. Replayed or superseded ranges are idempotent no-ops.
31
+ * Failure must leave the unprocessed prefix visible to pendingDeadline.
32
+ */
33
+ readonly applyCommitted: (
34
+ request: FencedAppendRequest,
35
+ result: AppendResult,
36
+ ) => Effect.Effect<void, ThreadProjectionError>;
37
+ /** One bounded, restartable backfill batch. Never drain until caught up in a loop. */
38
+ readonly drain: Effect.Effect<void, ThreadProjectionError>;
39
+ /**
40
+ * Bounded local inspection. None means caught up; a pending epoch-millisecond deadline
41
+ * survives reconstruction and repeated reads must not postpone it. Projection backlog
42
+ * does not gate canonical execution or host approval publication.
43
+ */
44
+ readonly pendingDeadline: Effect.Effect<Option.Option<number>, ThreadProjectionError>;
45
+ }
46
+
47
+ export class ThreadProjectionMaintenance extends Context.Service<
48
+ ThreadProjectionMaintenance,
49
+ ThreadProjectionMaintenanceService
50
+ >()("@effect-agent/thread/ThreadProjectionMaintenance") {
51
+ static readonly layer = Layer.succeed(this)({
52
+ applyCommitted: () => Effect.void,
53
+ drain: Effect.void,
54
+ pendingDeadline: Effect.succeed(Option.none()),
55
+ });
56
+ }
57
+
58
+ /** Run at most one due backfill batch, preserving typed failures, defects and interruption. */
59
+ export const drainDue = Effect.gen(function* () {
60
+ const projection = yield* ThreadProjectionMaintenance;
61
+ const deadline = yield* projection.pendingDeadline;
62
+
63
+ if (Option.isNone(deadline) || deadline.value > (yield* Clock.currentTimeMillis)) return false;
64
+ yield* projection.drain;
65
+
66
+ return true;
67
+ });