@remnic/core 10.0.60 → 10.0.62

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 (289) hide show
  1. package/dist/access-admin-ops-surface.js +25 -24
  2. package/dist/access-authorization-probe.js +26 -25
  3. package/dist/access-boundary.js +25 -24
  4. package/dist/access-cli.js +73 -72
  5. package/dist/access-cli.js.map +1 -1
  6. package/dist/access-extraction-force-flush.js +25 -24
  7. package/dist/access-http-briefing.js +26 -25
  8. package/dist/access-http-query.js +27 -26
  9. package/dist/access-http.js +44 -43
  10. package/dist/access-identity-continuity-surface.js +25 -24
  11. package/dist/access-lcm-surface.js +25 -24
  12. package/dist/access-mcp.js +36 -35
  13. package/dist/access-namespace-preflight.js +25 -24
  14. package/dist/access-observe-write-category.js +4 -4
  15. package/dist/access-observe-write-surface.js +25 -24
  16. package/dist/access-operations-batch.js +27 -26
  17. package/dist/access-operations.js +34 -33
  18. package/dist/access-recall-concurrency.js +25 -24
  19. package/dist/access-recall-diagnostics.js +2 -2
  20. package/dist/access-recall-response.js +25 -24
  21. package/dist/access-recall-surface.js +25 -24
  22. package/dist/access-schema.js +3 -3
  23. package/dist/access-service.js +25 -24
  24. package/dist/access-surface-catalog.js +27 -26
  25. package/dist/access-surface-catalog.js.map +1 -1
  26. package/dist/active-recall.js +8 -6
  27. package/dist/active-recall.js.map +1 -1
  28. package/dist/briefing.js +8 -6
  29. package/dist/buffer-persistence.d.ts +14 -3
  30. package/dist/buffer-persistence.d.ts.map +1 -1
  31. package/dist/buffer-persistence.js +1 -1
  32. package/dist/buffer-turn-helpers.d.ts +7 -0
  33. package/dist/buffer-turn-helpers.d.ts.map +1 -1
  34. package/dist/buffer-turn-helpers.js +5 -3
  35. package/dist/buffer.d.ts +5 -1
  36. package/dist/buffer.d.ts.map +1 -1
  37. package/dist/buffer.js +3 -3
  38. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-GWVG7LGC.js} +2 -2
  39. package/dist/causal-consolidation.js +9 -7
  40. package/dist/causal-consolidation.js.map +1 -1
  41. package/dist/{chunk-VHBGJAYC.js → chunk-25QK3LR2.js} +2 -2
  42. package/dist/{chunk-X2TZWVCC.js → chunk-3HLWLYRD.js} +2 -2
  43. package/dist/{chunk-TIS6T6UP.js → chunk-3VNRDRBM.js} +2 -2
  44. package/dist/{chunk-4O4VAEWH.js → chunk-4NLHEE2Z.js} +2 -2
  45. package/dist/{chunk-3DG2YAAX.js → chunk-6EZPYZT3.js} +62 -35
  46. package/dist/chunk-6EZPYZT3.js.map +1 -0
  47. package/dist/{chunk-I6UTOUBK.js → chunk-6VBKU3FY.js} +150 -345
  48. package/dist/chunk-6VBKU3FY.js.map +1 -0
  49. package/dist/{chunk-66CC6L6R.js → chunk-76LKZ42K.js} +2 -2
  50. package/dist/{chunk-LR7RW4T6.js → chunk-7ETWIBTO.js} +3 -3
  51. package/dist/{chunk-JM2WJBP7.js → chunk-7JFXXA57.js} +2 -2
  52. package/dist/{chunk-PIVSUPF2.js → chunk-A6JV3WHI.js} +2 -2
  53. package/dist/{chunk-MOB4JHG6.js → chunk-BDNPW3KM.js} +2 -2
  54. package/dist/{chunk-IJFX4JRI.js → chunk-BQOOUKEN.js} +7 -7
  55. package/dist/{chunk-PRSF7DWT.js → chunk-BU4W2ISH.js} +2 -2
  56. package/dist/{chunk-KQAFEZQX.js → chunk-BUKK5SWA.js} +2 -2
  57. package/dist/{chunk-JRY55I6Z.js → chunk-C2AYUXEF.js} +2 -2
  58. package/dist/{chunk-DF4SYU4Z.js → chunk-C5OW2FFB.js} +2 -2
  59. package/dist/{chunk-74Z2BYEK.js → chunk-CYEEVWQ6.js} +2 -2
  60. package/dist/{chunk-M7KAJBO2.js → chunk-EADUOZWH.js} +3 -3
  61. package/dist/{chunk-N5H22V75.js → chunk-ECT5ME6X.js} +2 -2
  62. package/dist/{chunk-M3GOWG2P.js → chunk-FMOUUWQN.js} +2 -2
  63. package/dist/{chunk-2EJAPJ5G.js → chunk-FYPKSR6Z.js} +2 -2
  64. package/dist/{chunk-L5RMURVI.js → chunk-GDCKOER4.js} +41 -13
  65. package/dist/chunk-GDCKOER4.js.map +1 -0
  66. package/dist/{chunk-LGLLCWA2.js → chunk-GNEB3WXR.js} +2 -2
  67. package/dist/{chunk-Z4EH5TSO.js → chunk-HNZH57JK.js} +2 -2
  68. package/dist/{chunk-PTJWUN4H.js → chunk-IJKBIOWL.js} +30 -30
  69. package/dist/{chunk-C5GTIRIO.js → chunk-IMNJJKHW.js} +22 -22
  70. package/dist/{chunk-ADK5TMQL.js → chunk-IVJI5FDA.js} +2 -2
  71. package/dist/{chunk-F3GX76LV.js → chunk-IWAB7JVH.js} +2 -2
  72. package/dist/{chunk-JFRO5HJY.js → chunk-J62O2UW5.js} +2 -2
  73. package/dist/chunk-JCL7RO2G.js +674 -0
  74. package/dist/chunk-JCL7RO2G.js.map +1 -0
  75. package/dist/{chunk-A3UFV4K3.js → chunk-JIYJIH5N.js} +2 -2
  76. package/dist/{chunk-UIX4JLVV.js → chunk-JVFYP2LD.js} +2 -2
  77. package/dist/{chunk-KJ3MDX4V.js → chunk-KXY4HW2Y.js} +2 -2
  78. package/dist/{chunk-VQ6H4DL6.js → chunk-L334PSLW.js} +4 -4
  79. package/dist/{chunk-IA3XZG4V.js → chunk-L74VVEJA.js} +2 -2
  80. package/dist/{chunk-UY67YP6Q.js → chunk-LIUI46BX.js} +2 -2
  81. package/dist/{chunk-4OFXLQJD.js → chunk-MPDLLLOG.js} +8 -3
  82. package/dist/chunk-MPDLLLOG.js.map +1 -0
  83. package/dist/{chunk-UP2Q7U4G.js → chunk-MTVC5S5N.js} +2 -2
  84. package/dist/{chunk-QWURVT5Z.js → chunk-N7CATBYH.js} +2 -2
  85. package/dist/{chunk-JEDS2QYV.js → chunk-OH55F76C.js} +2 -2
  86. package/dist/{chunk-2NLLXCJG.js → chunk-OWHERGF2.js} +2 -2
  87. package/dist/{chunk-G6GMZJQ4.js → chunk-PA6ZNFB7.js} +2 -2
  88. package/dist/{chunk-6BKSUA6P.js → chunk-PWEIZCPS.js} +2 -2
  89. package/dist/{chunk-T4SMMTGY.js → chunk-Q3DAWUAV.js} +2 -2
  90. package/dist/{chunk-AWKADEMO.js → chunk-QCAJMIAE.js} +3 -3
  91. package/dist/{chunk-ZRDEOC4X.js → chunk-QI7LLSWX.js} +2 -2
  92. package/dist/{chunk-7DHNBABU.js → chunk-QJ6IR35B.js} +3 -3
  93. package/dist/{chunk-J53IBVMF.js → chunk-R25JMO5O.js} +2 -2
  94. package/dist/{chunk-PARM6OYL.js → chunk-SEA56G6S.js} +1 -1
  95. package/dist/chunk-SEA56G6S.js.map +1 -0
  96. package/dist/{chunk-HL643H2F.js → chunk-TMWSCE2L.js} +8 -8
  97. package/dist/{chunk-FLDXEJFX.js → chunk-TPCRDPUY.js} +2 -2
  98. package/dist/{chunk-KZMRMKC7.js → chunk-U7MIMS2Y.js} +11 -1
  99. package/dist/chunk-U7MIMS2Y.js.map +1 -0
  100. package/dist/{chunk-WJC5KGYC.js → chunk-UFQB5VQ5.js} +6 -6
  101. package/dist/{chunk-64WHWIPL.js → chunk-UVHXLVFJ.js} +2 -2
  102. package/dist/{chunk-X7Y7WX73.js → chunk-UVYI6VIX.js} +1 -1
  103. package/dist/{chunk-5XY46Z2W.js → chunk-UXRCORZX.js} +3 -3
  104. package/dist/{chunk-WUL6LDJ4.js → chunk-VPEA63FC.js} +2 -2
  105. package/dist/{chunk-MHSUEA32.js → chunk-WA6XRNWE.js} +3 -3
  106. package/dist/{chunk-GGHX4YHM.js → chunk-WB3OFPM2.js} +2 -2
  107. package/dist/{chunk-RSYFSCKL.js → chunk-WZEDFDJ6.js} +14 -14
  108. package/dist/{chunk-2HVCTFKG.js → chunk-X2ZLHUEO.js} +2 -2
  109. package/dist/{chunk-PJLJN23N.js → chunk-XICJL56Z.js} +2 -2
  110. package/dist/{chunk-ZXEPLZUQ.js → chunk-YGM47S7M.js} +7 -7
  111. package/dist/{chunk-XWXBXBOX.js → chunk-YLB7TW2B.js} +2 -1
  112. package/dist/chunk-YLB7TW2B.js.map +1 -0
  113. package/dist/{chunk-KXDUSGPM.js → chunk-YRL4PGPP.js} +2 -2
  114. package/dist/{chunk-GJF337YM.js → chunk-Z45353ML.js} +2 -2
  115. package/dist/{chunk-NJZY5LOC.js → chunk-ZARHK7PT.js} +2 -2
  116. package/dist/{chunk-NF5EHQTJ.js → chunk-ZFU2B2GM.js} +5 -5
  117. package/dist/{chunk-W37MS6SX.js → chunk-ZRSXXWIX.js} +2 -2
  118. package/dist/cli.js +60 -59
  119. package/dist/coding/export-okf-codegraph.js +7 -5
  120. package/dist/coding/export-okf-codegraph.js.map +1 -1
  121. package/dist/compounding/engine.js +9 -7
  122. package/dist/config.d.ts.map +1 -1
  123. package/dist/config.js +8 -6
  124. package/dist/connectors/codex-materialize-runner.js +8 -6
  125. package/dist/connectors/index.js +8 -6
  126. package/dist/convergence-refresh.js +10 -8
  127. package/dist/corpus-watermark.js +10 -8
  128. package/dist/deep-recall-http-glue.js +4 -4
  129. package/dist/entity-retrieval.js +8 -6
  130. package/dist/external-wiki-access.js +26 -25
  131. package/dist/extraction.js +8 -6
  132. package/dist/harmonic-retrieval.js +8 -6
  133. package/dist/index.d.ts +1 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +75 -72
  136. package/dist/location/index.js +10 -8
  137. package/dist/maintenance/memory-governance.js +8 -6
  138. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -6
  139. package/dist/maintenance/rebuild-memory-projection-runner.js +10 -8
  140. package/dist/maintenance/rebuild-memory-projection.js +9 -7
  141. package/dist/memory-browse-operations.js +26 -25
  142. package/dist/namespaces/migrate.js +9 -7
  143. package/dist/namespaces/search.js +3 -3
  144. package/dist/namespaces/storage.js +8 -6
  145. package/dist/operator-doctor-corpus.js +11 -9
  146. package/dist/operator-toolkit.js +17 -15
  147. package/dist/orchestration/buffer-drain-gate.d.ts +21 -0
  148. package/dist/orchestration/buffer-drain-gate.d.ts.map +1 -0
  149. package/dist/orchestration/buffer-drain-runner.d.ts +79 -0
  150. package/dist/orchestration/buffer-drain-runner.d.ts.map +1 -0
  151. package/dist/orchestration/buffer-drain-runner.js +780 -0
  152. package/dist/orchestration/buffer-drain-runner.js.map +1 -0
  153. package/dist/orchestration/buffer-swap.d.ts +12 -0
  154. package/dist/orchestration/buffer-swap.d.ts.map +1 -0
  155. package/dist/orchestration/maintenance.js +18 -16
  156. package/dist/orchestration/turn-ingestion.d.ts.map +1 -1
  157. package/dist/orchestrator.d.ts +4 -1
  158. package/dist/orchestrator.d.ts.map +1 -1
  159. package/dist/orchestrator.js +73 -72
  160. package/dist/recall-explain-renderer.js +3 -3
  161. package/dist/recall-navigate-access.js +2 -2
  162. package/dist/recall-navigate-disclosure.js +2 -2
  163. package/dist/recall-navigate.js +2 -2
  164. package/dist/recall-navigation-operations.js +26 -25
  165. package/dist/recall-navigation.js +25 -24
  166. package/dist/recall-xray-cli.js +4 -4
  167. package/dist/recall-xray-renderer.js +3 -3
  168. package/dist/recall-xray.js +2 -2
  169. package/dist/resume-bundles.js +9 -7
  170. package/dist/search/factory.js +2 -2
  171. package/dist/search/index.js +4 -4
  172. package/dist/semantic-consolidation.js +9 -7
  173. package/dist/semantic-rule-promotion.js +8 -6
  174. package/dist/semantic-rule-verifier.js +8 -6
  175. package/dist/source-agent-qualifier.js +8 -6
  176. package/dist/standup/build.js +8 -6
  177. package/dist/storage/buffer-drain-claims.d.ts +159 -0
  178. package/dist/storage/buffer-drain-claims.d.ts.map +1 -0
  179. package/dist/storage/buffer-drain-claims.js +18 -0
  180. package/dist/storage/buffer-drain-claims.js.map +1 -0
  181. package/dist/storage/buffer-session-files.d.ts +14 -2
  182. package/dist/storage/buffer-session-files.d.ts.map +1 -1
  183. package/dist/storage/buffer-session-files.js +22 -0
  184. package/dist/storage/buffer-session-files.js.map +1 -0
  185. package/dist/storage.d.ts +6 -1
  186. package/dist/storage.d.ts.map +1 -1
  187. package/dist/storage.js +7 -5
  188. package/dist/support-passport/index.js +28 -27
  189. package/dist/transfer/backup.js +2 -2
  190. package/dist/transfer/capsule-export.js +2 -2
  191. package/dist/transfer/capsule-import.js +2 -2
  192. package/dist/transfer/export-okf.js +8 -6
  193. package/dist/types.d.ts +2 -0
  194. package/dist/types.d.ts.map +1 -1
  195. package/dist/types.js +1 -1
  196. package/dist/verified-recall.js +8 -6
  197. package/dist/who-knows-cli.js +9 -7
  198. package/dist/who-knows.js +8 -6
  199. package/package.json +32 -2
  200. package/src/access-observe-replay-durability.test.ts +1 -0
  201. package/src/buffer-drain-handover.test.ts +307 -0
  202. package/src/buffer-incremental-persistence.test.ts +19 -1
  203. package/src/buffer-persistence.ts +27 -5
  204. package/src/buffer-session.test.ts +3 -3
  205. package/src/buffer-turn-helpers.ts +16 -0
  206. package/src/buffer.ts +50 -10
  207. package/src/config.ts +1 -0
  208. package/src/index.ts +1 -1
  209. package/src/orchestration/buffer-drain-gate.test.ts +40 -0
  210. package/src/orchestration/buffer-drain-gate.ts +38 -0
  211. package/src/orchestration/buffer-drain-runner.ts +312 -0
  212. package/src/orchestration/buffer-swap.ts +27 -0
  213. package/src/orchestration/turn-ingestion.ts +2 -0
  214. package/src/orchestrator.ts +9 -6
  215. package/src/storage/buffer-drain-claims.test.ts +448 -0
  216. package/src/storage/buffer-drain-claims.ts +593 -0
  217. package/src/storage/buffer-session-files.ts +50 -3
  218. package/src/storage.ts +8 -11
  219. package/src/testing/subjects/extraction-lifecycle.test.ts +34 -0
  220. package/src/types.ts +2 -0
  221. package/dist/chunk-3DG2YAAX.js.map +0 -1
  222. package/dist/chunk-4OFXLQJD.js.map +0 -1
  223. package/dist/chunk-I6UTOUBK.js.map +0 -1
  224. package/dist/chunk-KZMRMKC7.js.map +0 -1
  225. package/dist/chunk-L5RMURVI.js.map +0 -1
  226. package/dist/chunk-PARM6OYL.js.map +0 -1
  227. package/dist/chunk-XWXBXBOX.js.map +0 -1
  228. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-GWVG7LGC.js.map} +0 -0
  229. /package/dist/{chunk-VHBGJAYC.js.map → chunk-25QK3LR2.js.map} +0 -0
  230. /package/dist/{chunk-X2TZWVCC.js.map → chunk-3HLWLYRD.js.map} +0 -0
  231. /package/dist/{chunk-TIS6T6UP.js.map → chunk-3VNRDRBM.js.map} +0 -0
  232. /package/dist/{chunk-4O4VAEWH.js.map → chunk-4NLHEE2Z.js.map} +0 -0
  233. /package/dist/{chunk-66CC6L6R.js.map → chunk-76LKZ42K.js.map} +0 -0
  234. /package/dist/{chunk-LR7RW4T6.js.map → chunk-7ETWIBTO.js.map} +0 -0
  235. /package/dist/{chunk-JM2WJBP7.js.map → chunk-7JFXXA57.js.map} +0 -0
  236. /package/dist/{chunk-PIVSUPF2.js.map → chunk-A6JV3WHI.js.map} +0 -0
  237. /package/dist/{chunk-MOB4JHG6.js.map → chunk-BDNPW3KM.js.map} +0 -0
  238. /package/dist/{chunk-IJFX4JRI.js.map → chunk-BQOOUKEN.js.map} +0 -0
  239. /package/dist/{chunk-PRSF7DWT.js.map → chunk-BU4W2ISH.js.map} +0 -0
  240. /package/dist/{chunk-KQAFEZQX.js.map → chunk-BUKK5SWA.js.map} +0 -0
  241. /package/dist/{chunk-JRY55I6Z.js.map → chunk-C2AYUXEF.js.map} +0 -0
  242. /package/dist/{chunk-DF4SYU4Z.js.map → chunk-C5OW2FFB.js.map} +0 -0
  243. /package/dist/{chunk-74Z2BYEK.js.map → chunk-CYEEVWQ6.js.map} +0 -0
  244. /package/dist/{chunk-M7KAJBO2.js.map → chunk-EADUOZWH.js.map} +0 -0
  245. /package/dist/{chunk-N5H22V75.js.map → chunk-ECT5ME6X.js.map} +0 -0
  246. /package/dist/{chunk-M3GOWG2P.js.map → chunk-FMOUUWQN.js.map} +0 -0
  247. /package/dist/{chunk-2EJAPJ5G.js.map → chunk-FYPKSR6Z.js.map} +0 -0
  248. /package/dist/{chunk-LGLLCWA2.js.map → chunk-GNEB3WXR.js.map} +0 -0
  249. /package/dist/{chunk-Z4EH5TSO.js.map → chunk-HNZH57JK.js.map} +0 -0
  250. /package/dist/{chunk-PTJWUN4H.js.map → chunk-IJKBIOWL.js.map} +0 -0
  251. /package/dist/{chunk-C5GTIRIO.js.map → chunk-IMNJJKHW.js.map} +0 -0
  252. /package/dist/{chunk-ADK5TMQL.js.map → chunk-IVJI5FDA.js.map} +0 -0
  253. /package/dist/{chunk-F3GX76LV.js.map → chunk-IWAB7JVH.js.map} +0 -0
  254. /package/dist/{chunk-JFRO5HJY.js.map → chunk-J62O2UW5.js.map} +0 -0
  255. /package/dist/{chunk-A3UFV4K3.js.map → chunk-JIYJIH5N.js.map} +0 -0
  256. /package/dist/{chunk-UIX4JLVV.js.map → chunk-JVFYP2LD.js.map} +0 -0
  257. /package/dist/{chunk-KJ3MDX4V.js.map → chunk-KXY4HW2Y.js.map} +0 -0
  258. /package/dist/{chunk-VQ6H4DL6.js.map → chunk-L334PSLW.js.map} +0 -0
  259. /package/dist/{chunk-IA3XZG4V.js.map → chunk-L74VVEJA.js.map} +0 -0
  260. /package/dist/{chunk-UY67YP6Q.js.map → chunk-LIUI46BX.js.map} +0 -0
  261. /package/dist/{chunk-UP2Q7U4G.js.map → chunk-MTVC5S5N.js.map} +0 -0
  262. /package/dist/{chunk-QWURVT5Z.js.map → chunk-N7CATBYH.js.map} +0 -0
  263. /package/dist/{chunk-JEDS2QYV.js.map → chunk-OH55F76C.js.map} +0 -0
  264. /package/dist/{chunk-2NLLXCJG.js.map → chunk-OWHERGF2.js.map} +0 -0
  265. /package/dist/{chunk-G6GMZJQ4.js.map → chunk-PA6ZNFB7.js.map} +0 -0
  266. /package/dist/{chunk-6BKSUA6P.js.map → chunk-PWEIZCPS.js.map} +0 -0
  267. /package/dist/{chunk-T4SMMTGY.js.map → chunk-Q3DAWUAV.js.map} +0 -0
  268. /package/dist/{chunk-AWKADEMO.js.map → chunk-QCAJMIAE.js.map} +0 -0
  269. /package/dist/{chunk-ZRDEOC4X.js.map → chunk-QI7LLSWX.js.map} +0 -0
  270. /package/dist/{chunk-7DHNBABU.js.map → chunk-QJ6IR35B.js.map} +0 -0
  271. /package/dist/{chunk-J53IBVMF.js.map → chunk-R25JMO5O.js.map} +0 -0
  272. /package/dist/{chunk-HL643H2F.js.map → chunk-TMWSCE2L.js.map} +0 -0
  273. /package/dist/{chunk-FLDXEJFX.js.map → chunk-TPCRDPUY.js.map} +0 -0
  274. /package/dist/{chunk-WJC5KGYC.js.map → chunk-UFQB5VQ5.js.map} +0 -0
  275. /package/dist/{chunk-64WHWIPL.js.map → chunk-UVHXLVFJ.js.map} +0 -0
  276. /package/dist/{chunk-X7Y7WX73.js.map → chunk-UVYI6VIX.js.map} +0 -0
  277. /package/dist/{chunk-5XY46Z2W.js.map → chunk-UXRCORZX.js.map} +0 -0
  278. /package/dist/{chunk-WUL6LDJ4.js.map → chunk-VPEA63FC.js.map} +0 -0
  279. /package/dist/{chunk-MHSUEA32.js.map → chunk-WA6XRNWE.js.map} +0 -0
  280. /package/dist/{chunk-GGHX4YHM.js.map → chunk-WB3OFPM2.js.map} +0 -0
  281. /package/dist/{chunk-RSYFSCKL.js.map → chunk-WZEDFDJ6.js.map} +0 -0
  282. /package/dist/{chunk-2HVCTFKG.js.map → chunk-X2ZLHUEO.js.map} +0 -0
  283. /package/dist/{chunk-PJLJN23N.js.map → chunk-XICJL56Z.js.map} +0 -0
  284. /package/dist/{chunk-ZXEPLZUQ.js.map → chunk-YGM47S7M.js.map} +0 -0
  285. /package/dist/{chunk-KXDUSGPM.js.map → chunk-YRL4PGPP.js.map} +0 -0
  286. /package/dist/{chunk-GJF337YM.js.map → chunk-Z45353ML.js.map} +0 -0
  287. /package/dist/{chunk-NJZY5LOC.js.map → chunk-ZARHK7PT.js.map} +0 -0
  288. /package/dist/{chunk-NF5EHQTJ.js.map → chunk-ZFU2B2GM.js.map} +0 -0
  289. /package/dist/{chunk-W37MS6SX.js.map → chunk-ZRSXXWIX.js.map} +0 -0
