@remnic/core 10.0.2 → 10.0.4

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 (369) hide show
  1. package/dist/access-admin-ops-surface.js +46 -46
  2. package/dist/access-authorization-probe.js +47 -47
  3. package/dist/access-boundary.js +46 -46
  4. package/dist/access-citation-namespace.js +2 -2
  5. package/dist/access-cli.js +111 -109
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-extraction-force-flush.js +46 -46
  8. package/dist/access-http-briefing.js +47 -47
  9. package/dist/access-http-query.js +48 -48
  10. package/dist/access-http.js +65 -65
  11. package/dist/access-identity-continuity-surface.js +46 -46
  12. package/dist/access-lcm-surface.js +46 -46
  13. package/dist/access-mcp.js +56 -56
  14. package/dist/access-namespace-preflight.js +46 -46
  15. package/dist/access-observe-write-category.js +2 -2
  16. package/dist/access-observe-write-surface.js +46 -46
  17. package/dist/access-offline-manifest.js +4 -4
  18. package/dist/access-operations-batch.js +47 -47
  19. package/dist/access-operations.js +54 -54
  20. package/dist/access-recall-concurrency.js +46 -46
  21. package/dist/access-recall-diagnostics.js +2 -2
  22. package/dist/access-recall-response.js +46 -46
  23. package/dist/access-recall-surface.js +46 -46
  24. package/dist/access-service.js +46 -46
  25. package/dist/access-surface-catalog.js +48 -48
  26. package/dist/active-recall.js +19 -18
  27. package/dist/active-recall.js.map +1 -1
  28. package/dist/adapters/index.js +4 -4
  29. package/dist/adapters/registry.js +2 -2
  30. package/dist/{auto-sync-PAWBFQWL.js → auto-sync-FN7E3OTO.js} +4 -4
  31. package/dist/briefing.js +18 -18
  32. package/dist/buffer.js +7 -7
  33. package/dist/causal-consolidation.js +19 -19
  34. package/dist/{chunk-G3T6YMBO.js → chunk-2KB7TTAP.js} +4 -4
  35. package/dist/{chunk-345MEMRU.js → chunk-3OUGSOJP.js} +2 -2
  36. package/dist/{chunk-CVQWNACA.js → chunk-3QAIX7TV.js} +2 -2
  37. package/dist/{chunk-PTGPU4DC.js → chunk-436IRJUD.js} +4 -4
  38. package/dist/{chunk-G2STTRYB.js → chunk-4D2YH47Z.js} +2 -2
  39. package/dist/{chunk-DQQ4IM5L.js → chunk-4DXVWBDB.js} +2 -2
  40. package/dist/{chunk-M2OPC4BD.js → chunk-4NFRYOHT.js} +2 -2
  41. package/dist/{chunk-PWVBVIOP.js → chunk-5QHTQMRL.js} +5 -5
  42. package/dist/{chunk-RFIJRZ4K.js → chunk-5XXTZ4Y7.js} +2 -2
  43. package/dist/{chunk-S4DDLTPX.js → chunk-5Y43VGYB.js} +2 -2
  44. package/dist/{chunk-LQGX5TCI.js → chunk-5YDWSWBU.js} +3 -3
  45. package/dist/{chunk-FNVSBUC3.js → chunk-6AH2DDHI.js} +2 -2
  46. package/dist/{chunk-5GINB5LC.js → chunk-6MKLMEBE.js} +1 -1
  47. package/dist/{chunk-5GINB5LC.js.map → chunk-6MKLMEBE.js.map} +1 -1
  48. package/dist/{chunk-JDOBIFBK.js → chunk-7CXL25AA.js} +2 -2
  49. package/dist/{chunk-YLBE6PLR.js → chunk-7IGMKQWK.js} +2 -2
  50. package/dist/{chunk-JFDKPW54.js → chunk-7OOW72QA.js} +27 -27
  51. package/dist/{chunk-J5CUQRST.js → chunk-ABDTBGI2.js} +2 -2
  52. package/dist/{chunk-LHOIYLKH.js → chunk-ABET5LA5.js} +61 -50
  53. package/dist/chunk-ABET5LA5.js.map +1 -0
  54. package/dist/{chunk-IB63OVUB.js → chunk-AJ6ORARY.js} +6 -6
  55. package/dist/{chunk-U6VC6RP3.js → chunk-AWLQNLTM.js} +2 -2
  56. package/dist/{chunk-PJSK6OJM.js → chunk-BANSBRNX.js} +2 -2
  57. package/dist/{chunk-32HO62I4.js → chunk-BDHWKFGM.js} +2 -2
  58. package/dist/{chunk-AW4QUFQF.js → chunk-BTNNL7ZW.js} +3 -2
  59. package/dist/{chunk-AW4QUFQF.js.map → chunk-BTNNL7ZW.js.map} +1 -1
  60. package/dist/{chunk-MY7B3HYC.js → chunk-CLCMDKTB.js} +2 -2
  61. package/dist/{chunk-AALVXJJ7.js → chunk-CQQTEDHS.js} +2 -2
  62. package/dist/{chunk-2SYRHFUG.js → chunk-CV5AMCPX.js} +2 -2
  63. package/dist/{chunk-BTOHGPHC.js → chunk-CXG2T7BJ.js} +3 -3
  64. package/dist/{chunk-4A2UMSNB.js → chunk-DBA2W6VV.js} +230 -81
  65. package/dist/chunk-DBA2W6VV.js.map +1 -0
  66. package/dist/{chunk-E7FN5N5E.js → chunk-DQJCQHII.js} +2 -2
  67. package/dist/{chunk-CAXMG4JI.js → chunk-DYRXRQHV.js} +2 -2
  68. package/dist/{chunk-IIFFC3RL.js → chunk-EDR6CVWZ.js} +2 -2
  69. package/dist/{chunk-6O2VUWV6.js → chunk-EIFYYHAF.js} +2 -2
  70. package/dist/{chunk-2JRB3Z5N.js → chunk-EP5WXE2G.js} +3 -3
  71. package/dist/chunk-EWMRFW3F.js +38 -0
  72. package/dist/chunk-EWMRFW3F.js.map +1 -0
  73. package/dist/chunk-FMIVV5SV.js +80 -0
  74. package/dist/chunk-FMIVV5SV.js.map +1 -0
  75. package/dist/{chunk-2EZB2DL5.js → chunk-GE6HETIF.js} +3 -3
  76. package/dist/{chunk-YVHNBOK2.js → chunk-GLS3A4SQ.js} +2 -2
  77. package/dist/{chunk-7IGNDEUJ.js → chunk-H2XCCUOT.js} +3 -3
  78. package/dist/{chunk-A5N6ZEUW.js → chunk-H6FA36LC.js} +2 -2
  79. package/dist/{chunk-WPMDNCGB.js → chunk-HSZBALHV.js} +2 -2
  80. package/dist/{chunk-XG4XXI66.js → chunk-I25RQA65.js} +2 -2
  81. package/dist/{chunk-NBK24POV.js → chunk-IHIP7TJ3.js} +2 -2
  82. package/dist/{chunk-DAVONFNK.js → chunk-IINXHPCV.js} +2 -2
  83. package/dist/{chunk-EJJMDLVB.js → chunk-IJ4FEGZR.js} +2 -2
  84. package/dist/{chunk-SQPC6MUM.js → chunk-IRYKRBEX.js} +4 -4
  85. package/dist/{chunk-JOBE47EJ.js → chunk-IVGJXS5F.js} +2 -2
  86. package/dist/{chunk-36BUOTVN.js → chunk-IXF7TRMQ.js} +2 -2
  87. package/dist/{chunk-RVQVWDSN.js → chunk-IY7ZISXV.js} +2 -2
  88. package/dist/{chunk-5FLFPTDK.js → chunk-JA72X46J.js} +2 -2
  89. package/dist/{chunk-NLYOOGZ7.js → chunk-KE5PWLI6.js} +3 -3
  90. package/dist/{chunk-FF4KLI5W.js → chunk-LDPPTPO5.js} +8 -1
  91. package/dist/chunk-LDPPTPO5.js.map +1 -0
  92. package/dist/{chunk-U4SG4HKQ.js → chunk-LIGP5M2C.js} +2 -2
  93. package/dist/{chunk-EB3RXN2L.js → chunk-MEMH5NKJ.js} +2 -2
  94. package/dist/{chunk-4G2COUSD.js → chunk-MEP3POVW.js} +2 -2
  95. package/dist/{chunk-35A7GCHG.js → chunk-MYBCB4AT.js} +2 -2
  96. package/dist/{chunk-U46P4UAR.js → chunk-NQHSXHJP.js} +4 -4
  97. package/dist/{chunk-QPWUG2S3.js → chunk-NSQ3GUVO.js} +2 -2
  98. package/dist/{chunk-VQTPEL7O.js → chunk-O57VUN4U.js} +4 -4
  99. package/dist/{chunk-WY4IV62O.js → chunk-OAFRMLL4.js} +2 -2
  100. package/dist/{chunk-PCO3P7WJ.js → chunk-OGVJXIHX.js} +2 -2
  101. package/dist/{chunk-IR5LZCE6.js → chunk-ORAL4HJC.js} +2 -2
  102. package/dist/{chunk-LMZV3H4W.js → chunk-P22M3DX3.js} +3 -3
  103. package/dist/{chunk-2J3M2KV4.js → chunk-PTFL3INS.js} +2 -2
  104. package/dist/{chunk-AM4T6CHX.js → chunk-Q4E24IRR.js} +9 -8
  105. package/dist/chunk-Q4E24IRR.js.map +1 -0
  106. package/dist/{chunk-CQBFEGLF.js → chunk-QDKABMUE.js} +2 -2
  107. package/dist/{chunk-34G4U6HS.js → chunk-QRZMJ2WN.js} +2 -2
  108. package/dist/{chunk-I2VQ7WBJ.js → chunk-QVBB2CLG.js} +13 -13
  109. package/dist/{chunk-H5YACCE3.js → chunk-QWNBQ2T5.js} +244 -47
  110. package/dist/chunk-QWNBQ2T5.js.map +1 -0
  111. package/dist/{chunk-GUD6FYQG.js → chunk-R4O2G6ML.js} +2 -2
  112. package/dist/{chunk-OSDAF7HH.js → chunk-R6EOFKZG.js} +2 -2
  113. package/dist/{chunk-OJP3N7UK.js → chunk-R7WYAXPO.js} +2 -2
  114. package/dist/{chunk-RU744TNX.js → chunk-RGPPNNDJ.js} +8 -8
  115. package/dist/{chunk-BLHPADUX.js → chunk-RH6MQ5NG.js} +6 -11
  116. package/dist/chunk-RH6MQ5NG.js.map +1 -0
  117. package/dist/{chunk-6DNMUYEE.js → chunk-RIEGCK2W.js} +2 -2
  118. package/dist/{chunk-KHOINMCN.js → chunk-RZCRXCLI.js} +2 -2
  119. package/dist/{chunk-WI37MWRZ.js → chunk-SNGNGH53.js} +2 -2
  120. package/dist/{chunk-R4NGLTUS.js → chunk-TDMNADPI.js} +2 -2
  121. package/dist/{chunk-K4TWTUEY.js → chunk-TSEUVMJL.js} +47 -47
  122. package/dist/{chunk-PT6DQK5T.js → chunk-TYOBAFCY.js} +3 -3
  123. package/dist/{chunk-LI76ESJL.js → chunk-TZQOCQXB.js} +2 -2
  124. package/dist/{chunk-WHTMVTU4.js → chunk-U3LVARGV.js} +2 -2
  125. package/dist/{chunk-RNYVAQX2.js → chunk-UCCB7RKF.js} +2 -2
  126. package/dist/{chunk-NUSQ3YEL.js → chunk-UXIZ5XN5.js} +2 -2
  127. package/dist/{chunk-OV7EYM6M.js → chunk-VWCFR4NR.js} +9 -9
  128. package/dist/{chunk-DQTCGVFK.js → chunk-WHCD4Z3D.js} +2 -2
  129. package/dist/{chunk-P57VR7AI.js → chunk-WLC6XA6C.js} +4 -4
  130. package/dist/{chunk-QCP75JGO.js → chunk-WQUGCOKF.js} +5 -5
  131. package/dist/{chunk-P5FPO2BR.js → chunk-WWDO7ZWM.js} +3 -3
  132. package/dist/{chunk-KATEWTQJ.js → chunk-X7J56GPG.js} +2 -2
  133. package/dist/{chunk-W6K6BC3H.js → chunk-XTWF5XR6.js} +57 -57
  134. package/dist/{chunk-22DYJLFN.js → chunk-XVC7JU2N.js} +39 -18
  135. package/dist/chunk-XVC7JU2N.js.map +1 -0
  136. package/dist/{chunk-YFET6A4I.js → chunk-Y7CXM7UM.js} +3 -3
  137. package/dist/{chunk-YAPTJQI7.js → chunk-YMXCJ7SE.js} +2 -2
  138. package/dist/{chunk-AXFWMRKI.js → chunk-YQJCWR4R.js} +2 -2
  139. package/dist/{chunk-3J54RR3A.js → chunk-Z2EVKNZR.js} +2 -2
  140. package/dist/{chunk-RKDSELA3.js → chunk-Z63GU5NN.js} +1 -1
  141. package/dist/chunk-Z63GU5NN.js.map +1 -0
  142. package/dist/{chunk-BAREPCLY.js → chunk-ZOGZMAGI.js} +2 -2
  143. package/dist/cli.js +89 -88
  144. package/dist/coding/export-okf-codegraph.js +18 -18
  145. package/dist/compounding/engine.js +18 -18
  146. package/dist/config.d.ts.map +1 -1
  147. package/dist/config.js +19 -18
  148. package/dist/connectors/codex-materialize-runner.js +18 -18
  149. package/dist/connectors/index.js +18 -18
  150. package/dist/convergence-refresh.js +20 -20
  151. package/dist/conversation-index/backend.js +2 -2
  152. package/dist/corpus-read-cancellation.d.ts +7 -0
  153. package/dist/corpus-read-cancellation.d.ts.map +1 -1
  154. package/dist/corpus-read-cancellation.js +1 -1
  155. package/dist/corpus-watermark.js +20 -20
  156. package/dist/directory-sidecars.js +2 -2
  157. package/dist/entity-retrieval.js +18 -18
  158. package/dist/explicit-capture.js +3 -3
  159. package/dist/external-wiki-access.js +47 -47
  160. package/dist/extraction.js +23 -23
  161. package/dist/harmonic-retrieval.js +18 -18
  162. package/dist/index.js +113 -111
  163. package/dist/location/index.js +21 -21
  164. package/dist/maintenance/archive-observations.js +2 -2
  165. package/dist/maintenance/atomic-file.d.ts +1 -1
  166. package/dist/maintenance/atomic-file.d.ts.map +1 -1
  167. package/dist/maintenance/atomic-file.js +1 -1
  168. package/dist/maintenance/memory-governance.js +18 -18
  169. package/dist/maintenance/migrate-observations.js +3 -3
  170. package/dist/maintenance/observation-ledger-utils.js +2 -2
  171. package/dist/maintenance/projection-rebuild-abort.d.ts +17 -0
  172. package/dist/maintenance/projection-rebuild-abort.d.ts.map +1 -0
  173. package/dist/maintenance/projection-timeline.d.ts +19 -0
  174. package/dist/maintenance/projection-timeline.d.ts.map +1 -0
  175. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +18 -18
  176. package/dist/maintenance/rebuild-memory-projection-runner.d.ts +8 -0
  177. package/dist/maintenance/rebuild-memory-projection-runner.d.ts.map +1 -0
  178. package/dist/maintenance/rebuild-memory-projection-runner.js +113 -0
  179. package/dist/maintenance/rebuild-memory-projection-runner.js.map +1 -0
  180. package/dist/maintenance/rebuild-memory-projection.d.ts +8 -0
  181. package/dist/maintenance/rebuild-memory-projection.d.ts.map +1 -1
  182. package/dist/maintenance/rebuild-memory-projection.js +19 -19
  183. package/dist/maintenance/rebuild-observations.js +3 -3
  184. package/dist/memory-browse-operations.js +47 -47
  185. package/dist/memory-browse.js +7 -7
  186. package/dist/namespaces/migrate.js +19 -19
  187. package/dist/namespaces/search.js +8 -8
  188. package/dist/namespaces/storage.js +18 -18
  189. package/dist/offline-sync-impression-drain.js +3 -3
  190. package/dist/operator-doctor-corpus.js +21 -21
  191. package/dist/operator-toolkit.js +28 -27
  192. package/dist/orchestration/full-corpus-heap-guard.d.ts +25 -0
  193. package/dist/orchestration/full-corpus-heap-guard.d.ts.map +1 -0
  194. package/dist/orchestration/maintenance.d.ts.map +1 -1
  195. package/dist/orchestration/maintenance.js +29 -27
  196. package/dist/orchestration/projection-rebuild-schedule.d.ts +40 -0
  197. package/dist/orchestration/projection-rebuild-schedule.d.ts.map +1 -1
  198. package/dist/orchestrator.js +111 -109
  199. package/dist/projection-rebuild-config.d.ts +52 -0
  200. package/dist/projection-rebuild-config.d.ts.map +1 -0
  201. package/dist/projection-rebuild-config.js +14 -0
  202. package/dist/projection-rebuild-config.js.map +1 -0
  203. package/dist/qmd.js +4 -4
  204. package/dist/recall-explain-renderer.js +3 -3
  205. package/dist/recall-navigate-access.js +2 -2
  206. package/dist/recall-navigate-disclosure.js +2 -2
  207. package/dist/recall-navigate.js +2 -2
  208. package/dist/recall-navigation-operations.js +47 -47
  209. package/dist/recall-navigation.js +46 -46
  210. package/dist/recall-state-view-admission.js +7 -7
  211. package/dist/recall-state.js +2 -2
  212. package/dist/recall-why-service.js +7 -7
  213. package/dist/recall-xray-cli.js +4 -4
  214. package/dist/recall-xray-renderer.js +3 -3
  215. package/dist/recall-xray.js +2 -2
  216. package/dist/relevance.js +2 -2
  217. package/dist/resume-bundles.js +22 -21
  218. package/dist/search/factory.js +7 -7
  219. package/dist/search/index.js +11 -11
  220. package/dist/semantic-consolidation.js +19 -19
  221. package/dist/semantic-rule-promotion.js +18 -18
  222. package/dist/semantic-rule-verifier.js +18 -18
  223. package/dist/session-identity.js +2 -2
  224. package/dist/session-transcript-migration.js +3 -3
  225. package/dist/source-agent-qualifier.js +22 -22
  226. package/dist/standup/build.js +18 -18
  227. package/dist/storage/memory-lifecycle-ledger-access.d.ts +5 -3
  228. package/dist/storage/memory-lifecycle-ledger-access.d.ts.map +1 -1
  229. package/dist/storage/memory-read-store.d.ts +2 -2
  230. package/dist/storage/memory-read-store.d.ts.map +1 -1
  231. package/dist/storage-paths.d.ts +11 -0
  232. package/dist/storage-paths.d.ts.map +1 -1
  233. package/dist/storage-paths.js +3 -1
  234. package/dist/storage.d.ts +4 -2
  235. package/dist/storage.d.ts.map +1 -1
  236. package/dist/storage.js +17 -17
  237. package/dist/summarizer.js +4 -4
  238. package/dist/summary-snapshot.js +2 -2
  239. package/dist/support-passport/index.js +49 -49
  240. package/dist/threading.js +2 -2
  241. package/dist/transcript.d.ts +3 -3
  242. package/dist/transcript.d.ts.map +1 -1
  243. package/dist/transcript.js +3 -3
  244. package/dist/transfer/export-okf.js +19 -19
  245. package/dist/types.d.ts +2 -17
  246. package/dist/types.d.ts.map +1 -1
  247. package/dist/types.js +1 -1
  248. package/dist/verified-recall.js +18 -18
  249. package/dist/who-knows-cli.js +19 -19
  250. package/dist/who-knows.js +18 -18
  251. package/dist/write-quarantine.js +2 -2
  252. package/package.json +2 -2
  253. package/src/config.test.ts +9 -0
  254. package/src/config.ts +2 -5
  255. package/src/corpus-read-cancellation.ts +7 -0
  256. package/src/maintenance/atomic-file.ts +2 -0
  257. package/src/maintenance/projection-rebuild-abort.ts +40 -0
  258. package/src/maintenance/projection-timeline.ts +209 -0
  259. package/src/maintenance/rebuild-memory-projection-runner.ts +94 -0
  260. package/src/maintenance/rebuild-memory-projection.memory.test.ts +159 -0
  261. package/src/maintenance/rebuild-memory-projection.retain-raw.test.ts +202 -0
  262. package/src/maintenance/rebuild-memory-projection.ts +63 -91
  263. package/src/orchestration/full-corpus-heap-guard.ts +38 -0
  264. package/src/orchestration/maintenance.test.ts +2 -2
  265. package/src/orchestration/maintenance.ts +2 -0
  266. package/src/orchestration/projection-rebuild-schedule.test.ts +498 -0
  267. package/src/orchestration/projection-rebuild-schedule.ts +280 -9
  268. package/src/projection-rebuild-config.ts +82 -0
  269. package/src/storage/memory-lifecycle-ledger-access.ts +61 -33
  270. package/src/storage/memory-read-store.ts +10 -4
  271. package/src/storage-paths.ts +18 -0
  272. package/src/storage.ts +45 -33
  273. package/src/transcript-recent-unscoped.test.ts +139 -0
  274. package/src/transcript.ts +6 -6
  275. package/src/types.ts +2 -18
  276. package/dist/chunk-22DYJLFN.js.map +0 -1
  277. package/dist/chunk-4A2UMSNB.js.map +0 -1
  278. package/dist/chunk-AM4T6CHX.js.map +0 -1
  279. package/dist/chunk-BLHPADUX.js.map +0 -1
  280. package/dist/chunk-FF4KLI5W.js.map +0 -1
  281. package/dist/chunk-H5YACCE3.js.map +0 -1
  282. package/dist/chunk-LHOIYLKH.js.map +0 -1
  283. package/dist/chunk-RKDSELA3.js.map +0 -1
  284. /package/dist/{auto-sync-PAWBFQWL.js.map → auto-sync-FN7E3OTO.js.map} +0 -0
  285. /package/dist/{chunk-G3T6YMBO.js.map → chunk-2KB7TTAP.js.map} +0 -0
  286. /package/dist/{chunk-345MEMRU.js.map → chunk-3OUGSOJP.js.map} +0 -0
  287. /package/dist/{chunk-CVQWNACA.js.map → chunk-3QAIX7TV.js.map} +0 -0
  288. /package/dist/{chunk-PTGPU4DC.js.map → chunk-436IRJUD.js.map} +0 -0
  289. /package/dist/{chunk-G2STTRYB.js.map → chunk-4D2YH47Z.js.map} +0 -0
  290. /package/dist/{chunk-DQQ4IM5L.js.map → chunk-4DXVWBDB.js.map} +0 -0
  291. /package/dist/{chunk-M2OPC4BD.js.map → chunk-4NFRYOHT.js.map} +0 -0
  292. /package/dist/{chunk-PWVBVIOP.js.map → chunk-5QHTQMRL.js.map} +0 -0
  293. /package/dist/{chunk-RFIJRZ4K.js.map → chunk-5XXTZ4Y7.js.map} +0 -0
  294. /package/dist/{chunk-S4DDLTPX.js.map → chunk-5Y43VGYB.js.map} +0 -0
  295. /package/dist/{chunk-LQGX5TCI.js.map → chunk-5YDWSWBU.js.map} +0 -0
  296. /package/dist/{chunk-FNVSBUC3.js.map → chunk-6AH2DDHI.js.map} +0 -0
  297. /package/dist/{chunk-JDOBIFBK.js.map → chunk-7CXL25AA.js.map} +0 -0
  298. /package/dist/{chunk-YLBE6PLR.js.map → chunk-7IGMKQWK.js.map} +0 -0
  299. /package/dist/{chunk-JFDKPW54.js.map → chunk-7OOW72QA.js.map} +0 -0
  300. /package/dist/{chunk-J5CUQRST.js.map → chunk-ABDTBGI2.js.map} +0 -0
  301. /package/dist/{chunk-IB63OVUB.js.map → chunk-AJ6ORARY.js.map} +0 -0
  302. /package/dist/{chunk-U6VC6RP3.js.map → chunk-AWLQNLTM.js.map} +0 -0
  303. /package/dist/{chunk-PJSK6OJM.js.map → chunk-BANSBRNX.js.map} +0 -0
  304. /package/dist/{chunk-32HO62I4.js.map → chunk-BDHWKFGM.js.map} +0 -0
  305. /package/dist/{chunk-MY7B3HYC.js.map → chunk-CLCMDKTB.js.map} +0 -0
  306. /package/dist/{chunk-AALVXJJ7.js.map → chunk-CQQTEDHS.js.map} +0 -0
  307. /package/dist/{chunk-2SYRHFUG.js.map → chunk-CV5AMCPX.js.map} +0 -0
  308. /package/dist/{chunk-BTOHGPHC.js.map → chunk-CXG2T7BJ.js.map} +0 -0
  309. /package/dist/{chunk-E7FN5N5E.js.map → chunk-DQJCQHII.js.map} +0 -0
  310. /package/dist/{chunk-CAXMG4JI.js.map → chunk-DYRXRQHV.js.map} +0 -0
  311. /package/dist/{chunk-IIFFC3RL.js.map → chunk-EDR6CVWZ.js.map} +0 -0
  312. /package/dist/{chunk-6O2VUWV6.js.map → chunk-EIFYYHAF.js.map} +0 -0
  313. /package/dist/{chunk-2JRB3Z5N.js.map → chunk-EP5WXE2G.js.map} +0 -0
  314. /package/dist/{chunk-2EZB2DL5.js.map → chunk-GE6HETIF.js.map} +0 -0
  315. /package/dist/{chunk-YVHNBOK2.js.map → chunk-GLS3A4SQ.js.map} +0 -0
  316. /package/dist/{chunk-7IGNDEUJ.js.map → chunk-H2XCCUOT.js.map} +0 -0
  317. /package/dist/{chunk-A5N6ZEUW.js.map → chunk-H6FA36LC.js.map} +0 -0
  318. /package/dist/{chunk-WPMDNCGB.js.map → chunk-HSZBALHV.js.map} +0 -0
  319. /package/dist/{chunk-XG4XXI66.js.map → chunk-I25RQA65.js.map} +0 -0
  320. /package/dist/{chunk-NBK24POV.js.map → chunk-IHIP7TJ3.js.map} +0 -0
  321. /package/dist/{chunk-DAVONFNK.js.map → chunk-IINXHPCV.js.map} +0 -0
  322. /package/dist/{chunk-EJJMDLVB.js.map → chunk-IJ4FEGZR.js.map} +0 -0
  323. /package/dist/{chunk-SQPC6MUM.js.map → chunk-IRYKRBEX.js.map} +0 -0
  324. /package/dist/{chunk-JOBE47EJ.js.map → chunk-IVGJXS5F.js.map} +0 -0
  325. /package/dist/{chunk-36BUOTVN.js.map → chunk-IXF7TRMQ.js.map} +0 -0
  326. /package/dist/{chunk-RVQVWDSN.js.map → chunk-IY7ZISXV.js.map} +0 -0
  327. /package/dist/{chunk-5FLFPTDK.js.map → chunk-JA72X46J.js.map} +0 -0
  328. /package/dist/{chunk-NLYOOGZ7.js.map → chunk-KE5PWLI6.js.map} +0 -0
  329. /package/dist/{chunk-U4SG4HKQ.js.map → chunk-LIGP5M2C.js.map} +0 -0
  330. /package/dist/{chunk-EB3RXN2L.js.map → chunk-MEMH5NKJ.js.map} +0 -0
  331. /package/dist/{chunk-4G2COUSD.js.map → chunk-MEP3POVW.js.map} +0 -0
  332. /package/dist/{chunk-35A7GCHG.js.map → chunk-MYBCB4AT.js.map} +0 -0
  333. /package/dist/{chunk-U46P4UAR.js.map → chunk-NQHSXHJP.js.map} +0 -0
  334. /package/dist/{chunk-QPWUG2S3.js.map → chunk-NSQ3GUVO.js.map} +0 -0
  335. /package/dist/{chunk-VQTPEL7O.js.map → chunk-O57VUN4U.js.map} +0 -0
  336. /package/dist/{chunk-WY4IV62O.js.map → chunk-OAFRMLL4.js.map} +0 -0
  337. /package/dist/{chunk-PCO3P7WJ.js.map → chunk-OGVJXIHX.js.map} +0 -0
  338. /package/dist/{chunk-IR5LZCE6.js.map → chunk-ORAL4HJC.js.map} +0 -0
  339. /package/dist/{chunk-LMZV3H4W.js.map → chunk-P22M3DX3.js.map} +0 -0
  340. /package/dist/{chunk-2J3M2KV4.js.map → chunk-PTFL3INS.js.map} +0 -0
  341. /package/dist/{chunk-CQBFEGLF.js.map → chunk-QDKABMUE.js.map} +0 -0
  342. /package/dist/{chunk-34G4U6HS.js.map → chunk-QRZMJ2WN.js.map} +0 -0
  343. /package/dist/{chunk-I2VQ7WBJ.js.map → chunk-QVBB2CLG.js.map} +0 -0
  344. /package/dist/{chunk-GUD6FYQG.js.map → chunk-R4O2G6ML.js.map} +0 -0
  345. /package/dist/{chunk-OSDAF7HH.js.map → chunk-R6EOFKZG.js.map} +0 -0
  346. /package/dist/{chunk-OJP3N7UK.js.map → chunk-R7WYAXPO.js.map} +0 -0
  347. /package/dist/{chunk-RU744TNX.js.map → chunk-RGPPNNDJ.js.map} +0 -0
  348. /package/dist/{chunk-6DNMUYEE.js.map → chunk-RIEGCK2W.js.map} +0 -0
  349. /package/dist/{chunk-KHOINMCN.js.map → chunk-RZCRXCLI.js.map} +0 -0
  350. /package/dist/{chunk-WI37MWRZ.js.map → chunk-SNGNGH53.js.map} +0 -0
  351. /package/dist/{chunk-R4NGLTUS.js.map → chunk-TDMNADPI.js.map} +0 -0
  352. /package/dist/{chunk-K4TWTUEY.js.map → chunk-TSEUVMJL.js.map} +0 -0
  353. /package/dist/{chunk-PT6DQK5T.js.map → chunk-TYOBAFCY.js.map} +0 -0
  354. /package/dist/{chunk-LI76ESJL.js.map → chunk-TZQOCQXB.js.map} +0 -0
  355. /package/dist/{chunk-WHTMVTU4.js.map → chunk-U3LVARGV.js.map} +0 -0
  356. /package/dist/{chunk-RNYVAQX2.js.map → chunk-UCCB7RKF.js.map} +0 -0
  357. /package/dist/{chunk-NUSQ3YEL.js.map → chunk-UXIZ5XN5.js.map} +0 -0
  358. /package/dist/{chunk-OV7EYM6M.js.map → chunk-VWCFR4NR.js.map} +0 -0
  359. /package/dist/{chunk-DQTCGVFK.js.map → chunk-WHCD4Z3D.js.map} +0 -0
  360. /package/dist/{chunk-P57VR7AI.js.map → chunk-WLC6XA6C.js.map} +0 -0
  361. /package/dist/{chunk-QCP75JGO.js.map → chunk-WQUGCOKF.js.map} +0 -0
  362. /package/dist/{chunk-P5FPO2BR.js.map → chunk-WWDO7ZWM.js.map} +0 -0
  363. /package/dist/{chunk-KATEWTQJ.js.map → chunk-X7J56GPG.js.map} +0 -0
  364. /package/dist/{chunk-W6K6BC3H.js.map → chunk-XTWF5XR6.js.map} +0 -0
  365. /package/dist/{chunk-YFET6A4I.js.map → chunk-Y7CXM7UM.js.map} +0 -0
  366. /package/dist/{chunk-YAPTJQI7.js.map → chunk-YMXCJ7SE.js.map} +0 -0
  367. /package/dist/{chunk-AXFWMRKI.js.map → chunk-YQJCWR4R.js.map} +0 -0
  368. /package/dist/{chunk-3J54RR3A.js.map → chunk-Z2EVKNZR.js.map} +0 -0
  369. /package/dist/{chunk-BAREPCLY.js.map → chunk-ZOGZMAGI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/maintenance/rebuild-memory-projection.ts","../src/maintenance/projection-timeline.ts","../src/maintenance/projection-rebuild-abort.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, rm, stat } from \"node:fs/promises\";\nimport { StorageManager } from \"../storage.js\";\nimport { log } from \"../logger.js\";\nimport {\n listMemoryGovernanceRuns,\n readMemoryGovernanceRunArtifact,\n} from \"./memory-governance.js\";\nimport { loadPersistedNativeKnowledgeChunks } from \"../native-knowledge.js\";\nimport { toBackupStamp } from \"./backup-stamp.js\";\nimport type {\n MemoryFile,\n MemoryLifecycleEvent,\n MemoryProjectionCurrentState,\n MemoryStatus,\n} from \"../types.js\";\nimport {\n inferMemoryStatus,\n MEMORY_LIFECYCLE_EVENT_SORT_ORDER,\n sortMemoryLifecycleEvents,\n toMemoryPathRel,\n} from \"../memory-lifecycle-ledger-utils.js\";\nimport { loadProjectionTimeline } from \"./projection-timeline.js\";\nimport {\n getMemoryProjectionPath,\n initializeMemoryProjectionDb,\n isProjectedMemoryPathValid,\n type ProjectedEntityMentionRow,\n type MemoryProjectionGovernanceAppliedActionRow,\n type MemoryProjectionGovernanceReviewQueueRow,\n type ProjectedNativeKnowledgeChunkRow,\n MEMORY_PROJECTION_SCHEMA_VERSION,\n memoryCurrentSelectExpressions,\n parseCurrentRow,\n readProjectedEntityMentions,\n readProjectedGovernanceRecord,\n readProjectedNativeKnowledgeChunks,\n parseTimelineRows,\n} from \"../memory-projection-store.js\";\nimport {\n normalizeProjectionPreview,\n normalizeProjectionTags,\n} from \"../memory-projection-format.js\";\nimport { openBetterSqlite3 } from \"../runtime/better-sqlite.js\";\nimport { commitPreparedFileAtomically } from \"./atomic-file.js\";\nimport { throwIfProjectionRebuildAborted } from \"./projection-rebuild-abort.js\";\nimport { isSupportPassportPrivateMemory } from \"../support-passport/card-projection.js\";\n\nexport interface RebuildMemoryProjectionOptions {\n memoryDir: string;\n /** Reuse the caller's live StorageManager (must be rooted at memoryDir). */\n storage?: StorageManager;\n defaultNamespace?: string;\n dryRun?: boolean;\n now?: Date;\n updatedAfter?: string;\n updatedBefore?: string;\n /**\n * When true, corpus reads keep the raw file text. Default false: the\n * projection is built from parsed fields, and skipping the raw copy keeps\n * the rebuild's peak heap down. Output rows stay the same either way.\n */\n retainRaw?: boolean;\n /** When aborted, the rebuild stops before it publishes the projection file. */\n signal?: AbortSignal;\n}\n\nexport type {\n SkippedBlankIdMemory,\n SkippedBlankIdTimelineEvent,\n SkippedDuplicateMemory,\n SkippedDuplicateTimelineEvent,\n} from \"./projection-support.js\";\nimport {\n assertInjectedStorageRooted,\n readProjectedEntityMentionRows,\n readProjectedGovernanceRows,\n readProjectedNativeKnowledgeRows,\n writeProjectionMetaHighWater,\n} from \"./projection-support.js\";\nimport type {\n SkippedBlankIdMemory,\n SkippedBlankIdTimelineEvent,\n SkippedDuplicateMemory,\n SkippedDuplicateTimelineEvent,\n} from \"./projection-support.js\";\nimport { isErrnoCode } from \"../utils/errno.js\";\n\n\nexport interface RebuildMemoryProjectionResult {\n dryRun: boolean;\n scannedMemories: number;\n currentRows: number;\n timelineRows: number;\n entityMentionRows: number;\n nativeKnowledgeRows: number;\n reviewQueueRows: number;\n outputPath: string;\n backupPath?: string;\n usedLifecycleLedger: boolean;\n skippedDuplicateMemories: SkippedDuplicateMemory[];\n skippedBlankIdMemories: SkippedBlankIdMemory[];\n skippedDuplicateTimelineEvents: SkippedDuplicateTimelineEvent[];\n skippedBlankIdTimelineEvents: SkippedBlankIdTimelineEvent[];\n scope: {\n updatedAfter: string | null;\n updatedBefore: string | null;\n };\n}\n\nexport interface VerifyMemoryProjectionOptions {\n memoryDir: string;\n defaultNamespace?: string;\n updatedAfter?: string;\n updatedBefore?: string;\n}\n\nexport interface VerifyMemoryProjectionResult {\n outputPath: string;\n projectionExists: boolean;\n ok: boolean;\n expectedCurrentRows: number;\n actualCurrentRows: number;\n expectedTimelineRows: number;\n actualTimelineRows: number;\n expectedEntityMentionRows: number;\n actualEntityMentionRows: number;\n expectedNativeKnowledgeRows: number;\n actualNativeKnowledgeRows: number;\n expectedReviewQueueRows: number;\n actualReviewQueueRows: number;\n missingCurrentMemoryIds: string[];\n extraCurrentMemoryIds: string[];\n mismatchedCurrentMemoryIds: string[];\n missingTimelineEventIds: string[];\n extraTimelineEventIds: string[];\n missingEntityMentionKeys: string[];\n extraEntityMentionKeys: string[];\n mismatchedEntityMentionKeys: string[];\n missingNativeKnowledgeChunkIds: string[];\n extraNativeKnowledgeChunkIds: string[];\n mismatchedNativeKnowledgeChunkIds: string[];\n missingReviewQueueEntryIds: string[];\n extraReviewQueueEntryIds: string[];\n mismatchedReviewQueueEntryIds: string[];\n usedLifecycleLedger: boolean;\n scope: {\n updatedAfter: string | null;\n updatedBefore: string | null;\n };\n}\n\nexport interface RepairMemoryProjectionOptions extends RebuildMemoryProjectionOptions {}\n\nexport interface RepairMemoryProjectionResult {\n dryRun: boolean;\n repaired: boolean;\n verify: VerifyMemoryProjectionResult;\n rebuild?: RebuildMemoryProjectionResult;\n}\n\nexport async function backupExistingProjection(\n memoryDir: string,\n outputPath: string,\n now: Date,\n): Promise<string | undefined> {\n try {\n await stat(outputPath);\n } catch (err) {\n if (isErrnoCode(err, \"ENOENT\")) {\n return undefined;\n }\n throw err;\n }\n\n const backupPath = path.join(\n memoryDir,\n \"archive\",\n \"memory-projection\",\n toBackupStamp(now),\n \"state\",\n \"memory-projection.sqlite\",\n );\n return backupPath;\n}\n\nfunction inferProjectedStatus(pathRel: string, memory: MemoryFile): MemoryStatus {\n return inferMemoryStatus(memory.frontmatter, pathRel);\n}\n\nfunction toCurrentStateRow(memoryDir: string, memory: MemoryFile): MemoryProjectionCurrentState {\n const pathRel = toMemoryPathRel(memoryDir, memory.path);\n return {\n memoryId: memory.frontmatter.id,\n category: memory.frontmatter.category,\n status: inferProjectedStatus(pathRel, memory),\n lifecycleState: memory.frontmatter.lifecycleState,\n path: memory.path,\n pathRel,\n created: memory.frontmatter.created,\n updated: memory.frontmatter.updated,\n archivedAt: memory.frontmatter.archivedAt,\n supersededAt: memory.frontmatter.supersededAt,\n entityRef: memory.frontmatter.entityRef,\n source: memory.frontmatter.source,\n confidence: memory.frontmatter.confidence,\n confidenceTier: memory.frontmatter.confidenceTier,\n memoryKind: memory.frontmatter.memoryKind,\n accessCount: memory.frontmatter.accessCount,\n lastAccessed: memory.frontmatter.lastAccessed,\n tags: normalizeProjectionTags(memory.frontmatter.tags),\n // Copy the preview off the source string so the full document can be collected.\n preview: Buffer.from(normalizeProjectionPreview(memory.content), \"utf8\").toString(\"utf8\"),\n privateRecord: isSupportPassportPrivateMemory(memory),\n };\n}\n\nfunction buildEntityMentionRows(\n currentRows: MemoryProjectionCurrentState[],\n): ProjectedEntityMentionRow[] {\n return currentRows.flatMap((row) => {\n const mentions: ProjectedEntityMentionRow[] = [];\n if (row.entityRef) {\n mentions.push({\n memoryId: row.memoryId,\n entityRef: row.entityRef,\n mentionSource: \"frontmatter.entityRef\",\n created: row.created,\n updated: row.updated,\n });\n }\n for (const tag of row.tags ?? []) {\n if (!tag.includes(\":\")) continue;\n mentions.push({\n memoryId: row.memoryId,\n entityRef: tag,\n mentionSource: \"tag\",\n created: row.created,\n updated: row.updated,\n });\n }\n return mentions;\n });\n}\n\nfunction buildGovernanceActionRowKey(action: {\n action: string;\n memoryId: string;\n reasonCode: string;\n originalPath: string;\n currentPath: string;\n}): string {\n return [\n action.action,\n action.memoryId,\n action.reasonCode,\n action.originalPath,\n action.currentPath,\n ].join(\"::\");\n}\n\nasync function loadLatestGovernanceProjection(memoryDir: string): Promise<{\n runId: string;\n summary: unknown;\n metrics: unknown;\n reviewQueueRows: MemoryProjectionGovernanceReviewQueueRow[];\n appliedActionRows: MemoryProjectionGovernanceAppliedActionRow[];\n report: string;\n} | null> {\n const runId = (await listMemoryGovernanceRuns(memoryDir))[0];\n if (!runId) return null;\n try {\n const artifact = await readMemoryGovernanceRunArtifact(memoryDir, runId);\n return {\n runId,\n summary: artifact.summary,\n metrics: artifact.metrics,\n reviewQueueRows: artifact.reviewQueue.map((entry) => ({\n runId,\n entryId: entry.entryId,\n memoryId: entry.memoryId,\n path: entry.path,\n reasonCode: entry.reasonCode,\n severity: entry.severity,\n suggestedAction: entry.suggestedAction,\n suggestedStatus: entry.suggestedStatus,\n relatedMemoryIds: [...entry.relatedMemoryIds],\n })),\n appliedActionRows: artifact.appliedActions.map((action) => ({\n runId,\n rowKey: buildGovernanceActionRowKey(action),\n action: action.action,\n memoryId: action.memoryId,\n reasonCode: action.reasonCode,\n beforeStatus: action.beforeStatus,\n afterStatus: action.afterStatus,\n originalPath: action.originalPath,\n currentPath: action.currentPath,\n })),\n report: artifact.report,\n };\n } catch {\n return null;\n }\n}\n\nfunction normalizeScopedIso(value: string | undefined): string | null {\n if (!value) return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n const parsed = new Date(trimmed);\n if (Number.isNaN(parsed.getTime())) {\n throw new Error(`invalid projection scope timestamp: ${value}`);\n }\n return parsed.toISOString();\n}\n\nfunction normalizeProjectionScope(options: {\n updatedAfter?: string;\n updatedBefore?: string;\n}): {\n updatedAfter: string | null;\n updatedBefore: string | null;\n} {\n const updatedAfter = normalizeScopedIso(options.updatedAfter);\n const updatedBefore = normalizeScopedIso(options.updatedBefore);\n if (\n updatedAfter &&\n updatedBefore &&\n new Date(updatedAfter).getTime() > new Date(updatedBefore).getTime()\n ) {\n throw new Error(\"updatedAfter must be less than or equal to updatedBefore\");\n }\n return {\n updatedAfter,\n updatedBefore,\n };\n}\n\nfunction hasScopedProjectionFilter(scope: {\n updatedAfter: string | null;\n updatedBefore: string | null;\n}): boolean {\n return scope.updatedAfter !== null || scope.updatedBefore !== null;\n}\n\nfunction memoryScopeTimestamp(memory: MemoryFile): string {\n const candidate = memory.frontmatter.updated || memory.frontmatter.created;\n return candidate;\n}\n\nfunction isTimestampInProjectionScope(\n timestamp: string,\n scope: { updatedAfter: string | null; updatedBefore: string | null },\n): boolean {\n if (!scope.updatedAfter && !scope.updatedBefore) return true;\n const parsed = new Date(timestamp);\n if (Number.isNaN(parsed.getTime())) return false;\n if (scope.updatedAfter && parsed.getTime() < new Date(scope.updatedAfter).getTime()) return false;\n if (scope.updatedBefore && parsed.getTime() >= new Date(scope.updatedBefore).getTime()) return false;\n return true;\n}\n\nfunction filterMemoriesForProjectionScope(\n memories: MemoryFile[],\n scope: { updatedAfter: string | null; updatedBefore: string | null },\n): MemoryFile[] {\n if (!scope.updatedAfter && !scope.updatedBefore) return memories;\n return memories.filter((memory) => isTimestampInProjectionScope(memoryScopeTimestamp(memory), scope));\n}\n\nfunction filterCurrentStateRowsForProjectionScope(\n rows: MemoryProjectionCurrentState[],\n scope: { updatedAfter: string | null; updatedBefore: string | null },\n): MemoryProjectionCurrentState[] {\n if (!scope.updatedAfter && !scope.updatedBefore) return rows;\n return rows.filter((row) => isTimestampInProjectionScope(row.updated || row.created, scope));\n}\n\nfunction serializeCurrentStateRow(row: MemoryProjectionCurrentState): string {\n return JSON.stringify({\n memoryId: row.memoryId,\n category: row.category,\n status: row.status,\n lifecycleState: row.lifecycleState ?? null,\n pathRel: row.pathRel,\n created: row.created,\n updated: row.updated,\n archivedAt: row.archivedAt ?? null,\n supersededAt: row.supersededAt ?? null,\n entityRef: row.entityRef ?? null,\n source: row.source,\n confidence: row.confidence,\n confidenceTier: row.confidenceTier,\n memoryKind: row.memoryKind ?? null,\n accessCount: row.accessCount ?? null,\n lastAccessed: row.lastAccessed ?? null,\n tags: row.tags ?? [],\n preview: row.preview ?? \"\",\n privateRecord: row.privateRecord === true,\n });\n}\n\nfunction serializeTimelineEvent(event: MemoryLifecycleEvent): string {\n return JSON.stringify({\n eventId: event.eventId,\n memoryId: event.memoryId,\n eventType: event.eventType,\n timestamp: event.timestamp,\n actor: event.actor,\n reasonCode: event.reasonCode ?? null,\n ruleVersion: event.ruleVersion,\n relatedMemoryIds: event.relatedMemoryIds ?? [],\n before: event.before ?? null,\n after: event.after ?? null,\n correlationId: event.correlationId ?? null,\n });\n}\n\nfunction serializeEntityMentionRow(row: ProjectedEntityMentionRow): string {\n return JSON.stringify(row);\n}\n\nfunction serializeNativeKnowledgeRow(row: ProjectedNativeKnowledgeChunkRow): string {\n return JSON.stringify({\n chunkId: row.chunkId,\n sourceKind: row.sourceKind,\n sourcePath: row.sourcePath,\n title: row.title,\n startLine: row.startLine,\n endLine: row.endLine,\n namespace: row.namespace ?? null,\n privacyClass: row.privacyClass ?? null,\n derivedDate: row.derivedDate ?? null,\n sessionKey: row.sessionKey ?? null,\n workflowKey: row.workflowKey ?? null,\n author: row.author ?? null,\n agent: row.agent ?? null,\n sourceHash: row.sourceHash ?? null,\n preview: row.preview,\n });\n}\n\nfunction serializeGovernanceReviewQueueRow(\n row: MemoryProjectionGovernanceReviewQueueRow,\n): string {\n return JSON.stringify({\n runId: row.runId,\n entryId: row.entryId,\n memoryId: row.memoryId,\n path: row.path,\n reasonCode: row.reasonCode,\n severity: row.severity,\n suggestedAction: row.suggestedAction,\n suggestedStatus: row.suggestedStatus ?? null,\n relatedMemoryIds: row.relatedMemoryIds,\n });\n}\n\nfunction selectProjectionMemories(\n tiers: MemoryFile[][],\n): {\n allMemories: MemoryFile[];\n memories: MemoryFile[];\n skippedDuplicateMemories: SkippedDuplicateMemory[];\n skippedBlankIdMemories: SkippedBlankIdMemory[];\n} {\n const allMemories = tiers.flat();\n const memories: MemoryFile[] = [];\n const keptById = new Map<string, MemoryFile>();\n const skippedDuplicateMemories: SkippedDuplicateMemory[] = [];\n const skippedBlankIdMemories: SkippedBlankIdMemory[] = [];\n\n // Tier order is authoritative: hot wins over cold, and cold wins over archive.\n // Paths break ties within a tier so the winner does not depend on readdir order.\n for (const tier of tiers) {\n for (const memory of [...tier].sort((left, right) => left.path.localeCompare(right.path))) {\n const memoryId = memory.frontmatter.id.trim();\n if (!memoryId) {\n skippedBlankIdMemories.push({ path: memory.path });\n log.warn(`projection rebuild skipped blank memory id: path=${memory.path}`);\n continue;\n }\n const kept = keptById.get(memoryId);\n if (kept) {\n skippedDuplicateMemories.push({\n memoryId,\n keptPath: kept.path,\n skippedPath: memory.path,\n });\n log.warn(\n `projection rebuild skipped duplicate memory id=${memoryId}: kept=${kept.path} skipped=${memory.path}`,\n );\n continue;\n }\n keptById.set(memoryId, memory);\n memories.push(memory);\n }\n }\n\n return { allMemories, memories, skippedDuplicateMemories, skippedBlankIdMemories };\n}\n\nasync function loadAuthoritativeProjectionSnapshot(options: {\n memoryDir: string;\n defaultNamespace?: string;\n storage?: StorageManager;\n updatedAfter?: string;\n updatedBefore?: string;\n retainRaw?: boolean;\n signal?: AbortSignal;\n}): Promise<{\n allMemories: MemoryFile[];\n currentRows: MemoryProjectionCurrentState[];\n timelineRows: MemoryLifecycleEvent[];\n scopedCurrentRows: MemoryProjectionCurrentState[];\n scopedTimelineRows: MemoryLifecycleEvent[];\n entityMentionRows: ProjectedEntityMentionRow[];\n scopedEntityMentionRows: ProjectedEntityMentionRow[];\n nativeKnowledgeRows: ProjectedNativeKnowledgeChunkRow[];\n governance:\n | {\n runId: string;\n summary: unknown;\n metrics: unknown;\n reviewQueueRows: MemoryProjectionGovernanceReviewQueueRow[];\n appliedActionRows: MemoryProjectionGovernanceAppliedActionRow[];\n report: string;\n }\n | null;\n usedLifecycleLedger: boolean;\n sourceLifecycleLedgerEventCount: number;\n scope: {\n updatedAfter: string | null;\n updatedBefore: string | null;\n };\n skippedDuplicateMemories: SkippedDuplicateMemory[];\n skippedBlankIdMemories: SkippedBlankIdMemory[];\n skippedDuplicateTimelineEvents: SkippedDuplicateTimelineEvent[];\n skippedBlankIdTimelineEvents: SkippedBlankIdTimelineEvent[];\n}> {\n const storage = assertInjectedStorageRooted(\"rebuildMemoryProjection\", options.memoryDir, options.storage) ?? new StorageManager(options.memoryDir);\n // Force a fresh disk read — projection verify/rebuild must see the true\n // on-disk state, not a potentially stale in-process cache.\n storage.invalidateAllMemoriesCacheForDir({ indexedText: false });\n const corpusRead = {\n retainRaw: options.retainRaw === true,\n abortSignal: options.signal,\n };\n const hot = await storage.readAllMemories(corpusRead);\n await throwIfProjectionRebuildAborted(options.signal);\n const cold = await storage.readAllColdMemories(corpusRead);\n await throwIfProjectionRebuildAborted(options.signal);\n const archived = await storage.readArchivedMemories(corpusRead);\n await throwIfProjectionRebuildAborted(options.signal);\n const selected = selectProjectionMemories([hot, cold, archived]);\n const allMemories = selected.allMemories;\n const projectionMemories = selected.memories;\n const currentRows = projectionMemories.map((memory) => toCurrentStateRow(options.memoryDir, memory));\n // Preview is already a detached copy. Drop the document bodies before the\n // ledger scan so peak heap is the larger of the corpus and the timeline,\n // not both. These objects bypass the shared caches when retainRaw is off,\n // so clearing them cannot strip a raw copy another caller is holding.\n if (options.retainRaw !== true) {\n for (const memory of allMemories) memory.content = \"\";\n }\n const {\n events,\n usedLifecycleLedger,\n sourceLifecycleLedgerEventCount,\n skipped: skippedDuplicateTimelineEvents,\n skippedBlankIds: skippedBlankIdTimelineEvents,\n } = await loadProjectionTimeline({\n storage,\n memoryDir: options.memoryDir,\n memories: projectionMemories,\n signal: options.signal,\n });\n await throwIfProjectionRebuildAborted(options.signal);\n const scope = normalizeProjectionScope(options);\n const scopedMemories = filterMemoriesForProjectionScope(projectionMemories, scope);\n const scopedMemoryIds = new Set(scopedMemories.map((memory) => memory.frontmatter.id));\n const nativeKnowledgeRows = await loadPersistedNativeKnowledgeChunks({\n memoryDir: options.memoryDir,\n defaultNamespace: options.defaultNamespace ?? \"default\",\n }).then((rows) => rows.map((row) => ({\n chunkId: row.chunkId,\n sourceKind: row.sourceKind,\n sourcePath: row.sourcePath,\n title: row.title,\n startLine: row.startLine,\n endLine: row.endLine,\n namespace: row.namespace ?? options.defaultNamespace ?? \"default\",\n privacyClass: row.privacyClass,\n derivedDate: row.derivedDate,\n sessionKey: row.sessionKey,\n workflowKey: row.workflowKey,\n author: row.author,\n agent: row.agent,\n sourceHash: row.sourceHash,\n preview: normalizeProjectionPreview(row.content),\n })));\n const governance = await loadLatestGovernanceProjection(options.memoryDir);\n const entityMentionRows = buildEntityMentionRows(currentRows);\n\n return {\n allMemories,\n currentRows,\n timelineRows: events,\n scopedCurrentRows: currentRows.filter((row) => scopedMemoryIds.has(row.memoryId)),\n scopedTimelineRows: events.filter((event) => scopedMemoryIds.has(event.memoryId)),\n entityMentionRows,\n scopedEntityMentionRows: entityMentionRows.filter((row) => scopedMemoryIds.has(row.memoryId)),\n nativeKnowledgeRows,\n governance,\n usedLifecycleLedger,\n sourceLifecycleLedgerEventCount,\n scope,\n skippedDuplicateMemories: selected.skippedDuplicateMemories,\n skippedBlankIdMemories: selected.skippedBlankIdMemories,\n skippedDuplicateTimelineEvents,\n skippedBlankIdTimelineEvents,\n };\n}\n\nfunction readProjectedCurrentRows(\n memoryDir: string,\n): { projectionExists: boolean; rows: MemoryProjectionCurrentState[] } {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n const db = openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n try {\n const selectExpressions = memoryCurrentSelectExpressions(db);\n const rows = db.prepare(`\n SELECT\n memory_id,\n category,\n status,\n lifecycle_state,\n path_rel,\n created_at,\n updated_at,\n archived_at,\n superseded_at,\n entity_ref,\n source,\n confidence,\n confidence_tier,\n memory_kind,\n access_count,\n last_accessed,\n ${selectExpressions.tagsJson}, ${selectExpressions.previewText}, ${selectExpressions.privateRecord}\n FROM memory_current\n `).all() as Array<Record<string, unknown>>;\n\n return {\n projectionExists: true,\n rows: rows\n .map((row) => parseCurrentRow(memoryDir, row))\n .filter((row): row is MemoryProjectionCurrentState => row !== null),\n };\n } finally {\n db.close();\n }\n } catch {\n return { projectionExists: false, rows: [] };\n }\n}\n\nfunction readProjectedTimelineRows(\n memoryDir: string,\n): { projectionExists: boolean; rows: MemoryLifecycleEvent[] } {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n const db = openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n try {\n const rows = db.prepare(`\n SELECT\n event_id,\n memory_id,\n event_type,\n timestamp,\n actor,\n reason_code,\n rule_version,\n related_memory_ids_json,\n before_json,\n after_json,\n correlation_id\n FROM memory_timeline\n `).all() as Array<Record<string, unknown>>;\n\n return {\n projectionExists: true,\n rows: parseTimelineRows(rows),\n };\n } finally {\n db.close();\n }\n } catch {\n return { projectionExists: false, rows: [] };\n }\n}\n\n\nfunction writeProjectionDb(\n dbPath: string,\n nowIso: string,\n currentRows: MemoryProjectionCurrentState[],\n timelineRows: MemoryLifecycleEvent[],\n entityMentionRows: ProjectedEntityMentionRow[],\n nativeKnowledgeRows: ProjectedNativeKnowledgeChunkRow[],\n governance: Awaited<ReturnType<typeof loadLatestGovernanceProjection>>,\n usedLifecycleLedger: boolean,\n sourceLifecycleLedgerEventCount: number,\n complete: boolean,\n): void {\n const db = openBetterSqlite3(dbPath);\n const memoryDir = path.dirname(path.dirname(dbPath));\n try {\n initializeMemoryProjectionDb(db);\n\n const insertMeta = db.prepare(\"INSERT OR REPLACE INTO meta(key, value) VALUES (?, ?)\");\n insertMeta.run(\"schemaVersion\", String(MEMORY_PROJECTION_SCHEMA_VERSION));\n insertMeta.run(\"rebuiltAt\", nowIso);\n insertMeta.run(\"usedLifecycleLedger\", usedLifecycleLedger ? \"true\" : \"false\");\n insertMeta.run(\"complete\", complete ? \"true\" : \"false\");\n writeProjectionMetaHighWater(insertMeta, sourceLifecycleLedgerEventCount, timelineRows);\n insertMeta.run(\"latestGovernanceRunId\", governance?.runId ?? \"\");\n\n const insertCurrent = db.prepare(`\n INSERT INTO memory_current (\n memory_id,\n category,\n status,\n lifecycle_state,\n path_rel,\n path_valid,\n created_at,\n updated_at,\n archived_at,\n superseded_at,\n entity_ref,\n source,\n confidence,\n confidence_tier,\n memory_kind,\n access_count,\n last_accessed,\n tags_json, preview_text, private_record\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const insertTimeline = db.prepare(`\n INSERT INTO memory_timeline (\n event_id,\n memory_id,\n event_type,\n timestamp,\n event_order,\n actor,\n reason_code,\n rule_version,\n related_memory_ids_json,\n before_json,\n after_json,\n correlation_id\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const insertEntityMention = db.prepare(`\n INSERT INTO memory_entity_mentions (\n memory_id,\n entity_ref,\n mention_source,\n created_at,\n updated_at\n ) VALUES (?, ?, ?, ?, ?)\n `);\n\n const insertNativeKnowledge = db.prepare(`\n INSERT INTO native_knowledge_chunks (\n chunk_id,\n source_kind,\n source_path,\n title,\n start_line,\n end_line,\n namespace,\n privacy_class,\n derived_date,\n session_key,\n workflow_key,\n author,\n agent,\n source_hash,\n preview_text\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const insertGovernanceReviewQueue = db.prepare(`\n INSERT INTO memory_review_queue (\n entry_id,\n run_id,\n memory_id,\n path,\n reason_code,\n severity,\n suggested_action,\n suggested_status,\n related_memory_ids_json\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const insertGovernanceAppliedAction = db.prepare(`\n INSERT INTO memory_review_actions (\n row_key,\n run_id,\n action,\n memory_id,\n reason_code,\n before_status,\n after_status,\n original_path,\n current_path\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const insertGovernanceRun = db.prepare(`\n INSERT INTO memory_review_runs (\n run_id,\n created_at,\n mode,\n summary_json,\n metrics_json,\n applied_actions_json,\n report_markdown\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n const writeTx = db.transaction(() => {\n for (const row of currentRows) {\n insertCurrent.run(\n row.memoryId,\n row.category,\n row.status,\n row.lifecycleState ?? null,\n row.pathRel,\n isProjectedMemoryPathValid(memoryDir, row.pathRel) ? 1 : 0,\n row.created,\n row.updated,\n row.archivedAt ?? null,\n row.supersededAt ?? null,\n row.entityRef ?? null,\n row.source,\n row.confidence,\n row.confidenceTier,\n row.memoryKind ?? null,\n row.accessCount ?? null,\n row.lastAccessed ?? null, JSON.stringify(row.tags ?? []), row.preview ?? \"\",\n row.privateRecord === true ? 1 : 0,\n );\n }\n\n for (const event of timelineRows) {\n insertTimeline.run(\n event.eventId,\n event.memoryId,\n event.eventType,\n event.timestamp,\n MEMORY_LIFECYCLE_EVENT_SORT_ORDER[event.eventType],\n event.actor,\n event.reasonCode ?? null,\n event.ruleVersion,\n JSON.stringify(event.relatedMemoryIds ?? []),\n event.before ? JSON.stringify(event.before) : null,\n event.after ? JSON.stringify(event.after) : null,\n event.correlationId ?? null,\n );\n }\n\n for (const row of entityMentionRows) {\n insertEntityMention.run(\n row.memoryId,\n row.entityRef,\n row.mentionSource,\n row.created,\n row.updated,\n );\n }\n\n for (const row of nativeKnowledgeRows) {\n insertNativeKnowledge.run(\n row.chunkId,\n row.sourceKind,\n row.sourcePath,\n row.title,\n row.startLine,\n row.endLine,\n row.namespace ?? null,\n row.privacyClass ?? null,\n row.derivedDate ?? null,\n row.sessionKey ?? null,\n row.workflowKey ?? null,\n row.author ?? null,\n row.agent ?? null,\n row.sourceHash ?? null,\n row.preview,\n );\n }\n\n for (const row of governance?.reviewQueueRows ?? []) {\n insertGovernanceReviewQueue.run(\n row.entryId,\n row.runId,\n row.memoryId,\n row.path,\n row.reasonCode,\n row.severity,\n row.suggestedAction,\n row.suggestedStatus ?? null,\n JSON.stringify(row.relatedMemoryIds),\n );\n }\n\n for (const row of governance?.appliedActionRows ?? []) {\n insertGovernanceAppliedAction.run(\n row.rowKey,\n row.runId,\n row.action,\n row.memoryId,\n row.reasonCode,\n row.beforeStatus,\n row.afterStatus ?? null,\n row.originalPath,\n row.currentPath,\n );\n }\n\n if (governance) {\n const createdAt =\n typeof (governance.summary as { createdAt?: unknown } | undefined)?.createdAt === \"string\"\n ? (governance.summary as { createdAt: string }).createdAt\n : nowIso;\n const mode =\n typeof (governance.summary as { mode?: unknown } | undefined)?.mode === \"string\"\n ? (governance.summary as { mode: string }).mode\n : \"shadow\";\n insertGovernanceRun.run(\n governance.runId,\n createdAt,\n mode,\n JSON.stringify(governance.summary ?? null),\n JSON.stringify(governance.metrics ?? null),\n JSON.stringify(\n (governance.appliedActionRows ?? []).map((row) => ({\n action: row.action,\n memoryId: row.memoryId,\n reasonCode: row.reasonCode,\n beforeStatus: row.beforeStatus,\n afterStatus: row.afterStatus,\n originalPath: row.originalPath,\n currentPath: row.currentPath,\n })),\n ),\n governance.report,\n );\n }\n });\n\n writeTx();\n } finally {\n db.close();\n }\n}\n\nfunction mergeScopedCurrentRows(\n existingRows: MemoryProjectionCurrentState[],\n replacementRows: MemoryProjectionCurrentState[],\n scopedMemoryIds: Set<string>,\n): MemoryProjectionCurrentState[] {\n return [...existingRows.filter((row) => !scopedMemoryIds.has(row.memoryId)), ...replacementRows]\n .sort((a, b) => a.memoryId.localeCompare(b.memoryId));\n}\n\nfunction mergeScopedTimelineRows(\n existingRows: MemoryLifecycleEvent[],\n replacementRows: MemoryLifecycleEvent[],\n scopedMemoryIds: Set<string>,\n): MemoryLifecycleEvent[] {\n return sortMemoryLifecycleEvents([\n ...existingRows.filter((event) => !scopedMemoryIds.has(event.memoryId)),\n ...replacementRows,\n ]);\n}\n\nfunction mergeScopedEntityMentionRows(\n existingRows: ProjectedEntityMentionRow[],\n replacementRows: ProjectedEntityMentionRow[],\n scopedMemoryIds: Set<string>,\n): ProjectedEntityMentionRow[] {\n return [\n ...existingRows.filter((row) => !scopedMemoryIds.has(row.memoryId)),\n ...replacementRows,\n ].sort((left, right) =>\n [left.entityRef, left.memoryId, left.mentionSource].join(\"::\").localeCompare(\n [right.entityRef, right.memoryId, right.mentionSource].join(\"::\"),\n )\n );\n}\n\nexport async function rebuildMemoryProjection(\n options: RebuildMemoryProjectionOptions,\n): Promise<RebuildMemoryProjectionResult> {\n const dryRun = options.dryRun !== false;\n const now = options.now ?? new Date();\n const outputPath = getMemoryProjectionPath(options.memoryDir);\n const snapshot = await loadAuthoritativeProjectionSnapshot(options);\n await throwIfProjectionRebuildAborted(options.signal);\n\n let backupPath: string | undefined;\n if (!dryRun) {\n let nextCurrentRows = snapshot.currentRows;\n let nextTimelineRows = snapshot.timelineRows;\n let nextEntityMentionRows = snapshot.entityMentionRows;\n let nextNativeKnowledgeRows = snapshot.nativeKnowledgeRows;\n let nextGovernance = snapshot.governance;\n if (hasScopedProjectionFilter(snapshot.scope)) {\n nextCurrentRows = snapshot.scopedCurrentRows;\n nextTimelineRows = snapshot.scopedTimelineRows;\n nextEntityMentionRows = snapshot.scopedEntityMentionRows;\n const projectedCurrent = readProjectedCurrentRows(options.memoryDir);\n const projectedTimeline = readProjectedTimelineRows(options.memoryDir);\n const projectedEntityMentions = readProjectedEntityMentionRows(options.memoryDir);\n const projectedNativeKnowledge = readProjectedNativeKnowledgeRows(options.memoryDir);\n const projectedGovernance = readProjectedGovernanceRows(options.memoryDir);\n if (projectedCurrent.projectionExists && projectedTimeline.projectionExists) {\n const actualScopedCurrentRows = filterCurrentStateRowsForProjectionScope(\n projectedCurrent.rows,\n snapshot.scope,\n );\n const scopedMemoryIds = new Set([\n ...snapshot.scopedCurrentRows.map((row) => row.memoryId),\n ...snapshot.scopedTimelineRows.map((event) => event.memoryId),\n ...actualScopedCurrentRows.map((row) => row.memoryId),\n ]);\n nextCurrentRows = mergeScopedCurrentRows(\n projectedCurrent.rows,\n snapshot.scopedCurrentRows,\n scopedMemoryIds,\n );\n nextTimelineRows = mergeScopedTimelineRows(\n projectedTimeline.rows,\n snapshot.scopedTimelineRows,\n scopedMemoryIds,\n );\n nextEntityMentionRows = mergeScopedEntityMentionRows(\n projectedEntityMentions.rows,\n snapshot.scopedEntityMentionRows,\n scopedMemoryIds,\n );\n }\n if (projectedNativeKnowledge.projectionExists) {\n // Native knowledge rows are always loaded from the full persisted sync state,\n // so scoped memory rebuilds should publish the fresh snapshot instead of\n // pinning the projection to stale previously projected rows.\n nextNativeKnowledgeRows = snapshot.nativeKnowledgeRows;\n }\n if (projectedGovernance.projectionExists && projectedGovernance.runId) {\n // Governance rows are also sourced from standalone artifact snapshots, so\n // scoped memory rebuilds should keep the latest governance artifact data\n // instead of restoring whatever happened to be in the prior projection.\n nextGovernance = snapshot.governance;\n }\n }\n\n const tempPath = `${outputPath}.tmp`;\n await mkdir(path.dirname(outputPath), { recursive: true });\n await throwIfProjectionRebuildAborted(options.signal);\n await rm(tempPath, { force: true });\n writeProjectionDb(\n tempPath,\n now.toISOString(),\n nextCurrentRows,\n nextTimelineRows,\n nextEntityMentionRows,\n nextNativeKnowledgeRows,\n nextGovernance,\n snapshot.usedLifecycleLedger,\n snapshot.sourceLifecycleLedgerEventCount,\n !hasScopedProjectionFilter(snapshot.scope),\n );\n try {\n await throwIfProjectionRebuildAborted(options.signal);\n backupPath = await backupExistingProjection(options.memoryDir, outputPath, now);\n await throwIfProjectionRebuildAborted(options.signal);\n backupPath = await commitPreparedFileAtomically(\n tempPath,\n outputPath,\n backupPath,\n () => throwIfProjectionRebuildAborted(options.signal),\n );\n } catch (err) {\n if (options.signal?.aborted) await rm(tempPath, { force: true });\n throw err;\n }\n }\n\n return {\n dryRun,\n scannedMemories: snapshot.allMemories.length,\n currentRows: snapshot.scopedCurrentRows.length,\n timelineRows: snapshot.scopedTimelineRows.length,\n entityMentionRows: snapshot.scopedEntityMentionRows.length,\n nativeKnowledgeRows: snapshot.nativeKnowledgeRows.length,\n reviewQueueRows: snapshot.governance?.reviewQueueRows.length ?? 0,\n outputPath,\n backupPath,\n usedLifecycleLedger: snapshot.usedLifecycleLedger,\n skippedDuplicateMemories: snapshot.skippedDuplicateMemories,\n skippedBlankIdMemories: snapshot.skippedBlankIdMemories,\n skippedDuplicateTimelineEvents: snapshot.skippedDuplicateTimelineEvents,\n skippedBlankIdTimelineEvents: snapshot.skippedBlankIdTimelineEvents,\n scope: snapshot.scope,\n };\n}\n\nexport async function verifyMemoryProjection(\n options: VerifyMemoryProjectionOptions,\n): Promise<VerifyMemoryProjectionResult> {\n const outputPath = getMemoryProjectionPath(options.memoryDir);\n const snapshot = await loadAuthoritativeProjectionSnapshot(options);\n const projectedCurrent = readProjectedCurrentRows(options.memoryDir);\n const projectedTimeline = readProjectedTimelineRows(options.memoryDir);\n const projectedEntityMentions = readProjectedEntityMentionRows(options.memoryDir);\n const projectedNativeKnowledge = readProjectedNativeKnowledgeRows(options.memoryDir);\n const projectedGovernance = readProjectedGovernanceRows(options.memoryDir);\n const projectionExists = projectedCurrent.projectionExists\n || projectedTimeline.projectionExists\n || projectedEntityMentions.projectionExists\n || projectedNativeKnowledge.projectionExists\n || projectedGovernance.projectionExists;\n\n const actualScopedCurrentRows = filterCurrentStateRowsForProjectionScope(projectedCurrent.rows, snapshot.scope);\n const expectedCurrentById = new Map(\n snapshot.scopedCurrentRows.map((row) => [row.memoryId, serializeCurrentStateRow(row)]),\n );\n const actualCurrentById = new Map(\n actualScopedCurrentRows.map((row) => [row.memoryId, serializeCurrentStateRow(row)]),\n );\n\n const missingCurrentMemoryIds = [...expectedCurrentById.keys()]\n .filter((memoryId) => !actualCurrentById.has(memoryId))\n .sort();\n const extraCurrentMemoryIds = [...actualCurrentById.keys()]\n .filter((memoryId) => !expectedCurrentById.has(memoryId))\n .sort();\n const mismatchedCurrentMemoryIds = [...expectedCurrentById.keys()]\n .filter((memoryId) =>\n actualCurrentById.has(memoryId) && actualCurrentById.get(memoryId) !== expectedCurrentById.get(memoryId)\n )\n .sort();\n\n const selectedMemoryIds = new Set([\n ...snapshot.scopedCurrentRows.map((row) => row.memoryId),\n ...actualScopedCurrentRows.map((row) => row.memoryId),\n ]);\n const expectedTimelineById = new Map(\n snapshot.scopedTimelineRows.map((event) => [event.eventId, serializeTimelineEvent(event)]),\n );\n const actualTimelineRows = projectedTimeline.rows.filter((event) => selectedMemoryIds.has(event.memoryId));\n const actualTimelineById = new Map(\n actualTimelineRows.map((event) => [event.eventId, serializeTimelineEvent(event)]),\n );\n const missingTimelineEventIds = [...expectedTimelineById.keys()]\n .filter((eventId) => !actualTimelineById.has(eventId))\n .sort();\n const extraTimelineEventIds = [...actualTimelineById.keys()]\n .filter((eventId) => !expectedTimelineById.has(eventId))\n .sort();\n\n const expectedEntityMentionsByKey = new Map(\n snapshot.scopedEntityMentionRows.map((row) => [\n `${row.memoryId}::${row.entityRef}::${row.mentionSource}`,\n serializeEntityMentionRow(row),\n ]),\n );\n const actualScopedEntityMentionRows = projectedEntityMentions.rows.filter((row) => selectedMemoryIds.has(row.memoryId));\n const actualEntityMentionsByKey = new Map(\n actualScopedEntityMentionRows.map((row) => [\n `${row.memoryId}::${row.entityRef}::${row.mentionSource}`,\n serializeEntityMentionRow(row),\n ]),\n );\n const missingEntityMentionKeys = [...expectedEntityMentionsByKey.keys()]\n .filter((key) => !actualEntityMentionsByKey.has(key))\n .sort();\n const extraEntityMentionKeys = [...actualEntityMentionsByKey.keys()]\n .filter((key) => !expectedEntityMentionsByKey.has(key))\n .sort();\n const mismatchedEntityMentionKeys = [...expectedEntityMentionsByKey.keys()]\n .filter((key) =>\n actualEntityMentionsByKey.has(key) && actualEntityMentionsByKey.get(key) !== expectedEntityMentionsByKey.get(key)\n )\n .sort();\n\n const expectedNativeKnowledgeById = new Map(\n snapshot.nativeKnowledgeRows.map((row) => [row.chunkId, serializeNativeKnowledgeRow(row)]),\n );\n const actualNativeKnowledgeById = new Map(\n projectedNativeKnowledge.rows.map((row) => [row.chunkId, serializeNativeKnowledgeRow(row)]),\n );\n const missingNativeKnowledgeChunkIds = [...expectedNativeKnowledgeById.keys()]\n .filter((chunkId) => !actualNativeKnowledgeById.has(chunkId))\n .sort();\n const extraNativeKnowledgeChunkIds = [...actualNativeKnowledgeById.keys()]\n .filter((chunkId) => !expectedNativeKnowledgeById.has(chunkId))\n .sort();\n const mismatchedNativeKnowledgeChunkIds = [...expectedNativeKnowledgeById.keys()]\n .filter((chunkId) =>\n actualNativeKnowledgeById.has(chunkId) && actualNativeKnowledgeById.get(chunkId) !== expectedNativeKnowledgeById.get(chunkId)\n )\n .sort();\n\n const expectedReviewQueueById = new Map(\n (snapshot.governance?.reviewQueueRows ?? []).map((row) => [\n `${row.runId}::${row.entryId}`,\n serializeGovernanceReviewQueueRow(row),\n ]),\n );\n const actualReviewQueueById = new Map(\n projectedGovernance.reviewQueueRows.map((row) => [\n `${row.runId}::${row.entryId}`,\n serializeGovernanceReviewQueueRow(row),\n ]),\n );\n const missingReviewQueueEntryIds = [...expectedReviewQueueById.keys()]\n .filter((entryId) => !actualReviewQueueById.has(entryId))\n .sort();\n const extraReviewQueueEntryIds = [...actualReviewQueueById.keys()]\n .filter((entryId) => !expectedReviewQueueById.has(entryId))\n .sort();\n const mismatchedReviewQueueEntryIds = [...expectedReviewQueueById.keys()]\n .filter((entryId) =>\n actualReviewQueueById.has(entryId) && actualReviewQueueById.get(entryId) !== expectedReviewQueueById.get(entryId)\n )\n .sort();\n\n return {\n outputPath,\n projectionExists,\n ok:\n projectionExists &&\n missingCurrentMemoryIds.length === 0 &&\n extraCurrentMemoryIds.length === 0 &&\n mismatchedCurrentMemoryIds.length === 0 &&\n missingTimelineEventIds.length === 0 &&\n extraTimelineEventIds.length === 0 &&\n missingEntityMentionKeys.length === 0 &&\n extraEntityMentionKeys.length === 0 &&\n mismatchedEntityMentionKeys.length === 0 &&\n missingNativeKnowledgeChunkIds.length === 0 &&\n extraNativeKnowledgeChunkIds.length === 0 &&\n mismatchedNativeKnowledgeChunkIds.length === 0 &&\n missingReviewQueueEntryIds.length === 0 &&\n extraReviewQueueEntryIds.length === 0 &&\n mismatchedReviewQueueEntryIds.length === 0,\n expectedCurrentRows: snapshot.scopedCurrentRows.length,\n actualCurrentRows: actualScopedCurrentRows.length,\n expectedTimelineRows: snapshot.scopedTimelineRows.length,\n actualTimelineRows: actualTimelineRows.length,\n expectedEntityMentionRows: snapshot.scopedEntityMentionRows.length,\n actualEntityMentionRows: actualScopedEntityMentionRows.length,\n expectedNativeKnowledgeRows: snapshot.nativeKnowledgeRows.length,\n actualNativeKnowledgeRows: projectedNativeKnowledge.rows.length,\n expectedReviewQueueRows: snapshot.governance?.reviewQueueRows.length ?? 0,\n actualReviewQueueRows: projectedGovernance.reviewQueueRows.length,\n missingCurrentMemoryIds,\n extraCurrentMemoryIds,\n mismatchedCurrentMemoryIds,\n missingTimelineEventIds,\n extraTimelineEventIds,\n missingEntityMentionKeys,\n extraEntityMentionKeys,\n mismatchedEntityMentionKeys,\n missingNativeKnowledgeChunkIds,\n extraNativeKnowledgeChunkIds,\n mismatchedNativeKnowledgeChunkIds,\n missingReviewQueueEntryIds,\n extraReviewQueueEntryIds,\n mismatchedReviewQueueEntryIds,\n usedLifecycleLedger: snapshot.usedLifecycleLedger,\n scope: snapshot.scope,\n };\n}\n\nexport async function repairMemoryProjection(\n options: RepairMemoryProjectionOptions,\n): Promise<RepairMemoryProjectionResult> {\n const dryRun = options.dryRun !== false;\n const verify = await verifyMemoryProjection(options);\n if (verify.ok) {\n return {\n dryRun,\n repaired: false,\n verify,\n };\n }\n if (dryRun) {\n return {\n dryRun: true,\n repaired: false,\n verify,\n };\n }\n\n const rebuild = await rebuildMemoryProjection({\n ...options,\n dryRun: false,\n });\n const verified = await verifyMemoryProjection(options);\n return {\n dryRun: false,\n repaired: verified.ok,\n verify: verified,\n rebuild,\n };\n}\n","/**\n * Projection timeline assembly.\n *\n * The lifecycle ledger is streamed one event at a time. Dedup keeps the same\n * winner as sort-then-first-wins (stable `compareMemoryLifecycleEvents`, file\n * order on ties) without materializing the unsorted ledger beside the result.\n */\nimport path from \"node:path\";\nimport { throwIfAborted } from \"../abort-error.js\";\nimport { log } from \"../logger.js\";\nimport type { MemoryFile, MemoryLifecycleEvent } from \"../types.js\";\nimport {\n buildLifecycleEventsForMemory,\n compareMemoryLifecycleEvents,\n memoryLifecycleEventProjectionIdentity,\n sortMemoryLifecycleEvents,\n} from \"../memory-lifecycle-ledger-utils.js\";\nimport type {\n SkippedBlankIdTimelineEvent,\n SkippedDuplicateTimelineEvent,\n} from \"./projection-support.js\";\n\nexport interface ProjectionLedgerReader {\n iterateMemoryLifecycleEvents(): AsyncIterable<MemoryLifecycleEvent>;\n}\n\nexport interface ProjectionTimeline {\n events: MemoryLifecycleEvent[];\n usedLifecycleLedger: boolean;\n sourceLifecycleLedgerEventCount: number;\n skipped: SkippedDuplicateTimelineEvent[];\n skippedBlankIds: SkippedBlankIdTimelineEvent[];\n}\n\nfunction loadTimelineEvents(\n memories: MemoryFile[],\n lifecycleEvents: MemoryLifecycleEvent[],\n): { events: MemoryLifecycleEvent[]; usedLifecycleLedger: boolean } {\n if (lifecycleEvents.length > 0) {\n return {\n events: sortMemoryLifecycleEvents(lifecycleEvents),\n usedLifecycleLedger: true,\n };\n }\n\n return {\n events: sortMemoryLifecycleEvents(memories.flatMap((memory) => buildLifecycleEventsForMemory(memory))),\n usedLifecycleLedger: false,\n };\n}\n\nfunction deduplicateTimelineEvents(\n events: MemoryLifecycleEvent[],\n sourcePathFor: (event: MemoryLifecycleEvent) => string,\n): {\n events: MemoryLifecycleEvent[];\n skipped: SkippedDuplicateTimelineEvent[];\n skippedBlankIds: SkippedBlankIdTimelineEvent[];\n} {\n const keptById = new Map<string, { event: MemoryLifecycleEvent; path: string }>();\n const unique: MemoryLifecycleEvent[] = [];\n const skipped: SkippedDuplicateTimelineEvent[] = [];\n const skippedBlankIds: SkippedBlankIdTimelineEvent[] = [];\n for (const event of sortMemoryLifecycleEvents(events)) {\n const sourcePath = sourcePathFor(event);\n if (!event.memoryId.trim()) {\n skippedBlankIds.push({ eventId: event.eventId, path: sourcePath });\n log.warn(\n `projection rebuild skipped timeline event with blank memory id: `\n + `event_id=${event.eventId} path=${sourcePath}`,\n );\n continue;\n }\n const kept = keptById.get(event.eventId);\n if (kept) {\n skipped.push({\n eventId: event.eventId,\n keptPath: kept.path,\n skippedPath: sourcePath,\n });\n log.warn(\n `projection rebuild skipped duplicate timeline event_id=${event.eventId}: `\n + `kept=${kept.path} skipped=${sourcePath}`,\n );\n continue;\n }\n keptById.set(event.eventId, { event, path: sourcePath });\n unique.push(event);\n }\n return { events: unique, skipped, skippedBlankIds };\n}\n\nfunction internPool(): <T extends string>(value: T) => T {\n const pool = new Map<string, string>();\n return <T extends string>(value: T): T => {\n const existing = pool.get(value);\n if (existing !== undefined) return existing as T;\n pool.set(value, value);\n return value;\n };\n}\n\n/** Share repeated ledger scalars so a long ledger does not keep one string per row. */\nfunction internLedgerEvent(event: MemoryLifecycleEvent, intern: <T extends string>(value: T) => T): void {\n event.memoryId = intern(event.memoryId);\n event.eventType = intern(event.eventType);\n event.timestamp = intern(event.timestamp);\n event.actor = intern(event.actor);\n event.ruleVersion = intern(event.ruleVersion);\n if (event.reasonCode) event.reasonCode = intern(event.reasonCode);\n if (event.correlationId) event.correlationId = intern(event.correlationId);\n}\n\n/**\n * Stream ledger events into the deduped timeline. Returns null when the ledger\n * contributed no parsable row, so the caller can fall back to frontmatter.\n */\nasync function consumeLifecycleLedger(\n events: AsyncIterable<MemoryLifecycleEvent>,\n ledgerPath: string,\n signal?: AbortSignal,\n): Promise<ProjectionTimeline | null> {\n const intern = internPool();\n const best = new Map<string, MemoryLifecycleEvent>();\n const losers: MemoryLifecycleEvent[] = [];\n const blanks: MemoryLifecycleEvent[] = [];\n const identities = new Set<string>();\n let sawEvent = false;\n for await (const event of events) {\n throwIfAborted(signal, \"projection rebuild aborted\");\n sawEvent = true;\n internLedgerEvent(event, intern);\n identities.add(memoryLifecycleEventProjectionIdentity(event));\n if (!event.memoryId.trim()) {\n blanks.push(event);\n continue;\n }\n const prev = best.get(event.eventId);\n if (!prev) {\n best.set(event.eventId, event);\n continue;\n }\n if (compareMemoryLifecycleEvents(event, prev) < 0) {\n losers.push(prev);\n best.set(event.eventId, event);\n } else {\n losers.push(event);\n }\n }\n if (!sawEvent) return null;\n const sourceLifecycleLedgerEventCount = identities.size;\n identities.clear();\n const skippedBlankIds = sortMemoryLifecycleEvents(blanks).map((event) => {\n log.warn(\n `projection rebuild skipped timeline event with blank memory id: `\n + `event_id=${event.eventId} path=${ledgerPath}`,\n );\n return { eventId: event.eventId, path: ledgerPath };\n });\n const skipped = sortMemoryLifecycleEvents(losers).map((event) => {\n log.warn(\n `projection rebuild skipped duplicate timeline event_id=${event.eventId}: `\n + `kept=${ledgerPath} skipped=${ledgerPath}`,\n );\n return {\n eventId: event.eventId,\n keptPath: ledgerPath,\n skippedPath: ledgerPath,\n };\n });\n return {\n events: sortMemoryLifecycleEvents([...best.values()]),\n usedLifecycleLedger: true,\n sourceLifecycleLedgerEventCount,\n skipped,\n skippedBlankIds,\n };\n}\n\nexport async function loadProjectionTimeline(options: {\n storage: ProjectionLedgerReader;\n memoryDir: string;\n memories: MemoryFile[];\n signal?: AbortSignal;\n}): Promise<ProjectionTimeline> {\n const ledgerPath = path.join(options.memoryDir, \"state\", \"memory-lifecycle-ledger.jsonl\");\n const streamed = await consumeLifecycleLedger(\n options.storage.iterateMemoryLifecycleEvents(),\n ledgerPath,\n options.signal,\n );\n if (streamed) return streamed;\n\n const timeline = loadTimelineEvents(options.memories, []);\n const memoryPathById = new Map(\n options.memories.map((memory) => [memory.frontmatter.id, memory.path]),\n );\n const deduplicated = deduplicateTimelineEvents(\n timeline.events,\n (event) => memoryPathById.get(event.memoryId) ?? ledgerPath,\n );\n return {\n events: deduplicated.events,\n usedLifecycleLedger: false,\n sourceLifecycleLedgerEventCount: 0,\n skipped: deduplicated.skipped,\n skippedBlankIds: deduplicated.skippedBlankIds,\n };\n}\n","/**\n * Stop a projection-rebuild child when its parent is gone.\n *\n * A non-detached fork is reparented, not killed, when the daemon exits. The\n * IPC channel closes first. The child must observe that and refuse to publish,\n * or it can rename `memory-projection.sqlite.tmp` over a projection the\n * replacement daemon has already started serving.\n */\n\nexport function projectionRebuildParentDisconnected(): Error {\n return new Error(\"projection rebuild runner parent disconnected\");\n}\n\n/** Abort when this process loses its parent IPC channel. */\nexport function watchProjectionRebuildParent(): AbortSignal {\n const abort = new AbortController();\n const stop = () => {\n if (abort.signal.aborted) return;\n abort.abort(projectionRebuildParentDisconnected());\n };\n process.on(\"disconnect\", stop);\n if (process.connected === false) stop();\n return abort.signal;\n}\n\n/**\n * Yield so a disconnect that arrived during the previous await is applied,\n * then refuse to continue. No-op when the caller did not pass a signal.\n */\nexport async function throwIfProjectionRebuildAborted(\n signal: AbortSignal | undefined,\n): Promise<void> {\n if (!signal) return;\n await new Promise<void>((resolve) => {\n setImmediate(resolve);\n });\n if (!signal.aborted) return;\n const reason = signal.reason;\n throw reason instanceof Error ? reason : projectionRebuildParentDisconnected();\n}\n"],"mappings":"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","names":["path","path"]}
