effect-agent 0.1.0-beta.16 → 0.1.0-beta.160

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 (546) hide show
  1. package/dist/Admin-Dirux8PR.d.mts +4270 -0
  2. package/dist/Agent-BMATXYsI.mjs +93 -0
  3. package/dist/Agent-BMATXYsI.mjs.map +1 -0
  4. package/dist/Agent-ZfnNCQXs.d.mts +259 -0
  5. package/dist/AgentError-Bn1ytXRD.d.mts +117 -0
  6. package/dist/AgentPolicy-B4oH8TbG.d.mts +112 -0
  7. package/dist/AgentRuntime-CVMHysXm.mjs +4844 -0
  8. package/dist/AgentRuntime-CVMHysXm.mjs.map +1 -0
  9. package/dist/AgentRuntime-D1MmB_0z.d.mts +346 -0
  10. package/dist/AgentUpdates-DMJ-_xow.d.mts +53 -0
  11. package/dist/ContextCompactor-BoKQOjr5.d.mts +161 -0
  12. package/dist/ContextWindow-DRQ5Mbm2.d.mts +58 -0
  13. package/dist/Digest-COAt3Orl.d.mts +22 -0
  14. package/dist/DurableAgentRuntime-pr7cCaZw.mjs +7507 -0
  15. package/dist/DurableAgentRuntime-pr7cCaZw.mjs.map +1 -0
  16. package/dist/DurableFailpoint-Cnr3wx1L.d.mts +41 -0
  17. package/dist/DurableStep-Cry_iol4.d.mts +103 -0
  18. package/dist/EventSource-DOXB0RJR.d.mts +51 -0
  19. package/dist/FailureDiagnostic-BElLOoED.mjs +274 -0
  20. package/dist/FailureDiagnostic-BElLOoED.mjs.map +1 -0
  21. package/dist/FailureDiagnostic-CaAkzGHL.d.mts +223 -0
  22. package/dist/Identifiers-CN2s30fF.d.mts +40 -0
  23. package/dist/InMemory.d.mts +24 -0
  24. package/dist/InMemory.mjs +24 -0
  25. package/dist/InMemory.mjs.map +1 -0
  26. package/dist/MemoryNamespace-BbRW5p71.d.mts +36 -0
  27. package/dist/MemoryReference-B8Q3UJoJ.d.mts +79 -0
  28. package/dist/Messaging-7VXQnWI3.d.mts +221 -0
  29. package/dist/Messaging-CICd_CSi.d.mts +1067 -0
  30. package/dist/MessagingHost-DXwWnrMh.d.mts +74 -0
  31. package/dist/MessagingHost-DfsbMPvq.mjs +110 -0
  32. package/dist/MessagingHost-DfsbMPvq.mjs.map +1 -0
  33. package/dist/OperationAuthorizer-TzcQtpX5.d.mts +61 -0
  34. package/dist/Output-CY7NZByV.d.mts +25 -0
  35. package/dist/PageCapture-Df8Xwskw.d.mts +583 -0
  36. package/dist/PreparedInputAdmission-B7r401xJ.d.mts +42 -0
  37. package/dist/Receipt-BAHyigAF.d.mts +33 -0
  38. package/dist/Records-Bm4Qt70a.d.mts +1115 -0
  39. package/dist/RunEvent-D0aepYwN.d.mts +474 -0
  40. package/dist/RunEventSink-9CUdI9Ar.d.mts +108 -0
  41. package/dist/RunJournal-CA2bsvHn.mjs +979 -0
  42. package/dist/RunJournal-CA2bsvHn.mjs.map +1 -0
  43. package/dist/RunOptions-BHmBa05n.d.mts +960 -0
  44. package/dist/RunPolicyUsage-CUudVtg_.d.mts +23 -0
  45. package/dist/Sandbox-CEsDWBLq.d.mts +173 -0
  46. package/dist/Schedule-Bi_XVKLF.d.mts +847 -0
  47. package/dist/Scheduling-DPb2QyAK.mjs +691 -0
  48. package/dist/Scheduling-DPb2QyAK.mjs.map +1 -0
  49. package/dist/Subagent-D59om8SR.d.mts +1650 -0
  50. package/dist/Subagent-DH6G120f.mjs +1499 -0
  51. package/dist/Subagent-DH6G120f.mjs.map +1 -0
  52. package/dist/SubagentContract-tyN9v-Jv.d.mts +112 -0
  53. package/dist/SubagentHost-VTyf_wEF.d.mts +172 -0
  54. package/dist/Subscription-B3ScCBaN.d.mts +979 -0
  55. package/dist/SubscriptionInput-BP5WVsX_.d.mts +41 -0
  56. package/dist/Thread-DOBQ0QUY.d.mts +96 -0
  57. package/dist/ThreadHistory-FD-o4TsR.d.mts +60 -0
  58. package/dist/ToolBroker-DWs4tZra.d.mts +133 -0
  59. package/dist/ToolExposure-9uF_Yo0T.mjs +10 -0
  60. package/dist/ToolExposure-9uF_Yo0T.mjs.map +1 -0
  61. package/dist/ToolExposure-C93U1sPu.mjs +30 -0
  62. package/dist/ToolExposure-C93U1sPu.mjs.map +1 -0
  63. package/dist/ToolExposure-UCN12eCd.d.mts +39 -0
  64. package/dist/ToolExposure-r2eOWk4F.d.mts +46 -0
  65. package/dist/ToolExposure.d.mts +8 -0
  66. package/dist/ToolExposure.mjs +21 -0
  67. package/dist/ToolExposure.mjs.map +1 -0
  68. package/dist/ToolReconciler-BmVRAHKs.d.mts +80 -0
  69. package/dist/ToolResult-BKdqWRff.d.mts +78 -0
  70. package/dist/Usage-BNjPR7Zr.d.mts +129 -0
  71. package/dist/WakeScheduler-EjUF-GhC.d.mts +56 -0
  72. package/dist/Worker-CfwzMZEK.mjs +271 -0
  73. package/dist/Worker-CfwzMZEK.mjs.map +1 -0
  74. package/dist/Worker-XEBYxRQv.d.mts +472 -0
  75. package/dist/WorkerAdmission-Cmcxd6nS.mjs +171 -0
  76. package/dist/WorkerAdmission-Cmcxd6nS.mjs.map +1 -0
  77. package/dist/agent-registration-BIOzAej4.mjs +210 -0
  78. package/dist/agent-registration-BIOzAej4.mjs.map +1 -0
  79. package/dist/capabilities/Approval.d.mts +114 -0
  80. package/dist/capabilities/Approval.mjs +226 -0
  81. package/dist/capabilities/Approval.mjs.map +1 -0
  82. package/dist/capabilities/BrowserUse.d.mts +545 -0
  83. package/dist/capabilities/BrowserUse.mjs +254 -0
  84. package/dist/capabilities/BrowserUse.mjs.map +1 -0
  85. package/dist/capabilities/Budget.d.mts +112 -0
  86. package/dist/capabilities/Budget.mjs +346 -0
  87. package/dist/capabilities/Budget.mjs.map +1 -0
  88. package/dist/capabilities/CodeMode.d.mts +157 -0
  89. package/dist/capabilities/CodeMode.mjs +523 -0
  90. package/dist/capabilities/CodeMode.mjs.map +1 -0
  91. package/dist/capabilities/Commands.d.mts +55 -0
  92. package/dist/capabilities/Commands.mjs +57 -0
  93. package/dist/capabilities/Commands.mjs.map +1 -0
  94. package/dist/capabilities/ContextTools.d.mts +187 -0
  95. package/dist/capabilities/ContextTools.mjs +87 -0
  96. package/dist/capabilities/ContextTools.mjs.map +1 -0
  97. package/dist/capabilities/Mcp.d.mts +108 -0
  98. package/dist/capabilities/Mcp.mjs +259 -0
  99. package/dist/capabilities/Mcp.mjs.map +1 -0
  100. package/dist/capabilities/McpClient.d.mts +115 -0
  101. package/dist/capabilities/McpClient.mjs +519 -0
  102. package/dist/capabilities/McpClient.mjs.map +1 -0
  103. package/dist/capabilities/MemoryNotes.d.mts +424 -0
  104. package/dist/capabilities/MemoryNotes.mjs +128 -0
  105. package/dist/capabilities/MemoryNotes.mjs.map +1 -0
  106. package/dist/capabilities/Messaging.d.mts +3 -0
  107. package/dist/capabilities/Messaging.mjs +152 -0
  108. package/dist/capabilities/Messaging.mjs.map +1 -0
  109. package/dist/capabilities/ModelContext.d.mts +89 -0
  110. package/dist/capabilities/ModelContext.mjs +168 -0
  111. package/dist/capabilities/ModelContext.mjs.map +1 -0
  112. package/dist/capabilities/Redaction.d.mts +37 -0
  113. package/dist/capabilities/Redaction.mjs +104 -0
  114. package/dist/capabilities/Redaction.mjs.map +1 -0
  115. package/dist/capabilities/Remembering.d.mts +434 -0
  116. package/dist/capabilities/Remembering.mjs +290 -0
  117. package/dist/capabilities/Remembering.mjs.map +1 -0
  118. package/dist/capabilities/RunHooks.d.mts +82 -0
  119. package/dist/capabilities/RunHooks.mjs +144 -0
  120. package/dist/capabilities/RunHooks.mjs.map +1 -0
  121. package/dist/capabilities/SemanticMemory.d.mts +431 -0
  122. package/dist/capabilities/SemanticMemory.mjs +315 -0
  123. package/dist/capabilities/SemanticMemory.mjs.map +1 -0
  124. package/dist/capabilities/Subagent.d.mts +4 -0
  125. package/dist/capabilities/Subagent.mjs +5 -0
  126. package/dist/capabilities/SubagentReservations.d.mts +186 -0
  127. package/dist/capabilities/SubagentReservations.mjs +479 -0
  128. package/dist/capabilities/SubagentReservations.mjs.map +1 -0
  129. package/dist/capabilities/ToolDiscovery.d.mts +129 -0
  130. package/dist/capabilities/ToolDiscovery.mjs +239 -0
  131. package/dist/capabilities/ToolDiscovery.mjs.map +1 -0
  132. package/dist/capabilities/WebCapture.d.mts +163 -0
  133. package/dist/capabilities/WebCapture.mjs +335 -0
  134. package/dist/capabilities/WebCapture.mjs.map +1 -0
  135. package/dist/capabilities/WebSearch.d.mts +75 -0
  136. package/dist/capabilities/WebSearch.mjs +123 -0
  137. package/dist/capabilities/WebSearch.mjs.map +1 -0
  138. package/dist/compaction-C2OTceKw.mjs +505 -0
  139. package/dist/compaction-C2OTceKw.mjs.map +1 -0
  140. package/dist/core/Agent.d.mts +2 -0
  141. package/dist/core/Agent.mjs +2 -0
  142. package/dist/core/AgentError.d.mts +2 -0
  143. package/dist/core/AgentError.mjs +134 -0
  144. package/dist/core/AgentError.mjs.map +1 -0
  145. package/dist/core/AgentPolicy.d.mts +2 -0
  146. package/dist/core/AgentPolicy.mjs +102 -0
  147. package/dist/core/AgentPolicy.mjs.map +1 -0
  148. package/dist/core/AgentUpdates.d.mts +2 -0
  149. package/dist/core/AgentUpdates.mjs +63 -0
  150. package/dist/core/AgentUpdates.mjs.map +1 -0
  151. package/dist/core/FailureDiagnostic.d.mts +2 -0
  152. package/dist/core/FailureDiagnostic.mjs +2 -0
  153. package/dist/core/IdGenerator.d.mts +26 -0
  154. package/dist/core/IdGenerator.mjs +27 -0
  155. package/dist/core/IdGenerator.mjs.map +1 -0
  156. package/dist/core/Identifiers.d.mts +2 -0
  157. package/dist/core/Identifiers.mjs +43 -0
  158. package/dist/core/Identifiers.mjs.map +1 -0
  159. package/dist/core/Memory.d.mts +57 -0
  160. package/dist/core/Memory.mjs +203 -0
  161. package/dist/core/Memory.mjs.map +1 -0
  162. package/dist/core/MemoryNamespace.d.mts +2 -0
  163. package/dist/core/MemoryNamespace.mjs +116 -0
  164. package/dist/core/MemoryNamespace.mjs.map +1 -0
  165. package/dist/core/MemoryReference.d.mts +2 -0
  166. package/dist/core/MemoryReference.mjs +109 -0
  167. package/dist/core/MemoryReference.mjs.map +1 -0
  168. package/dist/core/MemoryRevalidation.d.mts +65 -0
  169. package/dist/core/MemoryRevalidation.mjs +126 -0
  170. package/dist/core/MemoryRevalidation.mjs.map +1 -0
  171. package/dist/core/MemoryStore.d.mts +186 -0
  172. package/dist/core/MemoryStore.mjs +243 -0
  173. package/dist/core/MemoryStore.mjs.map +1 -0
  174. package/dist/core/Receipt.d.mts +2 -0
  175. package/dist/core/Receipt.mjs +36 -0
  176. package/dist/core/Receipt.mjs.map +1 -0
  177. package/dist/core/RememberingStore.d.mts +1562 -0
  178. package/dist/core/RememberingStore.mjs +190 -0
  179. package/dist/core/RememberingStore.mjs.map +1 -0
  180. package/dist/core/RunEvent.d.mts +2 -0
  181. package/dist/core/RunEvent.mjs +346 -0
  182. package/dist/core/RunEvent.mjs.map +1 -0
  183. package/dist/core/RunPolicyUsage.d.mts +2 -0
  184. package/dist/core/RunPolicyUsage.mjs +26 -0
  185. package/dist/core/RunPolicyUsage.mjs.map +1 -0
  186. package/dist/core/SemanticMemoryIndex.d.mts +826 -0
  187. package/dist/core/SemanticMemoryIndex.mjs +185 -0
  188. package/dist/core/SemanticMemoryIndex.mjs.map +1 -0
  189. package/dist/core/SemanticMemoryRevalidation.d.mts +45 -0
  190. package/dist/core/SemanticMemoryRevalidation.mjs +191 -0
  191. package/dist/core/SemanticMemoryRevalidation.mjs.map +1 -0
  192. package/dist/core/SubagentContract.d.mts +2 -0
  193. package/dist/core/SubagentContract.mjs +142 -0
  194. package/dist/core/SubagentContract.mjs.map +1 -0
  195. package/dist/core/Thread.d.mts +2 -0
  196. package/dist/core/Thread.mjs +250 -0
  197. package/dist/core/Thread.mjs.map +1 -0
  198. package/dist/core/ToolResult.d.mts +2 -0
  199. package/dist/core/ToolResult.mjs +156 -0
  200. package/dist/core/ToolResult.mjs.map +1 -0
  201. package/dist/core/Usage.d.mts +2 -0
  202. package/dist/core/Usage.mjs +340 -0
  203. package/dist/core/Usage.mjs.map +1 -0
  204. package/dist/core/Worker.d.mts +3 -0
  205. package/dist/core/Worker.mjs +3 -0
  206. package/dist/durable/ActivityStore.d.mts +116 -0
  207. package/dist/durable/ActivityStore.mjs +131 -0
  208. package/dist/durable/ActivityStore.mjs.map +1 -0
  209. package/dist/durable/Admin.d.mts +2 -0
  210. package/dist/durable/Admin.mjs +330 -0
  211. package/dist/durable/Admin.mjs.map +1 -0
  212. package/dist/durable/AgentRegistration.d.mts +2 -0
  213. package/dist/durable/AgentRegistration.mjs +15 -0
  214. package/dist/durable/AgentRegistration.mjs.map +1 -0
  215. package/dist/durable/Certification.d.mts +110 -0
  216. package/dist/durable/Certification.mjs +159 -0
  217. package/dist/durable/Certification.mjs.map +1 -0
  218. package/dist/durable/CommittedActivity.d.mts +64 -0
  219. package/dist/durable/CommittedActivity.mjs +159 -0
  220. package/dist/durable/CommittedActivity.mjs.map +1 -0
  221. package/dist/durable/Digest.d.mts +2 -0
  222. package/dist/durable/Digest.mjs +50 -0
  223. package/dist/durable/Digest.mjs.map +1 -0
  224. package/dist/durable/DurableAgentRuntime.d.mts +3 -0
  225. package/dist/durable/DurableAgentRuntime.mjs +4 -0
  226. package/dist/durable/DurableFailpoint.d.mts +2 -0
  227. package/dist/durable/DurableFailpoint.mjs +102 -0
  228. package/dist/durable/DurableFailpoint.mjs.map +1 -0
  229. package/dist/durable/DurableFailpointTestControl.d.mts +14 -0
  230. package/dist/durable/DurableFailpointTestControl.mjs +19 -0
  231. package/dist/durable/DurableFailpointTestControl.mjs.map +1 -0
  232. package/dist/durable/EventSource.d.mts +2 -0
  233. package/dist/durable/EventSource.mjs +65 -0
  234. package/dist/durable/EventSource.mjs.map +1 -0
  235. package/dist/durable/GitHubWorkflowSource.d.mts +185 -0
  236. package/dist/durable/GitHubWorkflowSource.mjs +209 -0
  237. package/dist/durable/GitHubWorkflowSource.mjs.map +1 -0
  238. package/dist/durable/LifecyclePublication.d.mts +2 -0
  239. package/dist/durable/LifecyclePublication.mjs +189 -0
  240. package/dist/durable/LifecyclePublication.mjs.map +1 -0
  241. package/dist/durable/MessageDelivery.d.mts +949 -0
  242. package/dist/durable/MessageDelivery.mjs +589 -0
  243. package/dist/durable/MessageDelivery.mjs.map +1 -0
  244. package/dist/durable/MessageDeliveryStoreConformance.d.mts +400 -0
  245. package/dist/durable/MessageDeliveryStoreConformance.mjs +270 -0
  246. package/dist/durable/MessageDeliveryStoreConformance.mjs.map +1 -0
  247. package/dist/durable/OperationAuthorizer.d.mts +2 -0
  248. package/dist/durable/OperationAuthorizer.mjs +70 -0
  249. package/dist/durable/OperationAuthorizer.mjs.map +1 -0
  250. package/dist/durable/PersistentHistory.d.mts +16 -0
  251. package/dist/durable/PersistentHistory.mjs +125 -0
  252. package/dist/durable/PersistentHistory.mjs.map +1 -0
  253. package/dist/durable/PreparedInputAdmission.d.mts +2 -0
  254. package/dist/durable/PreparedInputAdmission.mjs +38 -0
  255. package/dist/durable/PreparedInputAdmission.mjs.map +1 -0
  256. package/dist/durable/Records.d.mts +2 -0
  257. package/dist/durable/Records.mjs +873 -0
  258. package/dist/durable/Records.mjs.map +1 -0
  259. package/dist/durable/Recovery.d.mts +2 -0
  260. package/dist/durable/Recovery.mjs +739 -0
  261. package/dist/durable/Recovery.mjs.map +1 -0
  262. package/dist/durable/RunJournal.d.mts +2 -0
  263. package/dist/durable/RunJournal.mjs +2 -0
  264. package/dist/durable/Schedule.d.mts +2 -0
  265. package/dist/durable/Schedule.mjs +391 -0
  266. package/dist/durable/Schedule.mjs.map +1 -0
  267. package/dist/durable/ScheduleStoreConformance.d.mts +17 -0
  268. package/dist/durable/ScheduleStoreConformance.mjs +420 -0
  269. package/dist/durable/ScheduleStoreConformance.mjs.map +1 -0
  270. package/dist/durable/ScheduleTransition.d.mts +24 -0
  271. package/dist/durable/ScheduleTransition.mjs +180 -0
  272. package/dist/durable/ScheduleTransition.mjs.map +1 -0
  273. package/dist/durable/Scheduling.d.mts +55 -0
  274. package/dist/durable/Scheduling.mjs +2 -0
  275. package/dist/durable/SqlMemoryStore.d.mts +742 -0
  276. package/dist/durable/SqlMemoryStore.mjs +627 -0
  277. package/dist/durable/SqlMemoryStore.mjs.map +1 -0
  278. package/dist/durable/SubmissionLedger.d.mts +3 -0
  279. package/dist/durable/SubmissionLedger.mjs +986 -0
  280. package/dist/durable/SubmissionLedger.mjs.map +1 -0
  281. package/dist/durable/SubmissionLedgerConformance.d.mts +30 -0
  282. package/dist/durable/SubmissionLedgerConformance.mjs +2254 -0
  283. package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -0
  284. package/dist/durable/SubmissionStatus.d.mts +2 -0
  285. package/dist/durable/SubmissionStatus.mjs +18 -0
  286. package/dist/durable/SubmissionStatus.mjs.map +1 -0
  287. package/dist/durable/Subscription.d.mts +2 -0
  288. package/dist/durable/Subscription.mjs +360 -0
  289. package/dist/durable/Subscription.mjs.map +1 -0
  290. package/dist/durable/SubscriptionInput.d.mts +2 -0
  291. package/dist/durable/SubscriptionInput.mjs +52 -0
  292. package/dist/durable/SubscriptionInput.mjs.map +1 -0
  293. package/dist/durable/SubscriptionStoreConformance.d.mts +16 -0
  294. package/dist/durable/SubscriptionStoreConformance.mjs +625 -0
  295. package/dist/durable/SubscriptionStoreConformance.mjs.map +1 -0
  296. package/dist/durable/SubscriptionTools.d.mts +274 -0
  297. package/dist/durable/SubscriptionTools.mjs +190 -0
  298. package/dist/durable/SubscriptionTools.mjs.map +1 -0
  299. package/dist/durable/SubscriptionTransition.d.mts +21 -0
  300. package/dist/durable/SubscriptionTransition.mjs +148 -0
  301. package/dist/durable/SubscriptionTransition.mjs.map +1 -0
  302. package/dist/durable/Subscriptions.d.mts +74 -0
  303. package/dist/durable/Subscriptions.mjs +627 -0
  304. package/dist/durable/Subscriptions.mjs.map +1 -0
  305. package/dist/durable/ThreadContextHistory.d.mts +32 -0
  306. package/dist/durable/ThreadContextHistory.mjs +152 -0
  307. package/dist/durable/ThreadContextHistory.mjs.map +1 -0
  308. package/dist/durable/ThreadContextHistoryProjection.d.mts +60 -0
  309. package/dist/durable/ThreadContextHistoryProjection.mjs +149 -0
  310. package/dist/durable/ThreadContextHistoryProjection.mjs.map +1 -0
  311. package/dist/durable/ThreadInvariants.d.mts +77 -0
  312. package/dist/durable/ThreadInvariants.mjs +246 -0
  313. package/dist/durable/ThreadInvariants.mjs.map +1 -0
  314. package/dist/durable/ThreadProjection.d.mts +78 -0
  315. package/dist/durable/ThreadProjection.mjs +158 -0
  316. package/dist/durable/ThreadProjection.mjs.map +1 -0
  317. package/dist/durable/ThreadProjectionMaintenance.d.mts +49 -0
  318. package/dist/durable/ThreadProjectionMaintenance.mjs +33 -0
  319. package/dist/durable/ThreadProjectionMaintenance.mjs.map +1 -0
  320. package/dist/durable/ThreadStore.d.mts +2 -0
  321. package/dist/durable/ThreadStore.mjs +383 -0
  322. package/dist/durable/ThreadStore.mjs.map +1 -0
  323. package/dist/durable/ThreadStoreConformance.d.mts +28 -0
  324. package/dist/durable/ThreadStoreConformance.mjs +543 -0
  325. package/dist/durable/ThreadStoreConformance.mjs.map +1 -0
  326. package/dist/durable/ToolReconciler.d.mts +2 -0
  327. package/dist/durable/ToolReconciler.mjs +85 -0
  328. package/dist/durable/ToolReconciler.mjs.map +1 -0
  329. package/dist/durable/WakeScheduler.d.mts +2 -0
  330. package/dist/durable/WakeScheduler.mjs +85 -0
  331. package/dist/durable/WakeScheduler.mjs.map +1 -0
  332. package/dist/durable/WorkerAdmission.d.mts +172 -0
  333. package/dist/durable/WorkerAdmission.mjs +2 -0
  334. package/dist/durable/WorkerHost.d.mts +156 -0
  335. package/dist/durable/WorkerHost.mjs +77 -0
  336. package/dist/durable/WorkerHost.mjs.map +1 -0
  337. package/dist/engine/AgentRuntime.d.mts +2 -0
  338. package/dist/engine/AgentRuntime.mjs +2 -0
  339. package/dist/engine/Compaction.d.mts +7 -0
  340. package/dist/engine/Compaction.mjs +16 -0
  341. package/dist/engine/Compaction.mjs.map +1 -0
  342. package/dist/engine/ContextCompactor.d.mts +2 -0
  343. package/dist/engine/ContextCompactor.mjs +119 -0
  344. package/dist/engine/ContextCompactor.mjs.map +1 -0
  345. package/dist/engine/ContextHistory.d.mts +65 -0
  346. package/dist/engine/ContextHistory.mjs +76 -0
  347. package/dist/engine/ContextHistory.mjs.map +1 -0
  348. package/dist/engine/ContextWindow.d.mts +2 -0
  349. package/dist/engine/ContextWindow.mjs +59 -0
  350. package/dist/engine/ContextWindow.mjs.map +1 -0
  351. package/dist/engine/DurableStep.d.mts +2 -0
  352. package/dist/engine/DurableStep.mjs +62 -0
  353. package/dist/engine/DurableStep.mjs.map +1 -0
  354. package/dist/engine/MessagingHost.d.mts +2 -0
  355. package/dist/engine/MessagingHost.mjs +2 -0
  356. package/dist/engine/Output.d.mts +2 -0
  357. package/dist/engine/Output.mjs +8 -0
  358. package/dist/engine/Output.mjs.map +1 -0
  359. package/dist/engine/RunEventSink.d.mts +2 -0
  360. package/dist/engine/RunEventSink.mjs +22 -0
  361. package/dist/engine/RunEventSink.mjs.map +1 -0
  362. package/dist/engine/RunOptions.d.mts +2 -0
  363. package/dist/engine/RunOptions.mjs +125 -0
  364. package/dist/engine/RunOptions.mjs.map +1 -0
  365. package/dist/engine/SubagentHost.d.mts +2 -0
  366. package/dist/engine/SubagentHost.mjs +76 -0
  367. package/dist/engine/SubagentHost.mjs.map +1 -0
  368. package/dist/engine/ThreadHistory.d.mts +2 -0
  369. package/dist/engine/ThreadHistory.mjs +67 -0
  370. package/dist/engine/ThreadHistory.mjs.map +1 -0
  371. package/dist/engine/ToolBroker.d.mts +2 -0
  372. package/dist/engine/ToolBroker.mjs +42 -0
  373. package/dist/engine/ToolBroker.mjs.map +1 -0
  374. package/dist/foreign-diagnostic-DBQ1XHKh.mjs +37 -0
  375. package/dist/foreign-diagnostic-DBQ1XHKh.mjs.map +1 -0
  376. package/dist/index.d.mts +93 -6
  377. package/dist/index.mjs +101 -6
  378. package/dist/output-contract-DS-S8mTv.mjs +135 -0
  379. package/dist/output-contract-DS-S8mTv.mjs.map +1 -0
  380. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  381. package/dist/sandbox/CodeExecutor.d.mts +194 -0
  382. package/dist/sandbox/CodeExecutor.mjs +278 -0
  383. package/dist/sandbox/CodeExecutor.mjs.map +1 -0
  384. package/dist/sandbox/InteractiveBrowser.d.mts +257 -0
  385. package/dist/sandbox/InteractiveBrowser.mjs +236 -0
  386. package/dist/sandbox/InteractiveBrowser.mjs.map +1 -0
  387. package/dist/sandbox/PageCapture.d.mts +2 -0
  388. package/dist/sandbox/PageCapture.mjs +450 -0
  389. package/dist/sandbox/PageCapture.mjs.map +1 -0
  390. package/dist/sandbox/PageCrawl.d.mts +88 -0
  391. package/dist/sandbox/PageCrawl.mjs +124 -0
  392. package/dist/sandbox/PageCrawl.mjs.map +1 -0
  393. package/dist/sandbox/PageScreenshot.d.mts +48 -0
  394. package/dist/sandbox/PageScreenshot.mjs +53 -0
  395. package/dist/sandbox/PageScreenshot.mjs.map +1 -0
  396. package/dist/sandbox/Sandbox.d.mts +2 -0
  397. package/dist/sandbox/Sandbox.mjs +208 -0
  398. package/dist/sandbox/Sandbox.mjs.map +1 -0
  399. package/dist/utf8-BYfhEkcj.mjs +11 -0
  400. package/dist/utf8-BYfhEkcj.mjs.map +1 -0
  401. package/dist/utf8-DchGZRBd.mjs +23 -0
  402. package/dist/utf8-DchGZRBd.mjs.map +1 -0
  403. package/package.json +1 -40
  404. package/src/InMemory.ts +19 -0
  405. package/src/ToolExposure.ts +2 -0
  406. package/src/capabilities/Approval.ts +352 -0
  407. package/src/capabilities/BrowserUse.ts +367 -0
  408. package/src/capabilities/Budget.ts +536 -0
  409. package/src/capabilities/CodeMode.ts +1099 -0
  410. package/src/capabilities/Commands.ts +86 -0
  411. package/src/capabilities/ContextTools.ts +129 -0
  412. package/src/capabilities/Mcp.ts +426 -0
  413. package/src/capabilities/McpClient.ts +983 -0
  414. package/src/capabilities/MemoryNotes.ts +174 -0
  415. package/src/capabilities/Messaging.ts +261 -0
  416. package/src/capabilities/ModelContext.ts +354 -0
  417. package/src/capabilities/Redaction.ts +157 -0
  418. package/src/capabilities/Remembering.ts +550 -0
  419. package/src/capabilities/RunHooks.ts +280 -0
  420. package/src/capabilities/SemanticMemory.ts +447 -0
  421. package/src/capabilities/Subagent.ts +2486 -0
  422. package/src/capabilities/SubagentReservations.ts +850 -0
  423. package/src/capabilities/ToolDiscovery.ts +383 -0
  424. package/src/capabilities/WebCapture.ts +722 -0
  425. package/src/capabilities/WebSearch.ts +205 -0
  426. package/src/capabilities/internal/subagent-background.ts +1307 -0
  427. package/src/capabilities/internal/subagent-contract.ts +146 -0
  428. package/src/capabilities/internal/subagent-policy.ts +235 -0
  429. package/src/capabilities/internal/subagent-reporting.ts +136 -0
  430. package/src/capabilities/internal/utf8.ts +10 -0
  431. package/src/core/Agent.ts +623 -0
  432. package/src/core/AgentError.ts +172 -0
  433. package/src/core/AgentPolicy.ts +161 -0
  434. package/src/core/AgentUpdates.ts +100 -0
  435. package/src/core/FailureDiagnostic.ts +343 -0
  436. package/src/core/IdGenerator.ts +39 -0
  437. package/src/core/Identifiers.ts +48 -0
  438. package/src/core/Memory.ts +290 -0
  439. package/src/core/MemoryNamespace.ts +196 -0
  440. package/src/core/MemoryReference.ts +121 -0
  441. package/src/core/MemoryRevalidation.ts +185 -0
  442. package/src/core/MemoryStore.ts +368 -0
  443. package/src/core/Messaging.ts +72 -0
  444. package/src/core/Receipt.ts +42 -0
  445. package/src/core/RememberingStore.ts +300 -0
  446. package/src/core/RunEvent.ts +375 -0
  447. package/src/core/RunPolicyUsage.ts +19 -0
  448. package/src/core/SemanticMemoryIndex.ts +250 -0
  449. package/src/core/SemanticMemoryRevalidation.ts +254 -0
  450. package/src/core/SubagentContract.ts +189 -0
  451. package/src/core/Thread.ts +371 -0
  452. package/src/core/ToolExposure.ts +74 -0
  453. package/src/core/ToolResult.ts +190 -0
  454. package/src/core/Usage.ts +570 -0
  455. package/src/core/Worker.ts +240 -0
  456. package/src/core/internal/agent-updates.ts +34 -0
  457. package/src/core/internal/message-status.ts +60 -0
  458. package/src/core/internal/strict-schema.ts +14 -0
  459. package/src/core/internal/utf8.ts +23 -0
  460. package/src/durable/ActivityStore.ts +160 -0
  461. package/src/durable/Admin.ts +505 -0
  462. package/src/durable/AgentRegistration.ts +16 -0
  463. package/src/durable/Certification.ts +210 -0
  464. package/src/durable/CommittedActivity.ts +296 -0
  465. package/src/durable/Digest.ts +87 -0
  466. package/src/durable/DurableAgentRuntime.ts +11854 -0
  467. package/src/durable/DurableFailpoint.ts +111 -0
  468. package/src/durable/DurableFailpointTestControl.ts +39 -0
  469. package/src/durable/EventSource.ts +172 -0
  470. package/src/durable/GitHubWorkflowSource.ts +447 -0
  471. package/src/durable/LifecyclePublication.ts +311 -0
  472. package/src/durable/MessageDelivery.ts +878 -0
  473. package/src/durable/MessageDeliveryStoreConformance.ts +410 -0
  474. package/src/durable/OperationAuthorizer.ts +85 -0
  475. package/src/durable/PersistentHistory.ts +260 -0
  476. package/src/durable/PreparedInputAdmission.ts +57 -0
  477. package/src/durable/Records.ts +1099 -0
  478. package/src/durable/Recovery.ts +1018 -0
  479. package/src/durable/RunJournal.ts +1768 -0
  480. package/src/durable/Schedule.ts +513 -0
  481. package/src/durable/ScheduleStoreConformance.ts +638 -0
  482. package/src/durable/ScheduleTransition.ts +265 -0
  483. package/src/durable/Scheduling.ts +1077 -0
  484. package/src/durable/SqlMemoryStore.ts +1056 -0
  485. package/src/durable/SubmissionLedger.ts +1297 -0
  486. package/src/durable/SubmissionLedgerConformance.ts +4940 -0
  487. package/src/durable/SubmissionStatus.ts +14 -0
  488. package/src/durable/Subscription.ts +544 -0
  489. package/src/durable/SubscriptionInput.ts +144 -0
  490. package/src/durable/SubscriptionStoreConformance.ts +945 -0
  491. package/src/durable/SubscriptionTools.ts +327 -0
  492. package/src/durable/SubscriptionTransition.ts +302 -0
  493. package/src/durable/Subscriptions.ts +1210 -0
  494. package/src/durable/ThreadContextHistory.ts +227 -0
  495. package/src/durable/ThreadContextHistoryProjection.ts +216 -0
  496. package/src/durable/ThreadInvariants.ts +507 -0
  497. package/src/durable/ThreadProjection.ts +269 -0
  498. package/src/durable/ThreadProjectionMaintenance.ts +67 -0
  499. package/src/durable/ThreadStore.ts +637 -0
  500. package/src/durable/ThreadStoreConformance.ts +1296 -0
  501. package/src/durable/ToolReconciler.ts +109 -0
  502. package/src/durable/WakeScheduler.ts +134 -0
  503. package/src/durable/WorkerAdmission.ts +104 -0
  504. package/src/durable/WorkerHost.ts +205 -0
  505. package/src/durable/internal/agent-registration.ts +621 -0
  506. package/src/durable/internal/agent-updates.ts +306 -0
  507. package/src/durable/internal/foreign-diagnostic.ts +47 -0
  508. package/src/durable/internal/journal-checkpoint.ts +158 -0
  509. package/src/durable/internal/journal-metadata.ts +124 -0
  510. package/src/durable/internal/message-status.ts +20 -0
  511. package/src/durable/internal/messaging-host.ts +637 -0
  512. package/src/durable/internal/schedule-time.ts +303 -0
  513. package/src/durable/internal/thread-initialization.ts +195 -0
  514. package/src/durable/internal/worker-host.ts +3309 -0
  515. package/src/durable/internal/worker-runtime.ts +9 -0
  516. package/src/engine/AgentRuntime.ts +37 -0
  517. package/src/engine/Compaction.ts +11 -0
  518. package/src/engine/ContextCompactor.ts +277 -0
  519. package/src/engine/ContextHistory.ts +73 -0
  520. package/src/engine/ContextWindow.ts +72 -0
  521. package/src/engine/DurableStep.ts +132 -0
  522. package/src/engine/MessagingHost.ts +110 -0
  523. package/src/engine/Output.ts +2 -0
  524. package/src/engine/RunEventSink.ts +132 -0
  525. package/src/engine/RunOptions.ts +1127 -0
  526. package/src/engine/SubagentHost.ts +239 -0
  527. package/src/engine/ThreadHistory.ts +120 -0
  528. package/src/engine/ToolBroker.ts +157 -0
  529. package/src/engine/ToolExposure.ts +48 -0
  530. package/src/engine/internal/agent-runtime.ts +10845 -0
  531. package/src/engine/internal/bounded-value.ts +315 -0
  532. package/src/engine/internal/compaction.ts +678 -0
  533. package/src/engine/internal/error-diagnostic.ts +39 -0
  534. package/src/engine/internal/output-contract.ts +250 -0
  535. package/src/engine/internal/primitive-delta.ts +80 -0
  536. package/src/engine/internal/provider-result-staging.ts +211 -0
  537. package/src/engine/internal/tool-derivative.ts +106 -0
  538. package/src/engine/internal/tool-exposure.ts +224 -0
  539. package/src/engine/internal/tool-telemetry.ts +484 -0
  540. package/src/index.ts +100 -22
  541. package/src/sandbox/CodeExecutor.ts +352 -0
  542. package/src/sandbox/InteractiveBrowser.ts +339 -0
  543. package/src/sandbox/PageCapture.ts +691 -0
  544. package/src/sandbox/PageCrawl.ts +148 -0
  545. package/src/sandbox/PageScreenshot.ts +81 -0
  546. package/src/sandbox/Sandbox.ts +241 -0