package/src/storage.ts CHANGED
@@ -144,6 +144,7 @@ import {
144
144
  } from "./lifecycle/tombstones.js";
145
145
  import { supersessionKeysForFact } from "./temporal-supersession.js";
146
146
  import { BufferSessionFiles } from "./storage/buffer-session-files.js";
147
+ import { BufferDrainClaims, type BufferSessionSaveOutcome } from "./storage/buffer-drain-claims.js";
147
148
  import { runSupersessionSideEffects, type SupersessionAuditOptions } from "./storage/supersession-side-effects.js";
148
149
  import { saveDroppedExtractionChunk as saveDroppedChunk } from "./storage/dropped-extraction-chunk.js";
149
150
  import type {
@@ -5144,18 +5145,10 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
5144
5145
  );
5145
5146
  } catch (err) {
5146
5147
  if (priorDest === null) {
5147
- await recordArchiveDelete(this.baseDir, destPath, () =>
5148
- unlink(destPath).then(
5149
- () => true,
5150
- () => false
5151
- )
5152
- );
5148
+ await recordArchiveDelete(this.baseDir, destPath, () => unlink(destPath).then(() => true, () => false));
5153
5149
  } else {
5154
5150
  await recordArchiveDelete(this.baseDir, destPath, () =>
5155
- this.writeStorageSecureFile(destPath, priorDest).then(
5156
- () => true,
5157
- () => false
5158
- )
5151
+ this.writeStorageSecureFile(destPath, priorDest).then(() => true, () => false)
5159
5152
  );
5160
5153
  }
5161
5154
  throw err;
@@ -5524,8 +5517,12 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
5524
5517
  }