@@ -3,7 +3,7 @@ import {
3
3
  headerConnector,
4
4
  renderExtractionConversation,
5
5
  resolveSourceConnector
6
- } from "./chunk-34G4U6HS.js";
6
+ } from "./chunk-QRZMJ2WN.js";
7
7
  import {
8
8
  normalizeReasoningTrace
9
9
  } from "./chunk-54V4BZWP.js";
@@ -2437,4 +2437,4 @@ export {
2437
2437
  shouldEnableLocalExtractionThinking,
2438
2438
  ExtractionEngine
2439
2439
  };
2440
- //# sourceMappingURL=chunk-E7FN5N5E.js.map
2440
+ //# sourceMappingURL=chunk-DQJCQHII.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-JFDKPW54.js";
4
+ } from "./chunk-7OOW72QA.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-CAXMG4JI.js.map
223
+ //# sourceMappingURL=chunk-DYRXRQHV.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  backupAndWriteRebuiltObservations,
3
3
  toHourBucketIso
4
- } from "./chunk-AXFWMRKI.js";
4
+ } from "./chunk-YQJCWR4R.js";
5
5
 
6
6
  // src/maintenance/migrate-observations.ts
7
7
  import path from "path";
@@ -156,4 +156,4 @@ async function migrateObservations(options) {
156
156
  export {
157
157
  migrateObservations
158
158
  };
159
- //# sourceMappingURL=chunk-IIFFC3RL.js.map
159
+ //# sourceMappingURL=chunk-EDR6CVWZ.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-FFAZ2XFU.js";
19
19
  import {
20
20
  resolveSafeStoragePath
21
- } from "./chunk-FF4KLI5W.js";
21
+ } from "./chunk-LDPPTPO5.js";
22
22
  import {
23
23
  readMaybeEncryptedFileFromChunks,
24
24
  writeMaybeEncryptedFileFromChunks
@@ -2509,4 +2509,4 @@ export {
2509
2509
  parseTombstoneBlockedOfflineSyncMemory,
2510
2510
  TombstoneBlockedCaptureIndexHost
2511
2511
  };
2512
- //# sourceMappingURL=chunk-6O2VUWV6.js.map
2512
+ //# sourceMappingURL=chunk-EIFYYHAF.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  drainPendingLifecycleForSyncOrThrow,
6
6
  drainPendingLifecycleLedgerForSync
7
- } from "./chunk-22DYJLFN.js";
7
+ } from "./chunk-XVC7JU2N.js";
8
8
  import {
9
9
  displayErrorDetail
10
10
  } from "./chunk-RL6NEVXT.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-C7HJ3NEI.js";