@@ -0,0 +1,627 @@
1
+ import { n as utf8ByteLength } from "../utf8-DchGZRBd.mjs";
2
+ import { MemoryNamespaceAddress } from "../core/MemoryNamespace.mjs";
3
+ import { MemoryDocument, MemoryKey, MemoryMutationFailpoint, MemoryOperationConflict, MemoryReader, MemoryStorageError, MemoryWrite, MemoryWriter, applyMemoryWrite } from "../core/MemoryStore.mjs";
4
+ import { Clock, Context, Effect, Layer, Schema } from "effect";
5
+ import * as SqlClientService from "effect/unstable/sql/SqlClient";
6
+ //#region src/durable/SqlMemoryStore.ts
7
+ const STORAGE_VERSION = 2;
8
+ const METADATA_COMPONENT = "memory";
9
+ const DOCUMENT_TABLE = "effect_agent_memory_documents_v1";
10
+ const RECEIPT_TABLE = "effect_agent_memory_receipts_v1";
11
+ const USAGE_COMPONENT = "memory-usage";
12
+ const USAGE_TABLE = "effect_agent_memory_usage_v1";
13
+ const StoredJson = Schema.String.check(Schema.isMaxLength(16777216));
14
+ const EncodedMemoryChange = Schema.Struct({
15
+ commandJson: StoredJson,
16
+ documentJson: StoredJson,
17
+ resultJson: StoredJson
18
+ });
19
+ const equivalentContent = Schema.toEquivalence(Schema.toEncoded(MemoryWrite.Wire.members[0].fields.content));
20
+ const equivalentScopes = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.scopes);
21
+ /** Ordered commands committed atomically by the SQL memory adapter. */
22
+ const SqlMemoryWriteBatch = Schema.Array(MemoryWrite.Wire).check(Schema.isMaxLength(128));
23
+ /**
24
+ * SQL-only bulk writing. Results preserve input order, including exact operation replays.
25
+ * Commands see earlier staged revisions; any refusal rolls back the entire batch. Storage
26
+ * limits apply to every intermediate transition. Empty batches succeed without mutation.
27
+ * Supplied by the memory store Layers alongside MemoryWriter's single-command API.
28
+ */
29
+ var SqlMemoryBatchWriter = class extends Context.Service()("@effect-agent/thread/SqlMemoryBatchWriter") {};
30
+ const SqlStorageOwner = Context.Reference("@effect-agent/thread/SqlStorageOwner", { defaultValue: () => void 0 });
31
+ /**
32
+ * Independent adapter limits. Counts and encoded bytes include durable operation receipts.
33
+ * Bytes count UTF-8 row payloads plus 128 bytes per row, excluding SQLite pages/indexes.
34
+ * Replacements charge their byte delta; receipts and tombstones are never pruned.
35
+ * Optional reserves (default zero) withhold capacity from Put, within the hard totals.
36
+ * They require exclusive upgraded writer ownership: older writers count toward usage
37
+ * but do not honor reserves. Limits are captured when the writer Layer is built.
38
+ */
39
+ const SqlMemoryLimits = Context.Reference("@effect-agent/thread/SqlMemoryLimits", { defaultValue: () => ({
40
+ maxRowBytes: Number.MAX_SAFE_INTEGER,
41
+ maxStorageBytes: Number.MAX_SAFE_INTEGER,
42
+ maxDocuments: Number.MAX_SAFE_INTEGER,
43
+ maxReceipts: Number.MAX_SAFE_INTEGER
44
+ }) });
45
+ const Limits = Schema.Struct({
46
+ maxRowBytes: Schema.Natural,
47
+ maxStorageBytes: Schema.Natural,
48
+ maxDocuments: Schema.Natural,
49
+ maxReceipts: Schema.Natural,
50
+ reservedWithdrawalBytes: Schema.optional(Schema.Natural),
51
+ reservedWithdrawalReceipts: Schema.optional(Schema.Natural)
52
+ }).check(Schema.makeFilter((limits) => (limits.reservedWithdrawalBytes ?? 0) <= limits.maxStorageBytes && (limits.reservedWithdrawalReceipts ?? 0) <= limits.maxReceipts, { expected: "withdrawal reserves within hard storage limits" }));
53
+ const UsageRow = Schema.Struct({
54
+ documents: Schema.Natural,
55
+ receipts: Schema.Natural,
56
+ bytes: Schema.Natural
57
+ });
58
+ var MemoryViews = class {
59
+ entries = /* @__PURE__ */ new Map();
60
+ bytes = 0;
61
+ clear = () => {
62
+ this.entries.clear();
63
+ this.bytes = 0;
64
+ };
65
+ get(key) {
66
+ const entry = this.entries.get(key);
67
+ if (entry === void 0) return void 0;
68
+ this.entries.delete(key);
69
+ this.entries.set(key, entry);
70
+ return entry.view;
71
+ }
72
+ set(key, view) {
73
+ const previous = this.entries.get(key);
74
+ if (previous !== void 0) this.bytes -= previous.bytes;
75
+ this.entries.delete(key);
76
+ const bytes = utf8ByteLength(key) + utf8ByteLength(JSON.stringify(view)) + 128;
77
+ if (bytes > 4194304) return;
78
+ this.entries.set(key, {
79
+ view,
80
+ bytes
81
+ });
82
+ this.bytes += bytes;
83
+ while (this.entries.size > 128 || this.bytes > 4194304) {
84
+ const oldest = this.entries.entries().next().value;
85
+ if (oldest === void 0) break;
86
+ this.bytes -= oldest[1].bytes;
87
+ this.entries.delete(oldest[0]);
88
+ }
89
+ }
90
+ };
91
+ const ownedViews = /* @__PURE__ */ new WeakMap();
92
+ const memoryViews = Effect.fn("SqliteMemoryStore.memoryViews")(function* () {
93
+ const owner = yield* SqlStorageOwner;
94
+ if (owner === void 0) return void 0;
95
+ const identity = owner.identity ?? owner;
96
+ let views = ownedViews.get(identity);
97
+ if (views === void 0) {
98
+ views = new MemoryViews();
99
+ ownedViews.set(identity, views);
100
+ owner.invalidators.add(views.clear);
101
+ }
102
+ return views;
103
+ });
104
+ const documentViewKey = (key) => JSON.stringify([
105
+ "document",
106
+ key.namespace.address,
107
+ key.id
108
+ ]);
109
+ const receiptViewKey = (write) => JSON.stringify([
110
+ "receipt",
111
+ write.key.namespace.address,
112
+ write.operationId
113
+ ]);
114
+ const documentBytesSql = (row) => `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.document_json AS BLOB)) + 128`;
115
+ const receiptBytesSql = (row) => `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.operation_id AS BLOB)) + length(CAST(${row}.command_json AS BLOB)) + length(CAST(${row}.result_json AS BLOB)) + 128`;
116
+ const usageTriggers = [{
117
+ table: DOCUMENT_TABLE,
118
+ count: "documents",
119
+ bytes: documentBytesSql
120
+ }, {
121
+ table: RECEIPT_TABLE,
122
+ count: "receipts",
123
+ bytes: receiptBytesSql
124
+ }].flatMap(({ table, count, bytes }) => [
125
+ "INSERT",
126
+ "UPDATE",
127
+ "DELETE"
128
+ ].map((event) => ({
129
+ name: `${table}_usage_${event.toLowerCase()}`,
130
+ sql: `CREATE TRIGGER ${table}_usage_${event.toLowerCase()} AFTER ${event} ON ${table}
131
+ BEGIN
132
+ UPDATE ${USAGE_TABLE} SET
133
+ ${count} = ${count} + ${event === "INSERT" ? 1 : event === "DELETE" ? -1 : 0},
134
+ bytes = bytes + (${event === "DELETE" ? "0" : bytes("NEW")}) - (${event === "INSERT" ? "0" : bytes("OLD")})
135
+ WHERE singleton = 1;
136
+ SELECT CASE WHEN changes() <> 1 THEN RAISE(ABORT, 'missing memory usage') END;
137
+ END`
138
+ })));
139
+ var MemoryMetadataRow = class extends Schema.Class("@effect-agent/storage-sqlite/MemoryMetadataRow")({ version: Schema.Int }) {};
140
+ var MemoryTableRow = class extends Schema.Class("@effect-agent/storage-sqlite/MemoryTableRow")({ name: Schema.NonEmptyString }) {};
141
+ var MemoryDocumentRow = class extends Schema.Class("@effect-agent/storage-sqlite/MemoryDocumentRow")({
142
+ namespace: MemoryNamespaceAddress,
143
+ source_id: MemoryKey.Wire.fields.id,
144
+ format_version: Schema.Int,
145
+ generation: Schema.Int,
146
+ revision: Schema.NonEmptyString,
147
+ document_json: StoredJson,
148
+ stored_bytes: Schema.Natural
149
+ }) {};
150
+ var MemoryReceiptRow = class extends Schema.Class("@effect-agent/storage-sqlite/MemoryReceiptRow")({
151
+ namespace: MemoryNamespaceAddress,
152
+ operation_id: MemoryWrite.Wire.members[0].fields.operationId,
153
+ source_id: MemoryKey.Wire.fields.id,
154
+ format_version: Schema.Int,
155
+ command_json: StoredJson,
156
+ result_json: StoredJson
157
+ }) {};
158
+ var MemoryChangeCountRow = class extends Schema.Class("@effect-agent/storage-sqlite/MemoryChangeCountRow")({ changed: Schema.Int }) {};
159
+ var StoredMemoryCommand = class extends Schema.Class("@effect-agent/storage-sqlite/StoredMemoryCommand")({
160
+ version: Schema.Literal(STORAGE_VERSION),
161
+ value: MemoryWrite.Wire
162
+ }) {};
163
+ var StoredMemoryResult = class extends Schema.Class("@effect-agent/storage-sqlite/StoredMemoryResult")({
164
+ version: Schema.Literal(STORAGE_VERSION),
165
+ value: MemoryDocument.Wire
166
+ }) {};
167
+ const StoredVersionHeader = Schema.Struct({ version: Schema.Int });
168
+ const storageError = (operation, reason = "unavailable") => MemoryStorageError.make({
169
+ operation,
170
+ reason
171
+ });
172
+ const query = (effect, operation) => effect.pipe(Effect.mapError(() => storageError(operation)));
173
+ const decodeRows = Effect.fn("SqliteMemoryStore.decodeRows")(function* (schema, rows, operation) {
174
+ return yield* Schema.decodeUnknownEffect(Schema.Array(schema))(rows).pipe(Effect.mapError(() => storageError(operation, "corrupt")));
175
+ });
176
+ const decodeInput = Effect.fn("SqliteMemoryStore.decodeInput")(function* (schema, value, operation) {
177
+ return yield* Schema.decodeUnknownEffect(schema)(value).pipe(Effect.mapError(() => storageError(operation, "invalid-input")));
178
+ });
179
+ const encodeJson = Effect.fn("SqliteMemoryStore.encodeJson")(function* (schema, value, operation) {
180
+ return yield* Schema.encodeEffect(Schema.fromJsonString(schema))(value).pipe(Effect.mapError(() => storageError(operation, "corrupt")));
181
+ });
182
+ const validateEncodedChange = Effect.fn("SqliteMemoryStore.validateEncodedChange")(function* (encoded, operation) {
183
+ yield* Schema.decodeEffect(EncodedMemoryChange)(encoded).pipe(Effect.mapError(() => storageError(operation, "invalid-input")));
184
+ });
185
+ const decodeVersionedJson = Effect.fn("SqliteMemoryStore.decodeVersionedJson")(function* (schema, value, operation) {
186
+ if ((yield* Schema.decodeEffect(Schema.fromJsonString(StoredVersionHeader))(value).pipe(Effect.mapError(() => storageError(operation, "corrupt")))).version !== STORAGE_VERSION) return yield* storageError(operation, "incompatible");
187
+ const decoded = yield* Schema.decodeEffect(Schema.fromJsonString(schema))(value).pipe(Effect.mapError(() => storageError(operation, "corrupt")));
188
+ if ((yield* encodeJson(schema, decoded, operation)) !== value) return yield* storageError(operation, "corrupt");
189
+ return decoded;
190
+ });
191
+ const validateDocument = Effect.fn("SqliteMemoryStore.validateDocument")(function* (document, key, operation) {
192
+ if (document.key.namespace.address !== key.namespace.address || document.key.id !== key.id || document.source.id !== key.id || document.source.revision !== String(document.generation) || document.generation === 1 !== (document.predecessor === null) || document.predecessor !== null && (document.predecessor.id !== key.id || document.predecessor.revision !== String(document.generation - 1))) return yield* storageError(operation, "corrupt");
193
+ return document;
194
+ });
195
+ const validateReceiptResult = Effect.fn("SqliteMemoryStore.validateReceiptResult")(function* (command, result, operation) {
196
+ if ((result.predecessor?.revision ?? null) !== command.expectedRevision) return yield* storageError(operation, "corrupt");
197
+ if (command._tag === "Put") {
198
+ if (result._tag !== "ActiveMemoryDocument" || result.source.locator !== command.locator) return yield* storageError(operation, "corrupt");
199
+ if (!equivalentContent(command.content, result.content) || !equivalentScopes(command.scopes, result.scopes)) return yield* storageError(operation, "corrupt");
200
+ return;
201
+ }
202
+ if (result._tag !== "WithdrawnMemoryDocument" || result.reason !== command.reason || result.predecessor === null || result.source.locator !== result.predecessor.locator) return yield* storageError(operation, "corrupt");
203
+ });
204
+ const readUsage = Effect.fn("SqliteMemoryStore.readUsage")(function* () {
205
+ const sql = yield* SqlClientService.SqlClient;
206
+ const views = yield* memoryViews();
207
+ const operation = "read memory usage";
208
+ const rows = yield* query(sql`
209
+ SELECT documents, receipts, bytes FROM effect_agent_memory_usage_v1 WHERE singleton = 1
210
+ `, operation).pipe(Effect.flatMap((rows) => decodeRows(UsageRow, rows, operation)));
211
+ if (rows.length !== 1) return yield* storageError(operation, "corrupt");
212
+ views?.set("usage", {
213
+ _tag: "Usage",
214
+ value: rows[0]
215
+ });
216
+ return rows[0];
217
+ });
218
+ const initializeMemoryUsage = Effect.fn("SqliteMemoryStore.initializeUsage")(function* () {
219
+ const sql = yield* SqlClientService.SqlClient;
220
+ const failpoint = yield* MemoryMutationFailpoint;
221
+ const operation = "initialize memory usage";
222
+ const metadata = yield* sql`
223
+ SELECT version FROM effect_agent_memory_metadata WHERE component = ${USAGE_COMPONENT}
224
+ `.pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));
225
+ const objects = yield* sql`
226
+ SELECT name FROM sqlite_master
227
+ WHERE name = ${USAGE_TABLE} OR name IN ${sql.in(usageTriggers.map((trigger) => trigger.name))}
228
+ `.pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));
229
+ if (metadata.length === 0) {
230
+ if (objects.length !== 0) return yield* storageError(operation, "corrupt");
231
+ yield* failpoint.hit("memory:initialize:before-accounting");
232
+ yield* sql`
233
+ CREATE TABLE effect_agent_memory_usage_v1 (
234
+ singleton INTEGER PRIMARY KEY NOT NULL CHECK (singleton = 1),
235
+ documents INTEGER NOT NULL CHECK (typeof(documents) = 'integer' AND documents BETWEEN 0 AND 9007199254740991),
236
+ receipts INTEGER NOT NULL CHECK (typeof(receipts) = 'integer' AND receipts BETWEEN 0 AND 9007199254740991),
237
+ bytes INTEGER NOT NULL CHECK (typeof(bytes) = 'integer' AND bytes BETWEEN 0 AND 9007199254740991)
238
+ )
239
+ `;
240
+ yield* sql`
241
+ INSERT INTO effect_agent_memory_usage_v1 (singleton, documents, receipts, bytes)
242
+ SELECT 1,
243
+ (SELECT COUNT(*) FROM effect_agent_memory_documents_v1),
244
+ (SELECT COUNT(*) FROM effect_agent_memory_receipts_v1),
245
+ COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +
246
+ length(CAST(document_json AS BLOB)) + 128) FROM effect_agent_memory_documents_v1), 0) +
247
+ COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +
248
+ length(CAST(operation_id AS BLOB)) + length(CAST(command_json AS BLOB)) +
249
+ length(CAST(result_json AS BLOB)) + 128) FROM effect_agent_memory_receipts_v1), 0)
250
+ `;
251
+ for (const trigger of usageTriggers) yield* sql.unsafe(trigger.sql);
252
+ yield* sql`
253
+ INSERT INTO effect_agent_memory_metadata (component, version) VALUES (${USAGE_COMPONENT}, 1)
254
+ `;
255
+ yield* failpoint.hit("memory:initialize:after-accounting");
256
+ } else {
257
+ if (metadata.length !== 1 || metadata[0].version !== 1) return yield* storageError(operation, "incompatible");
258
+ if (objects.length !== usageTriggers.length + 1) return yield* storageError(operation, "corrupt");
259
+ }
260
+ yield* readUsage();
261
+ });
262
+ const initializeMemorySchema = Effect.fn("SqliteMemoryStore.initialize")(function* () {
263
+ const sql = yield* SqlClientService.SqlClient;
264
+ const owner = yield* SqlStorageOwner;
265
+ const transaction = owner === void 0 ? sql.withTransaction : owner.transaction;
266
+ const failpoint = yield* MemoryMutationFailpoint;
267
+ yield* failpoint.hit("memory:initialize:before");
268
+ yield* transaction(Effect.gen(function* () {
269
+ yield* sql`
270
+ CREATE TABLE IF NOT EXISTS effect_agent_memory_metadata (
271
+ component TEXT PRIMARY KEY NOT NULL,
272
+ version INTEGER NOT NULL
273
+ )
274
+ `;
275
+ const metadataRows = yield* sql`
276
+ SELECT version
277
+ FROM effect_agent_memory_metadata
278
+ WHERE component = ${METADATA_COMPONENT}
279
+ `;
280
+ const metadata = yield* decodeRows(MemoryMetadataRow, metadataRows, "decode memory schema version");
281
+ if (metadata.length > 1) return yield* storageError("decode memory schema version", "corrupt");
282
+ const currentVersion = metadata[0]?.version;
283
+ if (currentVersion !== void 0 && currentVersion !== STORAGE_VERSION) return yield* storageError("initialize memory schema", "incompatible");
284
+ if (currentVersion === void 0) {
285
+ const tableRows = yield* sql`
286
+ SELECT name
287
+ FROM sqlite_master
288
+ WHERE type = 'table' AND name IN (${DOCUMENT_TABLE}, ${RECEIPT_TABLE})
289
+ `;
290
+ if ((yield* decodeRows(MemoryTableRow, tableRows, "inspect memory schema")).length > 0) return yield* storageError("initialize memory schema", "incompatible");
291
+ yield* sql`
292
+ CREATE TABLE effect_agent_memory_documents_v1 (
293
+ namespace TEXT NOT NULL,
294
+ source_id TEXT NOT NULL,
295
+ format_version INTEGER NOT NULL,
296
+ generation INTEGER NOT NULL,
297
+ revision TEXT NOT NULL,
298
+ document_json TEXT NOT NULL,
299
+ PRIMARY KEY (namespace, source_id)
300
+ )
301
+ `;
302
+ yield* sql`
303
+ CREATE TABLE effect_agent_memory_receipts_v1 (
304
+ namespace TEXT NOT NULL,
305
+ operation_id TEXT NOT NULL,
306
+ source_id TEXT NOT NULL,
307
+ format_version INTEGER NOT NULL,
308
+ command_json TEXT NOT NULL,
309
+ result_json TEXT NOT NULL,
310
+ PRIMARY KEY (namespace, operation_id)
311
+ )
312
+ `;
313
+ yield* sql`
314
+ INSERT INTO effect_agent_memory_metadata (component, version)
315
+ VALUES (${METADATA_COMPONENT}, ${STORAGE_VERSION})
316
+ `;
317
+ }
318
+ yield* sql`
319
+ SELECT namespace, source_id, format_version, generation, revision, document_json
320
+ FROM effect_agent_memory_documents_v1
321
+ LIMIT 0
322
+ `;
323
+ yield* sql`
324
+ SELECT namespace, operation_id, source_id, format_version, command_json, result_json
325
+ FROM effect_agent_memory_receipts_v1
326
+ LIMIT 0
327
+ `;
328
+ yield* initializeMemoryUsage();
329
+ })).pipe(Effect.catchTag("SqlError", () => Effect.fail(storageError("initialize memory schema"))));
330
+ yield* failpoint.hit("memory:initialize:after");
331
+ });
332
+ const makeMemoryReader = Effect.fn("SqliteMemoryStore.makeReader")(function* () {
333
+ const sql = yield* SqlClientService.SqlClient;
334
+ const owner = yield* SqlStorageOwner;
335
+ const views = yield* memoryViews();
336
+ const readDocuments = Effect.fn("SqliteMemoryStore.readDocuments")(function* (keys, operation) {
337
+ const found = /* @__PURE__ */ new Map();
338
+ const missing = /* @__PURE__ */ new Map();
339
+ for (const key of keys) {
340
+ const viewKey = documentViewKey(key);
341
+ const cached = views?.get(viewKey);
342
+ if (cached?._tag === "Document") found.set(viewKey, cached.value);
343
+ else missing.set(viewKey, key);
344
+ }
345
+ const pending = Array.from(missing);
346
+ for (let index = 0; index < pending.length; index += 50) {
347
+ const requested = new Map(pending.slice(index, index + 50));
348
+ const rawRows = yield* query(sql`
349
+ SELECT namespace, source_id, format_version, generation, revision, document_json,
350
+ length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +
351
+ length(CAST(document_json AS BLOB)) + 128 AS stored_bytes
352
+ FROM effect_agent_memory_documents_v1
353
+ WHERE ${sql.or(Array.from(requested.values(), (key) => sql`(namespace = ${key.namespace.address} AND source_id = ${key.id})`))}
354
+ `, operation);
355
+ const rows = yield* decodeRows(MemoryDocumentRow, rawRows, operation);
356
+ for (const row of rows) {
357
+ const viewKey = JSON.stringify([
358
+ "document",
359
+ row.namespace,
360
+ row.source_id
361
+ ]);
362
+ const key = requested.get(viewKey);
363
+ if (key === void 0 || found.has(viewKey)) return yield* storageError(operation, "corrupt");
364
+ if (row.format_version !== STORAGE_VERSION) return yield* storageError(operation, "incompatible");
365
+ const document = (yield* decodeVersionedJson(StoredMemoryResult, row.document_json, operation)).value;
366
+ yield* validateDocument(document, key, operation);
367
+ if (row.generation !== document.generation || row.revision !== document.source.revision) return yield* storageError(operation, "corrupt");
368
+ found.set(viewKey, {
369
+ document,
370
+ bytes: row.stored_bytes
371
+ });
372
+ }
373
+ for (const viewKey of requested.keys()) {
374
+ const value = found.get(viewKey) ?? null;
375
+ found.set(viewKey, value);
376
+ views?.set(viewKey, {
377
+ _tag: "Document",
378
+ value
379
+ });
380
+ }
381
+ }
382
+ return found;
383
+ }, (effect) => owner === void 0 ? effect : owner.read(effect));
384
+ return {
385
+ get: Effect.fn("SqliteMemoryStore.get")(function* (key) {
386
+ const decodedKey = yield* decodeInput(MemoryKey.Wire, key, "get memory document");
387
+ return (yield* readDocuments([decodedKey], "get memory document")).get(documentViewKey(decodedKey))?.document ?? null;
388
+ }),
389
+ readDocuments
390
+ };
391
+ });
392
+ const makeMemoryServices = Effect.fn("SqliteMemoryStore.make")(function* () {
393
+ const sql = yield* SqlClientService.SqlClient;
394
+ const owner = yield* SqlStorageOwner;
395
+ const views = yield* memoryViews();
396
+ const usage = readUsage().pipe(Effect.provideService(SqlClientService.SqlClient, sql), Effect.provideService(SqlStorageOwner, owner));
397
+ const transaction = (effect) => owner === void 0 ? sql.withTransaction(effect) : owner.transaction(effect).pipe(Effect.provideService(SqlClientService.SqlClient, sql));
398
+ const failpoint = yield* MemoryMutationFailpoint;
399
+ const limits = yield* decodeInput(Limits, yield* SqlMemoryLimits, "memory storage limits");
400
+ yield* initializeMemorySchema();
401
+ const { get, readDocuments } = yield* makeMemoryReader();
402
+ const readReceipts = Effect.fn("SqliteMemoryStore.readReceipts")(function* (writes, operation) {
403
+ const found = /* @__PURE__ */ new Map();
404
+ const missing = /* @__PURE__ */ new Map();
405
+ for (const write of writes) {
406
+ const viewKey = receiptViewKey(write);
407
+ const cached = views?.get(viewKey);
408
+ if (cached?._tag === "Receipt") found.set(viewKey, cached.value);
409
+ else missing.set(viewKey, write);
410
+ }
411
+ const pending = Array.from(missing);
412
+ for (let index = 0; index < pending.length; index += 50) {
413
+ const requested = new Map(pending.slice(index, index + 50));
414
+ const rawRows = yield* query(sql`
415
+ SELECT namespace, operation_id, source_id, format_version, command_json, result_json
416
+ FROM effect_agent_memory_receipts_v1
417
+ WHERE ${sql.or(Array.from(requested.values(), (write) => sql`(namespace = ${write.key.namespace.address} AND operation_id = ${write.operationId})`))}
418
+ `, operation);
419
+ const rows = yield* decodeRows(MemoryReceiptRow, rawRows, operation);
420
+ for (const row of rows) {
421
+ const viewKey = JSON.stringify([
422
+ "receipt",
423
+ row.namespace,
424
+ row.operation_id
425
+ ]);
426
+ if (!requested.has(viewKey) || found.has(viewKey)) return yield* storageError(operation, "corrupt");
427
+ if (row.format_version !== STORAGE_VERSION) return yield* storageError(operation, "incompatible");
428
+ const command = yield* decodeVersionedJson(StoredMemoryCommand, row.command_json, `${operation} command`);
429
+ const result = yield* decodeVersionedJson(StoredMemoryResult, row.result_json, `${operation} result`);
430
+ if (row.namespace !== command.value.key.namespace.address || row.operation_id !== command.value.operationId || row.source_id !== command.value.key.id || result.value.key.namespace.address !== command.value.key.namespace.address || result.value.key.id !== command.value.key.id) return yield* storageError(operation, "corrupt");
431
+ yield* validateDocument(result.value, command.value.key, operation);
432
+ yield* validateReceiptResult(command.value, result.value, operation);
433
+ found.set(viewKey, {
434
+ commandJson: row.command_json,
435
+ result: result.value
436
+ });
437
+ }
438
+ for (const viewKey of requested.keys()) {
439
+ const value = found.get(viewKey) ?? null;
440
+ found.set(viewKey, value);
441
+ views?.set(viewKey, {
442
+ _tag: "Receipt",
443
+ value
444
+ });
445
+ }
446
+ }
447
+ return found;
448
+ });
449
+ const changeMany = Effect.fn("SqliteMemoryStore.changeMany")(function* (writes) {
450
+ const operation = "change memory document";
451
+ const decodedWrites = yield* decodeInput(SqlMemoryWriteBatch, writes, operation);
452
+ if (decodedWrites.length === 0) return [];
453
+ const commands = yield* Effect.forEach(decodedWrites, (write) => encodeJson(StoredMemoryCommand, StoredMemoryCommand.make({
454
+ version: STORAGE_VERSION,
455
+ value: write
456
+ }), "encode memory command").pipe(Effect.map((commandJson) => ({
457
+ write,
458
+ commandJson
459
+ }))));
460
+ yield* failpoint.hit("memory:change:before");
461
+ const transactionResult = yield* transaction(Effect.gen(function* () {
462
+ const retainedReceipts = yield* readReceipts(decodedWrites, operation);
463
+ const retainedDocuments = yield* readDocuments(decodedWrites.filter((write) => retainedReceipts.get(receiptViewKey(write)) === null).map((write) => write.key), operation);
464
+ const documents = /* @__PURE__ */ new Map();
465
+ const receipts = /* @__PURE__ */ new Map();
466
+ const results = [];
467
+ let projectedUsage;
468
+ for (const { write, commandJson } of commands) {
469
+ const receiptKey = receiptViewKey(write);
470
+ const receipt = receipts.get(receiptKey) ?? retainedReceipts.get(receiptKey) ?? null;
471
+ if (receipt !== null) {
472
+ if (receipt.commandJson !== commandJson) return yield* MemoryOperationConflict.make({
473
+ key: write.key,
474
+ operationId: write.operationId
475
+ });
476
+ results.push(receipt.result);
477
+ continue;
478
+ }
479
+ const documentKey = documentViewKey(write.key);
480
+ const currentRow = documents.get(documentKey) ?? retainedDocuments.get(documentKey) ?? null;
481
+ const current = currentRow?.document ?? null;
482
+ const modifiedAt = yield* Clock.currentTimeMillis;
483
+ const next = yield* applyMemoryWrite(current, write, modifiedAt);
484
+ const resultJson = yield* encodeJson(StoredMemoryResult, StoredMemoryResult.make({
485
+ version: STORAGE_VERSION,
486
+ value: next
487
+ }), "encode memory result");
488
+ const documentJson = resultJson;
489
+ yield* validateEncodedChange({
490
+ commandJson,
491
+ documentJson,
492
+ resultJson
493
+ }, operation);
494
+ const bytes = utf8ByteLength;
495
+ const identityBytes = bytes(next.key.namespace.address) + bytes(next.key.id);
496
+ const resultBytes = bytes(resultJson);
497
+ const documentBytes = identityBytes + resultBytes + 128;
498
+ const receiptBytes = identityBytes + bytes(write.operationId) + bytes(commandJson) + resultBytes + 128;
499
+ if (Math.max(documentBytes, receiptBytes) > limits.maxRowBytes) return yield* storageError("memory row byte limit", "invalid-input");
500
+ const cachedUsage = views?.get("usage");
501
+ const used = projectedUsage ?? (cachedUsage?._tag === "Usage" ? cachedUsage.value : yield* usage);
502
+ if (used.bytes < (currentRow?.bytes ?? 0) || current !== null && used.documents === 0) return yield* storageError("read memory usage", "corrupt");
503
+ const maxReceipts = limits.maxReceipts - (write._tag === "Put" ? limits.reservedWithdrawalReceipts ?? 0 : 0);
504
+ const maxStorageBytes = limits.maxStorageBytes - (write._tag === "Put" ? limits.reservedWithdrawalBytes ?? 0 : 0);
505
+ if (used.documents > limits.maxDocuments - (current === null ? 1 : 0) || used.receipts >= maxReceipts || used.bytes - (currentRow?.bytes ?? 0) > maxStorageBytes - documentBytes - receiptBytes) return yield* storageError("memory storage limit", "invalid-input");
506
+ projectedUsage = {
507
+ documents: used.documents + (current === null ? 1 : 0),
508
+ receipts: used.receipts + 1,
509
+ bytes: used.bytes - (currentRow?.bytes ?? 0) + documentBytes + receiptBytes
510
+ };
511
+ documents.set(documentKey, {
512
+ document: next,
513
+ bytes: documentBytes,
514
+ documentJson
515
+ });
516
+ receipts.set(receiptKey, {
517
+ write,
518
+ commandJson,
519
+ resultJson,
520
+ result: next
521
+ });
522
+ results.push(next);
523
+ }
524
+ if (projectedUsage === void 0) return {
525
+ documents: results,
526
+ changed: false
527
+ };
528
+ const documentRows = Array.from(documents.values(), ({ document, documentJson }) => ({
529
+ namespace: document.key.namespace.address,
530
+ source_id: document.key.id,
531
+ format_version: STORAGE_VERSION,
532
+ generation: document.generation,
533
+ revision: document.source.revision,
534
+ document_json: documentJson
535
+ }));
536
+ for (let index = 0; index < documentRows.length; index += 16) {
537
+ const chunk = documentRows.slice(index, index + 16);
538
+ const changedRows = yield* sql`
539
+ INSERT INTO effect_agent_memory_documents_v1 ${sql.insert(chunk)}
540
+ ON CONFLICT (namespace, source_id) DO UPDATE SET
541
+ format_version = excluded.format_version,
542
+ generation = excluded.generation,
543
+ revision = excluded.revision,
544
+ document_json = excluded.document_json
545
+ RETURNING 1 AS changed
546
+ `;
547
+ const changed = yield* decodeRows(MemoryChangeCountRow, changedRows, operation);
548
+ if (changed.length !== chunk.length || changed.some((row) => row.changed !== 1)) return yield* storageError(operation, "corrupt");
549
+ }
550
+ yield* failpoint.hit("memory:change:after-state");
551
+ const receiptRows = Array.from(receipts.values(), ({ write, commandJson, resultJson }) => ({
552
+ namespace: write.key.namespace.address,
553
+ operation_id: write.operationId,
554
+ source_id: write.key.id,
555
+ format_version: STORAGE_VERSION,
556
+ command_json: commandJson,
557
+ result_json: resultJson
558
+ }));
559
+ for (let index = 0; index < receiptRows.length; index += 16) yield* sql`
560
+ INSERT INTO effect_agent_memory_receipts_v1 ${sql.insert(receiptRows.slice(index, index + 16))}
561
+ `;
562
+ yield* failpoint.hit("memory:change:after-receipt");
563
+ for (const [key, { document, bytes }] of documents) views?.set(key, {
564
+ _tag: "Document",
565
+ value: {
566
+ document,
567
+ bytes
568
+ }
569
+ });
570
+ for (const [key, { commandJson, result }] of receipts) views?.set(key, {
571
+ _tag: "Receipt",
572
+ value: {
573
+ commandJson,
574
+ result
575
+ }
576
+ });
577
+ views?.set("usage", {
578
+ _tag: "Usage",
579
+ value: projectedUsage
580
+ });
581
+ return {
582
+ documents: results,
583
+ changed: true
584
+ };
585
+ })).pipe(Effect.catchTag("SqlError", () => Effect.fail(storageError(operation))));
586
+ if (transactionResult.changed) yield* failpoint.hit("memory:change:after");
587
+ return transactionResult.documents;
588
+ });
589
+ const change = Effect.fn("SqliteMemoryStore.change")(function* (write) {
590
+ return (yield* changeMany([write]))[0];
591
+ });
592
+ const batchWriter = SqlMemoryBatchWriter.of({ changeMany: Effect.fn("SqlMemoryBatchWriter.changeMany")(function* (writes) {
593
+ const documents = yield* changeMany(writes);
594
+ return yield* Effect.forEach(documents, (document, index) => MemoryDocument.restore(writes[index].key.namespace, document));
595
+ }) });
596
+ return Context.make(MemoryReader, MemoryReader.fromAdapter({ get })).pipe(Context.add(MemoryWriter, MemoryWriter.fromAdapter({ change })), Context.add(SqlMemoryBatchWriter, batchWriter));
597
+ });
598
+ /** SQLite memory ports with the mutation failpoint kept injectable for recovery tests. */
599
+ const memoryStoreLayerWithFailpoints = Layer.effectContext(makeMemoryServices());
600
+ /** SQLite memory reader, single writer and batch writer with the production no-op failpoint. */
601
+ const memoryStoreLayer = memoryStoreLayerWithFailpoints.pipe(Layer.provide(MemoryMutationFailpoint.layer));
602
+ /** Reads an existing memory schema without writes, transactions, or mutation failpoints. */
603
+ const memoryReaderLayer = Layer.effect(MemoryReader, Effect.gen(function* () {
604
+ const sql = yield* SqlClientService.SqlClient;
605
+ const operation = "open memory reader";
606
+ const tables = yield* query(sql`
607
+ SELECT name FROM sqlite_master
608
+ WHERE type = 'table' AND name IN (
609
+ 'effect_agent_memory_metadata', ${DOCUMENT_TABLE}, ${RECEIPT_TABLE}
610
+ )
611
+ `, operation).pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));
612
+ if (tables.length !== 3) return yield* storageError(operation, tables.length === 0 ? "unavailable" : "incompatible");
613
+ const metadata = yield* query(sql`
614
+ SELECT version FROM effect_agent_memory_metadata WHERE component = ${METADATA_COMPONENT}
615
+ `, operation).pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));
616
+ if (metadata.length !== 1 || metadata[0].version !== STORAGE_VERSION) return yield* storageError(operation, "incompatible");
617
+ yield* query(sql`
618
+ SELECT namespace, source_id, format_version, generation, revision, document_json
619
+ FROM effect_agent_memory_documents_v1 LIMIT 0
620
+ `, operation);
621
+ const { get } = yield* makeMemoryReader();
622
+ return MemoryReader.fromAdapter({ get });
623
+ }));
624
+ //#endregion
625
+ export { SqlMemoryBatchWriter, SqlMemoryLimits, SqlMemoryWriteBatch, SqlStorageOwner, memoryReaderLayer, memoryStoreLayer, memoryStoreLayerWithFailpoints };
626
+
627
+ //# sourceMappingURL=SqlMemoryStore.mjs.map