5525
5518
  async loadBuffer(): Promise<BufferState> { return this.bufferSessionFiles().load(); }
5526
5519
  async saveBuffer(state: BufferState): Promise<void> { await this.bufferSessionFiles().reconcile(state); }
5527
- async saveBufferSession(key: string, entry: BufferEntryState): Promise<void> { await this.bufferSessionFiles().save(key, entry); }
5520
+ async saveBufferSession(key: string, entry: BufferEntryState): Promise<BufferSessionSaveOutcome> { return await this.bufferSessionFiles().save(key, entry); }
5528
5521
  async deleteBufferSession(key: string): Promise<void> { await this.bufferSessionFiles().remove(key); }
5522
+ /** Sync gate check for the extraction queue: is this session claimed by a buffer drain? */
5523
+ isBufferSessionClaimed(key: string): boolean { return this.bufferSessionFiles().isClaimed(key); }
5524
+ /** The drain-claim store for this memory root (CLI drain + worker). */
5525
+ bufferDrainClaims(): BufferDrainClaims { return this.bufferSessionFiles().claims; }
5529
5526
  saveDroppedExtractionChunk(bufferKey: string, reason: string, turns: readonly import("./types.js").BufferTurn[]): Promise<string> { // storage/dropped-extraction-chunk.ts
5530
5527
  return saveDroppedChunk(this.stateDir, (file, content) => this.writeStorageSecureFile(file, content), bufferKey, reason, turns);
5531
5528
  }