15
15
  import {
16
16
  writeFileAtomically
17
- } from "./chunk-AW4QUFQF.js";
17
+ } from "./chunk-BTNNL7ZW.js";
18
18
  import {
19
19
  isSafeRouteNamespace
20
20
  } from "./chunk-PCXDUHQH.js";
@@ -181,4 +181,4 @@ export {
181
181
  offlineSyncStorageForSnapshot,
182
182
  drainPendingLifecycleForOfflineSync
183
183
  };
184
- //# sourceMappingURL=chunk-2JRB3Z5N.js.map
184
+ //# sourceMappingURL=chunk-EP5WXE2G.js.map
@@ -0,0 +1,38 @@
1
+ import {
2
+ coerceBooleanLike,
3
+ coerceNumber
4
+ } from "./chunk-PQVCH2AE.js";
5
+
6
+ // src/projection-rebuild-config.ts
7
+ var DEFAULT_PROJECTION_REBUILD_HEAP_USAGE_LIMIT = 0.6;
8
+ function parseProjectionRebuildHeapUsageLimit(value) {
9
+ if (value === void 0 || value === null) return DEFAULT_PROJECTION_REBUILD_HEAP_USAGE_LIMIT;
10
+ const coerced = coerceNumber(value);
11
+ if (coerced === void 0 || !Number.isFinite(coerced) || coerced <= 0 || coerced > 1) {
12
+ throw new Error(
13
+ `projectionRebuildHeapUsageLimit must be a finite number in (0, 1]; got ${JSON.stringify(value)}`
14
+ );
15
+ }
16
+ return coerced;
17
+ }
18
+ function parseProjectionRebuildScheduleConfig(cfg, parseIntegerAtLeast) {
19
+ return {
20
+ projectionRebuildEnabled: coerceBooleanLike(cfg.projectionRebuildEnabled) ?? true,
21
+ projectionRebuildIntervalMs: parseIntegerAtLeast(
22
+ cfg.projectionRebuildIntervalMs,
23
+ 6 * 60 * 60 * 1e3,
24
+ 6e4,
25
+ "projectionRebuildIntervalMs"
26
+ ),
27
+ projectionRebuildHeapUsageLimit: parseProjectionRebuildHeapUsageLimit(
28
+ cfg.projectionRebuildHeapUsageLimit
29
+ )
30
+ };
31
+ }
32
+
33
+ export {
34
+ DEFAULT_PROJECTION_REBUILD_HEAP_USAGE_LIMIT,
35
+ parseProjectionRebuildHeapUsageLimit,
36
+ parseProjectionRebuildScheduleConfig
37
+ };
38
+ //# sourceMappingURL=chunk-EWMRFW3F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/projection-rebuild-config.ts"],"sourcesContent":["/**\n * Scheduled projection-rebuild knobs (issue #2119, heap guard).\n *\n * Extracted from `config.ts` / `types.ts` so those god-file ceilings do not\n * grow. `PluginConfig` extends the interface and `parseConfig` spreads\n * {@link parseProjectionRebuildScheduleConfig}.\n */\n\nimport { coerceBooleanLike, coerceNumber } from \"./connectors/coerce.js\";\n\n/** Knobs for the maintenance-scheduled memory-projection rebuild. */\nexport interface ProjectionRebuildScheduleConfig {\n /**\n * Enable the maintenance-scheduled rebuild of `state/memory-projection.sqlite`.\n * The projection is otherwise rebuild-only (manual CLI / tests), so it rots as\n * the lifecycle ledger grows and timeline/browse consumers silently regress to\n * full-corpus fallback scans. Default true — mirrors lifecycle-ledger\n * auto-compaction, which is likewise enabled-by-default to keep a state file\n * healthy. Set false to disable (operators can still cron the CLI rebuild).\n */\n projectionRebuildEnabled: boolean;\n /**\n * Minimum interval between scheduled projection rebuilds. A rebuild is skipped\n * when the projection's `rebuiltAt` meta is younger than this, so a burst of\n * maintenance requests cannot fan into back-to-back rebuilds. Floored at 60s.\n * Default 6h (matches memoryLifecycleLedgerCompactMinIntervalMs).\n */\n projectionRebuildIntervalMs: number;\n /**\n * Postpone a scheduled full-corpus projection rebuild when\n * `v8.getHeapStatistics().used_heap_size / heap_size_limit` exceeds this\n * ratio. Finite number in `(0, 1]`. Default `0.6`. `1` disables the guard\n * (usage cannot exceed the limit). A postponed rebuild uses the failure\n * backoff and does not start the multi-GB allocation.\n */\n projectionRebuildHeapUsageLimit: number;\n}\n\n/** Integer coercion contract shared with `config.ts` (`parseIntegerAtLeast`). */\ntype IntegerParser = (value: unknown, fallback: number, min: number, keyName: string) => number;\n\n/** Default heap-usage ratio above which a scheduled full-corpus rebuild waits. */\nexport const DEFAULT_PROJECTION_REBUILD_HEAP_USAGE_LIMIT = 0.6;\n\n/**\n * Parse `projectionRebuildHeapUsageLimit`. Absent values take the default.\n * A present value must be a finite number in `(0, 1]` (numeric strings\n * coerced). `0` is rejected: it would postpone every rebuild.\n */\nexport function parseProjectionRebuildHeapUsageLimit(value: unknown): number {\n if (value === undefined || value === null) return DEFAULT_PROJECTION_REBUILD_HEAP_USAGE_LIMIT;\n const coerced = coerceNumber(value);\n if (coerced === undefined || !Number.isFinite(coerced) || coerced <= 0 || coerced > 1) {\n throw new Error(\n `projectionRebuildHeapUsageLimit must be a finite number in (0, 1]; got ${JSON.stringify(value)}`,\n );\n }\n return coerced;\n}\n\n/**\n * Parse the scheduled projection-rebuild knobs. Boolean coercion follows\n * gotcha #36 (`\"false\"` is false). The interval uses the shared integer\n * parser (strings coerced, non-integers and sub-60s values rejected).\n */\nexport function parseProjectionRebuildScheduleConfig(\n cfg: Record<string, unknown>,\n parseIntegerAtLeast: IntegerParser,\n): ProjectionRebuildScheduleConfig {\n return {\n projectionRebuildEnabled: coerceBooleanLike(cfg.projectionRebuildEnabled) ?? true,\n projectionRebuildIntervalMs: parseIntegerAtLeast(\n cfg.projectionRebuildIntervalMs,\n 6 * 60 * 60 * 1000,\n 60_000,\n \"projectionRebuildIntervalMs\",\n ),\n projectionRebuildHeapUsageLimit: parseProjectionRebuildHeapUsageLimit(\n cfg.projectionRebuildHeapUsageLimit,\n ),\n };\n}\n"],"mappings":";;;;;;AA0CO,IAAM,8CAA8C;AAOpD,SAAS,qCAAqC,OAAwB;AAC3E,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,QAAM,UAAU,aAAa,KAAK;AAClC,MAAI,YAAY,UAAa,CAAC,OAAO,SAAS,OAAO,KAAK,WAAW,KAAK,UAAU,GAAG;AACrF,UAAM,IAAI;AAAA,MACR,0EAA0E,KAAK,UAAU,KAAK,CAAC;AAAA,IACjG;AAAA,EACF;AACA,SAAO;AACT;AAOO,SAAS,qCACd,KACA,qBACiC;AACjC,SAAO;AAAA,IACL,0BAA0B,kBAAkB,IAAI,wBAAwB,KAAK;AAAA,IAC7E,6BAA6B;AAAA,MAC3B,IAAI;AAAA,MACJ,IAAI,KAAK,KAAK;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAAA,IACA,iCAAiC;AAAA,MAC/B,IAAI;AAAA,IACN;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,80 @@
1
+ import {
2
+ rebuildMemoryProjection,
3
+ watchProjectionRebuildParent
4
+ } from "./chunk-DBA2W6VV.js";
5
+ import {
6
+ initLogger,
7
+ log
8
+ } from "./chunk-3WCASNQZ.js";
9
+
10
+ // src/maintenance/rebuild-memory-projection-runner.ts
11
+ var PROJECTION_REBUILD_RUNNER_FLAG = "--remnic-projection-rebuild-runner";
12
+ function runnerArgs() {
13
+ const index = process.argv.indexOf(PROJECTION_REBUILD_RUNNER_FLAG);
14
+ const memoryDir = index >= 0 ? process.argv[index + 1] : void 0;
15
+ const defaultNamespace = index >= 0 ? process.argv[index + 2] : void 0;
16
+ const nowIso = index >= 0 ? process.argv[index + 3] : void 0;
17
+ if (!memoryDir || !defaultNamespace || !nowIso) {
18
+ throw new Error(
19
+ "projection rebuild runner requires memoryDir, defaultNamespace, and now"
20
+ );
21
+ }
22
+ const now = new Date(nowIso);
23
+ if (Number.isNaN(now.getTime())) {
24
+ throw new Error(`projection rebuild runner now is not a timestamp: ${nowIso}`);
25
+ }
26
+ return { memoryDir, defaultNamespace, now };
27
+ }
28
+ function send(message) {
29
+ if (typeof process.send !== "function") {
30
+ throw new Error("projection rebuild runner requires an IPC channel");
31
+ }
32
+ const sendMessage = process.send.bind(process);
33
+ return new Promise((resolve, reject) => {
34
+ sendMessage(message, (err) => err ? reject(err) : resolve());
35
+ });
36
+ }
37
+ async function main() {
38
+ initLogger();
39
+ const { memoryDir, defaultNamespace, now } = runnerArgs();
40
+ const signal = watchProjectionRebuildParent();
41
+ const result = await rebuildMemoryProjection({
42
+ memoryDir,
43
+ defaultNamespace,
44
+ dryRun: false,
45
+ now,
46
+ signal
47
+ });
48
+ if (signal.aborted || process.connected === false) {
49
+ throw new Error("projection rebuild runner parent disconnected");
50
+ }
51
+ await send({
52
+ ok: true,
53
+ currentRows: result.currentRows,
54
+ timelineRows: result.timelineRows,
55
+ entityMentionRows: result.entityMentionRows
56
+ });
57
+ }
58
+ var invokedAsRunner = process.argv.includes(PROJECTION_REBUILD_RUNNER_FLAG);
59
+ if (invokedAsRunner) {
60
+ main().then(
61
+ () => process.exit(0),
62
+ (err) => {
63
+ const error = err instanceof Error ? err.message : String(err);
64
+ if (process.connected === false) {
65
+ process.exit(1);
66
+ return;
67
+ }
68
+ log.warn(`projection rebuild runner failed: ${error}`);
69
+ send({ ok: false, error }).then(
70
+ () => process.exit(1),
71
+ () => process.exit(1)
72
+ );
73
+ }
74
+ );
75
+ }
76
+
77
+ export {
78
+ PROJECTION_REBUILD_RUNNER_FLAG
79
+ };
80
+ //# sourceMappingURL=chunk-FMIVV5SV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/maintenance/rebuild-memory-projection-runner.ts"],"sourcesContent":["/**\n * Child-process entry for the scheduled memory-projection rebuild.\n *\n * The daemon forks this file so the corpus and lifecycle ledger are allocated\n * in a fresh heap. Invoke only with `--remnic-projection-rebuild-runner`.\n * Arguments are the memory directory, default namespace, and an ISO timestamp.\n * Do not put secrets, passphrases, or secure-store unlock material on argv\n * or in the environment — an encrypted store rebuilds in the parent instead.\n */\nimport { initLogger, log } from \"../logger.js\";\nimport { watchProjectionRebuildParent } from \"./projection-rebuild-abort.js\";\nimport { rebuildMemoryProjection } from \"./rebuild-memory-projection.js\";\n\nexport const PROJECTION_REBUILD_RUNNER_FLAG = \"--remnic-projection-rebuild-runner\";\n\nexport interface ProjectionRebuildRunnerSuccess {\n ok: true;\n currentRows: number;\n timelineRows: number;\n entityMentionRows: number;\n}\n\ninterface ProjectionRebuildRunnerFailure {\n ok: false;\n error: string;\n}\n\nfunction runnerArgs(): { memoryDir: string; defaultNamespace: string; now: Date } {\n const index = process.argv.indexOf(PROJECTION_REBUILD_RUNNER_FLAG);\n const memoryDir = index >= 0 ? process.argv[index + 1] : undefined;\n const defaultNamespace = index >= 0 ? process.argv[index + 2] : undefined;\n const nowIso = index >= 0 ? process.argv[index + 3] : undefined;\n if (!memoryDir || !defaultNamespace || !nowIso) {\n throw new Error(\n \"projection rebuild runner requires memoryDir, defaultNamespace, and now\",\n );\n }\n const now = new Date(nowIso);\n if (Number.isNaN(now.getTime())) {\n throw new Error(`projection rebuild runner now is not a timestamp: ${nowIso}`);\n }\n return { memoryDir, defaultNamespace, now };\n}\n\nfunction send(message: ProjectionRebuildRunnerSuccess | ProjectionRebuildRunnerFailure): Promise<void> {\n if (typeof process.send !== \"function\") {\n throw new Error(\"projection rebuild runner requires an IPC channel\");\n }\n const sendMessage = process.send.bind(process);\n return new Promise((resolve, reject) => {\n sendMessage(message, (err) => (err ? reject(err) : resolve()));\n });\n}\n\nasync function main(): Promise<void> {\n initLogger();\n const { memoryDir, defaultNamespace, now } = runnerArgs();\n const signal = watchProjectionRebuildParent();\n const result = await rebuildMemoryProjection({\n memoryDir,\n defaultNamespace,\n dryRun: false,\n now,\n signal,\n });\n if (signal.aborted || process.connected === false) {\n throw new Error(\"projection rebuild runner parent disconnected\");\n }\n await send({\n ok: true,\n currentRows: result.currentRows,\n timelineRows: result.timelineRows,\n entityMentionRows: result.entityMentionRows,\n });\n}\n\nconst invokedAsRunner = process.argv.includes(PROJECTION_REBUILD_RUNNER_FLAG);\nif (invokedAsRunner) {\n main().then(\n () => process.exit(0),\n (err: unknown) => {\n const error = err instanceof Error ? err.message : String(err);\n if (process.connected === false) {\n process.exit(1);\n return;\n }\n log.warn(`projection rebuild runner failed: ${error}`);\n send({ ok: false, error }).then(\n () => process.exit(1),\n () => process.exit(1),\n );\n },\n );\n}\n"],"mappings":";;;;;;;;;;AAaO,IAAM,iCAAiC;AAc9C,SAAS,aAAyE;AAChF,QAAM,QAAQ,QAAQ,KAAK,QAAQ,8BAA8B;AACjE,QAAM,YAAY,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI;AACzD,QAAM,mBAAmB,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI;AAChE,QAAM,SAAS,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI;AACtD,MAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,IAAI,KAAK,MAAM;AAC3B,MAAI,OAAO,MAAM,IAAI,QAAQ,CAAC,GAAG;AAC/B,UAAM,IAAI,MAAM,qDAAqD,MAAM,EAAE;AAAA,EAC/E;AACA,SAAO,EAAE,WAAW,kBAAkB,IAAI;AAC5C;AAEA,SAAS,KAAK,SAAyF;AACrG,MAAI,OAAO,QAAQ,SAAS,YAAY;AACtC,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,QAAM,cAAc,QAAQ,KAAK,KAAK,OAAO;AAC7C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,gBAAY,SAAS,CAAC,QAAS,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAE;AAAA,EAC/D,CAAC;AACH;AAEA,eAAe,OAAsB;AACnC,aAAW;AACX,QAAM,EAAE,WAAW,kBAAkB,IAAI,IAAI,WAAW;AACxD,QAAM,SAAS,6BAA6B;AAC5C,QAAM,SAAS,MAAM,wBAAwB;AAAA,IAC3C;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,OAAO,WAAW,QAAQ,cAAc,OAAO;AACjD,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AACA,QAAM,KAAK;AAAA,IACT,IAAI;AAAA,IACJ,aAAa,OAAO;AAAA,IACpB,cAAc,OAAO;AAAA,IACrB,mBAAmB,OAAO;AAAA,EAC5B,CAAC;AACH;AAEA,IAAM,kBAAkB,QAAQ,KAAK,SAAS,8BAA8B;AAC5E,IAAI,iBAAiB;AACnB,OAAK,EAAE;AAAA,IACL,MAAM,QAAQ,KAAK,CAAC;AAAA,IACpB,CAAC,QAAiB;AAChB,YAAM,QAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC7D,UAAI,QAAQ,cAAc,OAAO;AAC/B,gBAAQ,KAAK,CAAC;AACd;AAAA,MACF;AACA,UAAI,KAAK,qCAAqC,KAAK,EAAE;AACrD,WAAK,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE;AAAA,QACzB,MAAM,QAAQ,KAAK,CAAC;AAAA,QACpB,MAAM,QAAQ,KAAK,CAAC;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -3,14 +3,14 @@ import {
3
3
  isArtifactMemoryPath,
4
4
  isLocationDayPath,
5
5
  isMeetingRecordPath
6
- } from "./chunk-PCO3P7WJ.js";
6
+ } from "./chunk-OGVJXIHX.js";
7
7
  import {
8
8
  isExternalWikiCollectionName
9
9
  } from "./chunk-JV3C2MNQ.js";
10
10
  import {
11
11
  DIRECTORY_SIDECAR_BASENAME,
12
12
  OKF_RESERVED_BASENAMES
13
- } from "./chunk-345MEMRU.js";
13
+ } from "./chunk-3OUGSOJP.js";
14
14
  import {
15
15
  isValidActivityDate
16
16
  } from "./chunk-353C5UNV.js";
@@ -211,4 +211,4 @@ export {
211
211
  isGenericRecallExcludedPath,
212
212
  filterRecallCandidates
213
213
  };
214
- //# sourceMappingURL=chunk-2EZB2DL5.js.map
214
+ //# sourceMappingURL=chunk-GE6HETIF.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-JFDKPW54.js";
4
+ } from "./chunk-7OOW72QA.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-YVHNBOK2.js.map
502
+ //# sourceMappingURL=chunk-GLS3A4SQ.js.map
@@ -21,13 +21,13 @@ import {
21
21
  defineOperation,
22
22
  parseNamespacePreflightWriteOp,
23
23
  resolveAuthorizedNamespaceWritablePreflight
24
- } from "./chunk-JFDKPW54.js";
24
+ } from "./chunk-7OOW72QA.js";
25
25
  import {
26
26
  parseSharedWriteOutputControls
27
27
  } from "./chunk-IFBSZGW3.js";