@@ -17,6 +17,7 @@ import assert from "node:assert/strict";
17
17
  import path from "node:path";
18
18
 
19
19
  import { Orchestrator } from "../../orchestrator.js";
20
+ import { BufferDrainRunner } from "../../orchestration/buffer-drain-runner.js";
20
21
  import { resolveNamespaceStorageRoot } from "../../namespaces/storage.js";
21
22
  import type { BufferTurn, PluginConfig } from "../../types.js";
22
23
  import {
@@ -135,6 +136,37 @@ async function assertHarmonicEpisode(memoryDir: string, sessionKey?: string): Pr
135
136
  if (sessionKey) assert.equal(status.latestNode?.sessionKey, sessionKey);
136
137
  }
137
138
 
139
+
140
+ /**
141
+ * The out-of-process drain path: a buffered session is claimed into a drain
142
+ * claim, the drain extracts it through the same pipeline, and the claim ends
143
+ * empty. The live buffer keeps its in-memory copy; the drain tombstone makes
144
+ * the owner subtract the drained turn instead of writing it back.
145
+ */
146
+ async function exerciseBufferDrain(state: ExtractionLifecycleState): Promise<void> {
147
+ // Its own memory root and orchestrator: the drain must not perturb the
148
+ // row's own extraction calls or fact counts.
149
+ const memoryDir = await mkTempMemoryDir("extraction-drain-row");
150
+ const cfg = makeHarmonicLifecycleConfig(memoryDir, { extraction: { spanMode: "on" } });
151
+ const orchestrator = new Orchestrator(cfg);
152
+ state.orchestrators.push(orchestrator);
153
+ stubExtraction(orchestrator, (turns) => spanBearingResult(turns));
154
+ const sessionKey = "drain-row-session";
155
+ const content = "The drain row retains the canary gate detail for the teal dashboard.";
156
+ await orchestrator.buffer.addTurn(sessionKey, {
157
+ role: "user",
158
+ content,
159
+ timestamp: new Date().toISOString(),
160
+ sessionKey,
161
+ });
162
+ await orchestrator.buffer.save();
163
+ const runner = new BufferDrainRunner(orchestrator);
164
+ assert.equal(await runner.claim(sessionKey, "subject-drain"), true, "the drain claims the buffered session");
165
+ const outcome = await runner.drainSession(sessionKey, { ownerId: "subject-drain" });
166
+ assert.equal(outcome.status, "drained", "the drain empties the claimed session");
167
+ assert.equal(outcome.turnsRemaining, 0, "no turn is left claimed");
168
+ }
169
+
138
170
  const subject: LifecycleSubject<ExtractionLifecycleState> = {
139
171
  async setup(row: MatrixRow): Promise<ExtractionLifecycleState> {
140
172
  const memoryDir = await mkTempMemoryDir(`extraction-${row.id}`);
@@ -254,6 +286,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
254
286
  return;
255
287
  }
256
288
  case "before-reset": {
289
+ await exerciseBufferDrain(state);
257
290
  // Buffer a low-signal turn, then fire a before_reset flush whose abort
258
291
  // trips mid-extraction. The abort wiring (the signal threaded from
259
292
  // flushSession into runExtraction, guarding `before_persist` and
@@ -419,6 +452,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
419
452
  return;
420
453
  }
421
454
  case "before-reset": {
455
+ await exerciseBufferDrain(state);
422
456
  assert.equal(
423
457
  state.abortFlushRejected,
424
458
  true,
package/src/types.ts CHANGED
@@ -719,6 +719,8 @@ export interface PluginConfig
719
719
  reasoningEffort: ReasoningEffort;
720
720
  triggerMode: TriggerMode;
721
721
  bufferMaxTurns: number;
722
+ /** Distinct sessions the extraction buffer admits before backpressure (#3303). */
723
+ bufferMaxSessions: number;
722
724
  bufferMaxMinutes: number;
723
725
  /**
724
726
  * Debounce window (ms) for persisting the smart buffer to `state/buffer.json`