28
28
  import {
29
29
  validateBriefingFormat
30
- } from "./chunk-U4SG4HKQ.js";
30
+ } from "./chunk-LIGP5M2C.js";
31
31
  import {
32
32
  parseDeepRecallMaxSteps
33
33
  } from "./chunk-A7AISUJI.js";
@@ -603,4 +603,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
603
603
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
604
604
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
605
605
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
606
- //# sourceMappingURL=chunk-7IGNDEUJ.js.map
606
+ //# sourceMappingURL=chunk-H2XCCUOT.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TBBDFYXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-LHOIYLKH.js";
6
+ } from "./chunk-ABET5LA5.js";
7
7
  import {
8
8
  bumpMemoryCorpusVersionForDir
9
9
  } from "./chunk-M5GVCJSJ.js";
@@ -765,4 +765,4 @@ export {
765
765
  listMemoryGovernanceRuns,
766
766
  readMemoryGovernanceRunArtifact
767
767
  };
768
- //# sourceMappingURL=chunk-A5N6ZEUW.js.map
768
+ //# sourceMappingURL=chunk-H6FA36LC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getOperation
3
- } from "./chunk-JFDKPW54.js";
3
+ } from "./chunk-7OOW72QA.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -21,4 +21,4 @@ async function respondBriefingHttp(options) {
21
21
  export {
22
22
  respondBriefingHttp
23
23
  };
24
- //# sourceMappingURL=chunk-WPMDNCGB.js.map
24
+ //# sourceMappingURL=chunk-HSZBALHV.js.map
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-H3FZVNRN.js";
14
14
  import {
15
15
  ExtractionDeadlineError
16
- } from "./chunk-NLYOOGZ7.js";
16
+ } from "./chunk-KE5PWLI6.js";
17
17
  import {
18
18
  resolvePrincipal
19
19
  } from "./chunk-OEIA4IHU.js";
@@ -801,4 +801,4 @@ var SmartBuffer = class {
801
801
  export {
802
802
  SmartBuffer
803
803
  };
804
- //# sourceMappingURL=chunk-XG4XXI66.js.map
804
+ //# sourceMappingURL=chunk-I25RQA65.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runLocationSync
3
- } from "./chunk-SQPC6MUM.js";
3
+ } from "./chunk-IRYKRBEX.js";
4
4
  import {
5
5
  log
6
6
  } from "./chunk-3WCASNQZ.js";
@@ -58,4 +58,4 @@ export {
58
58
  LOCATION_SYNC_DEFAULT_INTERVAL_MS,
59
59
  startLocationAutoSync
60
60
  };
61
- //# sourceMappingURL=chunk-NBK24POV.js.map
61
+ //# sourceMappingURL=chunk-IHIP7TJ3.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  computeCorpusWatermarks,
6
6
  resolveCorpusNamespaceRoots
7
- } from "./chunk-M2OPC4BD.js";
7
+ } from "./chunk-4NFRYOHT.js";
8
8
 
9
9
  // src/operator-doctor-corpus.ts
10
10
  var DIGEST_PREFIX_LENGTH = 12;
@@ -78,4 +78,4 @@ export {
78
78
  corpusWatermarksFromCheck,
79
79
  summarizeCorpusAndReplica
80
80
  };
81
- //# sourceMappingURL=chunk-DAVONFNK.js.map
81
+ //# sourceMappingURL=chunk-IINXHPCV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isGenericRecallExcludedPath
3
- } from "./chunk-2EZB2DL5.js";
3
+ } from "./chunk-GE6HETIF.js";
4
4
  import {
5
5
  normalizeProjectionPreview
6
6
  } from "./chunk-SCU65EZI.js";
@@ -209,4 +209,4 @@ export {
209
209
  browsePatternMatches,
210
210
  runMemoryBrowse
211
211
  };
212
- //# sourceMappingURL=chunk-EJJMDLVB.js.map
212
+ //# sourceMappingURL=chunk-IJ4FEGZR.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot
3
- } from "./chunk-CVQWNACA.js";
3
+ } from "./chunk-3QAIX7TV.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-LHOIYLKH.js";
6
+ } from "./chunk-ABET5LA5.js";
7
7
  import {
8
8
  composeLocationDayBody,
9
9
  composeLocationDayMeta,
@@ -23,7 +23,7 @@ import {
23
23
  serializeLocationDay,
24
24
  updateLocationSourceDay,
25
25
  writeLocationDay
26
- } from "./chunk-MY7B3HYC.js";
26
+ } from "./chunk-CLCMDKTB.js";
27
27
  import {
28
28
  resolveNamespaceCapabilities
29
29
  } from "./chunk-2EMROIXS.js";
@@ -728,4 +728,4 @@ export {
728
728
  runLocationBackfill,
729
729
  runLocationCliCommand
730
730
  };
731
- //# sourceMappingURL=chunk-SQPC6MUM.js.map
731
+ //# sourceMappingURL=chunk-IRYKRBEX.js.map
@@ -34,7 +34,7 @@ import {
34
34
  } from "./chunk-NVKO5YKP.js";
35
35
  import {
36
36
  compareEntityTimestamps
37
- } from "./chunk-LHOIYLKH.js";
37
+ } from "./chunk-ABET5LA5.js";
38
38
  import {
39
39
  normalizeEntityText,
40
40
  resolveRequestedEntitySectionKeys
@@ -927,4 +927,4 @@ export {
927
927
  entityIndexVersion,
928
928
  entityRecentTranscriptLookbackHours
929
929
  };
930
- //# sourceMappingURL=chunk-JOBE47EJ.js.map
930
+ //# sourceMappingURL=chunk-IVGJXS5F.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineOperation
3
- } from "./chunk-JFDKPW54.js";
3
+ } from "./chunk-7OOW72QA.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -71,4 +71,4 @@ defineOperation({
71
71
  })
72
72
  })
73
73
  });
74
- //# sourceMappingURL=chunk-36BUOTVN.js.map
74
+ //# sourceMappingURL=chunk-IXF7TRMQ.js.map