@remnic/core 1.1.2 → 1.1.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 (489) hide show
  1. package/dist/abort-error.js +1 -0
  2. package/dist/abstraction-nodes.js +1 -0
  3. package/dist/access-audit.js +1 -0
  4. package/dist/access-cli.js +72 -47
  5. package/dist/access-cli.js.map +1 -1
  6. package/dist/access-http.d.ts +50 -5
  7. package/dist/access-http.js +39 -16
  8. package/dist/access-idempotency.js +1 -0
  9. package/dist/access-mcp.d.ts +10 -5
  10. package/dist/access-mcp.js +38 -14
  11. package/dist/access-schema.d.ts +133 -13
  12. package/dist/access-schema.js +20 -1
  13. package/dist/access-service-CtXFnprR.d.ts +2033 -0
  14. package/dist/access-service.d.ts +11 -6
  15. package/dist/access-service.js +40 -15
  16. package/dist/active-memory-bridge.js +1 -0
  17. package/dist/active-recall.js +1 -0
  18. package/dist/active-recall.js.map +1 -1
  19. package/dist/behavior-learner.js +1 -0
  20. package/dist/behavior-learner.js.map +1 -1
  21. package/dist/behavior-signals.js +1 -0
  22. package/dist/bootstrap.d.ts +6 -4
  23. package/dist/bootstrap.js +1 -0
  24. package/dist/boxes.js +1 -0
  25. package/dist/briefing.d.ts +9 -5
  26. package/dist/briefing.js +10 -7
  27. package/dist/buffer-surprise-report.js +1 -0
  28. package/dist/buffer-surprise.js +1 -0
  29. package/dist/buffer.d.ts +1 -1
  30. package/dist/buffer.js +1 -0
  31. package/dist/calibration.d.ts +8 -1
  32. package/dist/calibration.js +10 -2
  33. package/dist/calibration.js.map +1 -1
  34. package/dist/capsule-cli.d.ts +137 -0
  35. package/dist/capsule-cli.js +34 -0
  36. package/dist/capsule-crypto-5CYAGVC5.js +18 -0
  37. package/dist/capsule-export-NZQPOTQ4.js +17 -0
  38. package/dist/capsule-export-NZQPOTQ4.js.map +1 -0
  39. package/dist/capsule-import-SDCUXLEV.js +16 -0
  40. package/dist/capsule-import-SDCUXLEV.js.map +1 -0
  41. package/dist/capsule-merge-DI7PNQ2H.js +189 -0
  42. package/dist/capsule-merge-DI7PNQ2H.js.map +1 -0
  43. package/dist/causal-behavior.js +1 -0
  44. package/dist/causal-behavior.js.map +1 -1
  45. package/dist/causal-chain.js +1 -0
  46. package/dist/causal-consolidation.js +12 -9
  47. package/dist/causal-consolidation.js.map +1 -1
  48. package/dist/causal-retrieval.js +2 -1
  49. package/dist/causal-retrieval.js.map +1 -1
  50. package/dist/causal-trajectory-graph.js +4 -1
  51. package/dist/causal-trajectory-graph.js.map +1 -1
  52. package/dist/causal-trajectory.js +2 -1
  53. package/dist/chunk-2LSZVONP.js +67 -0
  54. package/dist/chunk-2LSZVONP.js.map +1 -0
  55. package/dist/chunk-32KD5IHZ.js +245 -0
  56. package/dist/chunk-32KD5IHZ.js.map +1 -0
  57. package/dist/chunk-3KIS4VGT.js +228 -0
  58. package/dist/chunk-3KIS4VGT.js.map +1 -0
  59. package/dist/chunk-3LCWFNVS.js +350 -0
  60. package/dist/chunk-3LCWFNVS.js.map +1 -0
  61. package/dist/chunk-43EKP2UK.js +26 -0
  62. package/dist/chunk-43EKP2UK.js.map +1 -0
  63. package/dist/chunk-457A4P3L.js +119 -0
  64. package/dist/chunk-457A4P3L.js.map +1 -0
  65. package/dist/{chunk-TMYO7B5P.js → chunk-47WOM4YW.js} +2 -2
  66. package/dist/{chunk-FVA6TGI3.js → chunk-52PDY6GD.js} +42 -2
  67. package/dist/chunk-52PDY6GD.js.map +1 -0
  68. package/dist/{chunk-ULYOGL6R.js → chunk-5HRY2WRF.js} +7 -3
  69. package/dist/chunk-5HRY2WRF.js.map +1 -0
  70. package/dist/{chunk-BOUYNNYD.js → chunk-67YLUWLG.js} +32 -13
  71. package/dist/{chunk-BOUYNNYD.js.map → chunk-67YLUWLG.js.map} +1 -1
  72. package/dist/chunk-6TBWYBJ3.js +236 -0
  73. package/dist/chunk-6TBWYBJ3.js.map +1 -0
  74. package/dist/chunk-74EMIVE4.js +329 -0
  75. package/dist/chunk-74EMIVE4.js.map +1 -0
  76. package/dist/chunk-74WWN7ZW.js +82 -0
  77. package/dist/chunk-74WWN7ZW.js.map +1 -0
  78. package/dist/chunk-A6XUJE5D.js +126 -0
  79. package/dist/chunk-A6XUJE5D.js.map +1 -0
  80. package/dist/{chunk-STGWEHYR.js → chunk-AEMBDV7M.js} +1187 -62
  81. package/dist/chunk-AEMBDV7M.js.map +1 -0
  82. package/dist/{chunk-PVICZTKG.js → chunk-AGZHRWPT.js} +5 -5
  83. package/dist/{chunk-PVICZTKG.js.map → chunk-AGZHRWPT.js.map} +1 -1
  84. package/dist/chunk-AJA46VX5.js +393 -0
  85. package/dist/chunk-AJA46VX5.js.map +1 -0
  86. package/dist/chunk-ASIQZXYO.js +277 -0
  87. package/dist/chunk-ASIQZXYO.js.map +1 -0
  88. package/dist/{chunk-DG6YMRDC.js → chunk-B2TL6GA2.js} +2 -2
  89. package/dist/chunk-BJMBJZ2Y.js +290 -0
  90. package/dist/chunk-BJMBJZ2Y.js.map +1 -0
  91. package/dist/chunk-BT7NVCML.js +79 -0
  92. package/dist/chunk-BT7NVCML.js.map +1 -0
  93. package/dist/chunk-CK5NTM2S.js +454 -0
  94. package/dist/chunk-CK5NTM2S.js.map +1 -0
  95. package/dist/{chunk-AYXIPSZO.js → chunk-CRU27Q4J.js} +2 -2
  96. package/dist/{chunk-UWB5LMWY.js → chunk-CUI2STX6.js} +526 -24
  97. package/dist/chunk-CUI2STX6.js.map +1 -0
  98. package/dist/{chunk-CUPFXL3J.js → chunk-EGEPUGN4.js} +4 -4
  99. package/dist/chunk-EGEPUGN4.js.map +1 -0
  100. package/dist/{chunk-3OGMS3PE.js → chunk-F5VQOQ2E.js} +3 -2
  101. package/dist/chunk-F5VQOQ2E.js.map +1 -0
  102. package/dist/chunk-FP2373TW.js +149 -0
  103. package/dist/chunk-FP2373TW.js.map +1 -0
  104. package/dist/{chunk-RBBWYEFJ.js → chunk-G2WADRQ3.js} +1 -1
  105. package/dist/chunk-G7D6GZ5J.js +48 -0
  106. package/dist/chunk-G7D6GZ5J.js.map +1 -0
  107. package/dist/chunk-H7XKCNR6.js +60 -0
  108. package/dist/chunk-H7XKCNR6.js.map +1 -0
  109. package/dist/{chunk-LOIMBRDE.js → chunk-HIRKCQGF.js} +1994 -412
  110. package/dist/chunk-HIRKCQGF.js.map +1 -0
  111. package/dist/chunk-IXEJRKCZ.js +18 -0
  112. package/dist/chunk-IXEJRKCZ.js.map +1 -0
  113. package/dist/chunk-IYY4MCPG.js +275 -0
  114. package/dist/chunk-IYY4MCPG.js.map +1 -0
  115. package/dist/{chunk-BECYBZLX.js → chunk-JWSENLQI.js} +502 -22
  116. package/dist/chunk-JWSENLQI.js.map +1 -0
  117. package/dist/chunk-KNKUID7G.js +183 -0
  118. package/dist/chunk-KNKUID7G.js.map +1 -0
  119. package/dist/chunk-L2IO2QPY.js +2036 -0
  120. package/dist/chunk-L2IO2QPY.js.map +1 -0
  121. package/dist/{chunk-ZAIM4TUE.js → chunk-LW2NMHDW.js} +46 -1
  122. package/dist/chunk-LW2NMHDW.js.map +1 -0
  123. package/dist/chunk-MDYG7VI7.js +48 -0
  124. package/dist/chunk-MDYG7VI7.js.map +1 -0
  125. package/dist/{chunk-VDX363PS.js → chunk-MUELDH4F.js} +10 -3
  126. package/dist/chunk-MUELDH4F.js.map +1 -0
  127. package/dist/chunk-MXC3AP5I.js +74 -0
  128. package/dist/chunk-MXC3AP5I.js.map +1 -0
  129. package/dist/chunk-NN3TS5BM.js +147 -0
  130. package/dist/chunk-NN3TS5BM.js.map +1 -0
  131. package/dist/{chunk-3YGHKTBF.js → chunk-NZS2BLTP.js} +963 -326
  132. package/dist/chunk-NZS2BLTP.js.map +1 -0
  133. package/dist/chunk-OA3L7BFR.js +183 -0
  134. package/dist/chunk-OA3L7BFR.js.map +1 -0
  135. package/dist/chunk-OZHRDTDX.js +240 -0
  136. package/dist/chunk-OZHRDTDX.js.map +1 -0
  137. package/dist/chunk-PCUKNJAZ.js +165 -0
  138. package/dist/chunk-PCUKNJAZ.js.map +1 -0
  139. package/dist/{chunk-6PFRXT4K.js → chunk-PFV5C235.js} +11 -6
  140. package/dist/chunk-PFV5C235.js.map +1 -0
  141. package/dist/chunk-PZ5AY32C.js +10 -0
  142. package/dist/chunk-PZ5AY32C.js.map +1 -0
  143. package/dist/{chunk-Y7R2XJ5Q.js → chunk-Q7FJ5ZHM.js} +6 -2
  144. package/dist/chunk-Q7FJ5ZHM.js.map +1 -0
  145. package/dist/{chunk-WCLICCGB.js → chunk-RILIVK4O.js} +91 -4
  146. package/dist/chunk-RILIVK4O.js.map +1 -0
  147. package/dist/{chunk-C2EFFULQ.js → chunk-RK2Y4XOM.js} +163 -20
  148. package/dist/chunk-RK2Y4XOM.js.map +1 -0
  149. package/dist/{chunk-TP4FZJIZ.js → chunk-RULE4VG5.js} +5 -1
  150. package/dist/chunk-RULE4VG5.js.map +1 -0
  151. package/dist/{chunk-PVPWZSSI.js → chunk-SMA4IMHV.js} +19 -3
  152. package/dist/chunk-SMA4IMHV.js.map +1 -0
  153. package/dist/{chunk-6YJHX2DL.js → chunk-TIFRGAKO.js} +242 -22
  154. package/dist/chunk-TIFRGAKO.js.map +1 -0
  155. package/dist/chunk-TUFG6VXY.js +875 -0
  156. package/dist/chunk-TUFG6VXY.js.map +1 -0
  157. package/dist/chunk-TYEOAFH3.js +251 -0
  158. package/dist/chunk-TYEOAFH3.js.map +1 -0
  159. package/dist/chunk-UKJAGEXH.js +260 -0
  160. package/dist/chunk-UKJAGEXH.js.map +1 -0
  161. package/dist/{chunk-KVBLZUKV.js → chunk-USFPPRAF.js} +93 -3
  162. package/dist/chunk-USFPPRAF.js.map +1 -0
  163. package/dist/{chunk-NBVAS5MT.js → chunk-V7TEH5I2.js} +6 -6
  164. package/dist/{chunk-GA5P7RST.js → chunk-VTJVUHRK.js} +22 -36
  165. package/dist/chunk-VTJVUHRK.js.map +1 -0
  166. package/dist/{chunk-SPI27QT6.js → chunk-W7WWT4FJ.js} +9 -4
  167. package/dist/chunk-W7WWT4FJ.js.map +1 -0
  168. package/dist/chunk-WIICJPET.js +45 -0
  169. package/dist/chunk-WIICJPET.js.map +1 -0
  170. package/dist/{chunk-VBVG2M5G.js → chunk-WPGJYVUH.js} +6 -2
  171. package/dist/chunk-WPGJYVUH.js.map +1 -0
  172. package/dist/{chunk-4HQS2HPX.js → chunk-WSZIHQBK.js} +29 -9
  173. package/dist/{chunk-4HQS2HPX.js.map → chunk-WSZIHQBK.js.map} +1 -1
  174. package/dist/{chunk-NZLQTHS5.js → chunk-WW3QQF4H.js} +4 -1
  175. package/dist/chunk-WW3QQF4H.js.map +1 -0
  176. package/dist/{chunk-DIXB44VE.js → chunk-X6VBWOVZ.js} +28 -13
  177. package/dist/chunk-X6VBWOVZ.js.map +1 -0
  178. package/dist/{chunk-XXVWLXSG.js → chunk-XQ4EJLUD.js} +64 -92
  179. package/dist/chunk-XQ4EJLUD.js.map +1 -0
  180. package/dist/{chunk-OC5OXUQ4.js → chunk-XRCYKJ3V.js} +780 -17
  181. package/dist/chunk-XRCYKJ3V.js.map +1 -0
  182. package/dist/{chunk-F5VP6YCB.js → chunk-Y4A6M3B6.js} +573 -156
  183. package/dist/chunk-Y4A6M3B6.js.map +1 -0
  184. package/dist/chunk-YNJHCGDT.js +309 -0
  185. package/dist/chunk-YNJHCGDT.js.map +1 -0
  186. package/dist/{chunk-L7IXWRYE.js → chunk-ZIBOQULP.js} +22 -13
  187. package/dist/chunk-ZIBOQULP.js.map +1 -0
  188. package/dist/{chunk-W6SL7OFG.js → chunk-ZTSE2ZJ6.js} +12 -2
  189. package/dist/{chunk-W6SL7OFG.js.map → chunk-ZTSE2ZJ6.js.map} +1 -1
  190. package/dist/chunking.js +1 -0
  191. package/dist/cipher-GVE2GQ5H.js +28 -0
  192. package/dist/cipher-GVE2GQ5H.js.map +1 -0
  193. package/dist/citations.js +1 -0
  194. package/dist/{cli-BkeRaYfk.d.ts → cli-lMql2FCr.d.ts} +26 -7
  195. package/dist/cli.d.ts +11 -6
  196. package/dist/cli.js +69 -34
  197. package/dist/codex-thread-key.js +1 -0
  198. package/dist/commitment-ledger.js +1 -0
  199. package/dist/compression-optimizer.js +1 -0
  200. package/dist/config.d.ts +2 -1
  201. package/dist/config.js +4 -1
  202. package/dist/connectors-cli-DFGtY2DB.d.ts +257 -0
  203. package/dist/connectors-cli.d.ts +2 -0
  204. package/dist/connectors-cli.js +22 -0
  205. package/dist/connectors-cli.js.map +1 -0
  206. package/dist/consolidation-operator.d.ts +65 -5
  207. package/dist/consolidation-operator.js +6 -1
  208. package/dist/consolidation-provenance-check.d.ts +1 -1
  209. package/dist/consolidation-provenance-check.js +3 -2
  210. package/dist/consolidation-undo.d.ts +1 -1
  211. package/dist/consolidation-undo.js +1 -0
  212. package/dist/consolidation-undo.js.map +1 -1
  213. package/dist/{contradiction-review-WIUBAR52.js → contradiction-review-5LTTVDQV.js} +2 -1
  214. package/dist/contradiction-review-5LTTVDQV.js.map +1 -0
  215. package/dist/{contradiction-scan-E3GJTI4F.js → contradiction-scan-3Z6YW7YA.js} +2 -1
  216. package/dist/{contradiction-scan-E3GJTI4F.js.map → contradiction-scan-3Z6YW7YA.js.map} +1 -1
  217. package/dist/cross-namespace-budget.js +1 -0
  218. package/dist/cue-anchors.js +1 -0
  219. package/dist/dashboard-runtime.js +1 -0
  220. package/dist/day-summary.js +1 -0
  221. package/dist/delinearize.js +1 -0
  222. package/dist/direct-answer-wiring.js +1 -0
  223. package/dist/direct-answer.js +1 -0
  224. package/dist/dreams-ledger-LR2NBAZE.js +286 -0
  225. package/dist/dreams-ledger-LR2NBAZE.js.map +1 -0
  226. package/dist/embedding-fallback.js +1 -0
  227. package/dist/engine-O6YWKQM3.js +28 -0
  228. package/dist/engine-O6YWKQM3.js.map +1 -0
  229. package/dist/entity-retrieval.d.ts +1 -1
  230. package/dist/entity-retrieval.js +10 -7
  231. package/dist/entity-schema.js +1 -0
  232. package/dist/evals.js +1 -0
  233. package/dist/evidence-pack.d.ts +16 -0
  234. package/dist/evidence-pack.js +8 -0
  235. package/dist/evidence-pack.js.map +1 -0
  236. package/dist/explicit-capture.d.ts +6 -4
  237. package/dist/explicit-capture.js +1 -0
  238. package/dist/extraction-judge-telemetry.js +1 -0
  239. package/dist/extraction-judge-training.js +1 -0
  240. package/dist/extraction-judge.js +1 -0
  241. package/dist/extraction.js +8 -7
  242. package/dist/fallback-llm.js +3 -2
  243. package/dist/first-start-migration-4MHQEOSD.js +263 -0
  244. package/dist/first-start-migration-4MHQEOSD.js.map +1 -0
  245. package/dist/forget-PLR6J5DN.js +69 -0
  246. package/dist/forget-PLR6J5DN.js.map +1 -0
  247. package/dist/framework-CyHYDcri.d.ts +153 -0
  248. package/dist/fs-utils-IRVUFB6G.js +30 -0
  249. package/dist/fs-utils-IRVUFB6G.js.map +1 -0
  250. package/dist/graph-dashboard-diff.js +1 -0
  251. package/dist/graph-dashboard-key.js +1 -0
  252. package/dist/graph-dashboard-parser.js +1 -0
  253. package/dist/graph-edge-decay-PWB63GRE.js +207 -0
  254. package/dist/graph-edge-decay-PWB63GRE.js.map +1 -0
  255. package/dist/graph-edge-reinforcement.d.ts +81 -0
  256. package/dist/graph-edge-reinforcement.js +24 -0
  257. package/dist/graph-edge-reinforcement.js.map +1 -0
  258. package/dist/graph-events.d.ts +87 -0
  259. package/dist/graph-events.js +14 -0
  260. package/dist/graph-events.js.map +1 -0
  261. package/dist/graph-recall.js +1 -0
  262. package/dist/graph-retrieval.js +1 -0
  263. package/dist/graph-snapshot.d.ts +112 -0
  264. package/dist/graph-snapshot.js +19 -0
  265. package/dist/graph-snapshot.js.map +1 -0
  266. package/dist/graph.d.ts +105 -7
  267. package/dist/graph.js +20 -3
  268. package/dist/harmonic-retrieval.js +1 -0
  269. package/dist/himem.js +1 -0
  270. package/dist/hygiene.js +1 -0
  271. package/dist/identity-continuity.js +1 -0
  272. package/dist/importance.js +1 -0
  273. package/dist/index.d.ts +574 -13
  274. package/dist/index.js +337 -69
  275. package/dist/index.js.map +1 -1
  276. package/dist/intent.js +1 -0
  277. package/dist/json-extract.js +1 -0
  278. package/dist/json-store.js +1 -0
  279. package/dist/kdf-7S6RWKLZ.js +26 -0
  280. package/dist/kdf-7S6RWKLZ.js.map +1 -0
  281. package/dist/legacy-hook-compat.js +1 -0
  282. package/dist/legacy-hook-compat.js.map +1 -1
  283. package/dist/lifecycle.js +1 -0
  284. package/dist/live-connectors-runner.d.ts +48 -0
  285. package/dist/live-connectors-runner.js +17 -0
  286. package/dist/live-connectors-runner.js.map +1 -0
  287. package/dist/local-llm.js +1 -0
  288. package/dist/logger.js +1 -0
  289. package/dist/memory-action-policy.js +1 -0
  290. package/dist/memory-cache.d.ts +2 -1
  291. package/dist/memory-cache.js +4 -1
  292. package/dist/memory-governance-JZHZDOLN.js +37 -0
  293. package/dist/memory-governance-JZHZDOLN.js.map +1 -0
  294. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  295. package/dist/memory-lifecycle-ledger-utils.js +4 -1
  296. package/dist/memory-projection-format.js +1 -0
  297. package/dist/{memory-projection-store-DeSXPh1j.d.ts → memory-projection-store-CY8TU40w.d.ts} +2 -1
  298. package/dist/memory-projection-store.d.ts +1 -1
  299. package/dist/memory-projection-store.js +2 -1
  300. package/dist/memory-worth-bench.js +1 -0
  301. package/dist/memory-worth-bench.js.map +1 -1
  302. package/dist/memory-worth-filter.js +1 -0
  303. package/dist/memory-worth-outcomes.d.ts +1 -1
  304. package/dist/memory-worth-outcomes.js +1 -0
  305. package/dist/memory-worth.js +1 -0
  306. package/dist/metadata-FC3XPDRQ.js +21 -0
  307. package/dist/metadata-FC3XPDRQ.js.map +1 -0
  308. package/dist/migrate-from-identity-anchor-TTEDEJGX.js +8 -0
  309. package/dist/migrate-from-identity-anchor-TTEDEJGX.js.map +1 -0
  310. package/dist/model-registry.js +1 -0
  311. package/dist/models-json.js +1 -0
  312. package/dist/native-knowledge.js +1 -0
  313. package/dist/negative.js +1 -0
  314. package/dist/objective-state-writers.js +1 -0
  315. package/dist/objective-state-writers.js.map +1 -1
  316. package/dist/objective-state.js +1 -0
  317. package/dist/openai-chat-compat.js +1 -0
  318. package/dist/operator-toolkit.d.ts +46 -2
  319. package/dist/operator-toolkit.js +29 -17
  320. package/dist/opik-exporter.js +1 -0
  321. package/dist/opik-exporter.js.map +1 -1
  322. package/dist/{orchestrator-CmJ-NTdJ.d.ts → orchestrator-ChkesB8U.d.ts} +177 -13
  323. package/dist/orchestrator.d.ts +6 -4
  324. package/dist/orchestrator.js +57 -41
  325. package/dist/page-versioning.js +1 -0
  326. package/dist/path-RMTY5Y5A.js +9 -0
  327. package/dist/path-RMTY5Y5A.js.map +1 -0
  328. package/dist/patterns-cli.d.ts +160 -0
  329. package/dist/patterns-cli.js +29 -0
  330. package/dist/patterns-cli.js.map +1 -0
  331. package/dist/peers-6OSQ3NK6.js +44 -0
  332. package/dist/peers-6OSQ3NK6.js.map +1 -0
  333. package/dist/plugin-id.js +1 -0
  334. package/dist/policy-runtime.js +1 -0
  335. package/dist/{port-BADbLZU5.d.ts → port-hqGnoStS.d.ts} +6 -0
  336. package/dist/profiling.js +1 -0
  337. package/dist/purge-6ATBGT77.js +205 -0
  338. package/dist/purge-6ATBGT77.js.map +1 -0
  339. package/dist/qmd-recall-cache.d.ts +1 -1
  340. package/dist/qmd-recall-cache.js +1 -0
  341. package/dist/qmd.d.ts +2 -1
  342. package/dist/qmd.js +4 -3
  343. package/dist/reasoning-trace-recall.js +1 -0
  344. package/dist/reasoning-trace-types.js +1 -0
  345. package/dist/recall-audit-anomaly.js +1 -0
  346. package/dist/recall-audit.js +1 -0
  347. package/dist/recall-disclosure-escalation.d.ts +84 -0
  348. package/dist/recall-disclosure-escalation.js +14 -0
  349. package/dist/recall-disclosure-escalation.js.map +1 -0
  350. package/dist/recall-explain-renderer.js +4 -1
  351. package/dist/recall-mmr.js +1 -0
  352. package/dist/recall-qos.js +1 -0
  353. package/dist/recall-query-policy.js +1 -0
  354. package/dist/recall-state.d.ts +7 -0
  355. package/dist/recall-state.js +2 -1
  356. package/dist/recall-tag-filter.d.ts +56 -0
  357. package/dist/recall-tag-filter.js +14 -0
  358. package/dist/recall-tag-filter.js.map +1 -0
  359. package/dist/recall-tokenization.js +1 -0
  360. package/dist/recall-xray-cli.d.ts +9 -2
  361. package/dist/recall-xray-cli.js +9 -4
  362. package/dist/recall-xray-renderer.js +4 -1
  363. package/dist/recall-xray.d.ts +116 -2
  364. package/dist/recall-xray.js +9 -3
  365. package/dist/reconstruct.js +1 -0
  366. package/dist/release-changelog.js +2 -0
  367. package/dist/release-changelog.js.map +1 -1
  368. package/dist/relevance.js +1 -0
  369. package/dist/rerank.js +1 -0
  370. package/dist/{resolution-QBTDHTG7.js → resolution-YGIBORXI.js} +2 -1
  371. package/dist/{resolution-QBTDHTG7.js.map → resolution-YGIBORXI.js.map} +1 -1
  372. package/dist/resolve-auth-token.d.ts +51 -0
  373. package/dist/resolve-auth-token.js +12 -0
  374. package/dist/resolve-auth-token.js.map +1 -0
  375. package/dist/resolve-provider-secret.d.ts +9 -1
  376. package/dist/resolve-provider-secret.js +4 -1
  377. package/dist/resume-bundles.js +4 -3
  378. package/dist/retrieval-agents.d.ts +1 -1
  379. package/dist/retrieval-agents.js +1 -0
  380. package/dist/retrieval-tiers.js +1 -0
  381. package/dist/retrieval.js +1 -0
  382. package/dist/sanitize.js +1 -0
  383. package/dist/schemas.d.ts +15 -2
  384. package/dist/schemas.js +2 -1
  385. package/dist/sdk-compat.js +1 -0
  386. package/dist/sdk-compat.js.map +1 -1
  387. package/dist/secure-store-4R2GSO7S.js +156 -0
  388. package/dist/secure-store-4R2GSO7S.js.map +1 -0
  389. package/dist/semantic-chunking.js +1 -0
  390. package/dist/{semantic-consolidation-CxJU6MJk.d.ts → semantic-consolidation-ByBXb-sf.d.ts} +3 -3
  391. package/dist/semantic-consolidation.d.ts +2 -2
  392. package/dist/semantic-consolidation.js +12 -7
  393. package/dist/semantic-rule-promotion.d.ts +1 -1
  394. package/dist/semantic-rule-promotion.js +10 -7
  395. package/dist/semantic-rule-verifier.d.ts +1 -1
  396. package/dist/semantic-rule-verifier.js +10 -7
  397. package/dist/session-integrity.js +1 -0
  398. package/dist/session-observer-bands.js +1 -0
  399. package/dist/session-observer-state.js +1 -0
  400. package/dist/session-toggles.js +2 -0
  401. package/dist/session-toggles.js.map +1 -1
  402. package/dist/signal.js +1 -0
  403. package/dist/skills-registry.js +2 -0
  404. package/dist/skills-registry.js.map +1 -1
  405. package/dist/source-attribution.js +1 -0
  406. package/dist/state-NCHQ4TRG.js +8 -0
  407. package/dist/state-NCHQ4TRG.js.map +1 -0
  408. package/dist/state-store-3EH7HYIN.js +16 -0
  409. package/dist/state-store-3EH7HYIN.js.map +1 -0
  410. package/dist/storage.d.ts +76 -2
  411. package/dist/storage.js +9 -6
  412. package/dist/store-contract.js +1 -0
  413. package/dist/summarizer.js +5 -4
  414. package/dist/summary-snapshot.js +1 -0
  415. package/dist/temporal-index.js +1 -0
  416. package/dist/temporal-supersession.d.ts +1 -1
  417. package/dist/temporal-supersession.js +2 -1
  418. package/dist/temporal-validity.d.ts +52 -0
  419. package/dist/temporal-validity.js +14 -0
  420. package/dist/temporal-validity.js.map +1 -0
  421. package/dist/threading.js +1 -0
  422. package/dist/tier-migration.d.ts +2 -2
  423. package/dist/tier-migration.js +1 -0
  424. package/dist/tier-routing.js +1 -0
  425. package/dist/tier-stats-62ZVDFKS.js +152 -0
  426. package/dist/tier-stats-62ZVDFKS.js.map +1 -0
  427. package/dist/tmt.js +1 -0
  428. package/dist/tokens.js +1 -0
  429. package/dist/topics.js +1 -0
  430. package/dist/trace-C5ETWBEF.js +290 -0
  431. package/dist/trace-C5ETWBEF.js.map +1 -0
  432. package/dist/transcript.js +1 -0
  433. package/dist/trust-zones.js +1 -0
  434. package/dist/tui-RI7P6PBS.js +13 -0
  435. package/dist/tui-RI7P6PBS.js.map +1 -0
  436. package/dist/types-V3FJ26TF.js +30 -0
  437. package/dist/types-V3FJ26TF.js.map +1 -0
  438. package/dist/types.d.ts +634 -9
  439. package/dist/types.js +10 -3
  440. package/dist/utility-learner.js +1 -0
  441. package/dist/utility-runtime.js +1 -0
  442. package/dist/utility-telemetry.js +1 -0
  443. package/dist/verified-recall.js +10 -7
  444. package/dist/version-utils.js +1 -0
  445. package/dist/whitespace.js +1 -0
  446. package/dist/work-product-ledger.js +1 -0
  447. package/package.json +7 -3
  448. package/scripts/ensure-better-sqlite3.mjs +124 -0
  449. package/dist/access-service-Br8ZydTK.d.ts +0 -827
  450. package/dist/chunk-3OGMS3PE.js.map +0 -1
  451. package/dist/chunk-3YGHKTBF.js.map +0 -1
  452. package/dist/chunk-6PFRXT4K.js.map +0 -1
  453. package/dist/chunk-6YJHX2DL.js.map +0 -1
  454. package/dist/chunk-BECYBZLX.js.map +0 -1
  455. package/dist/chunk-C2EFFULQ.js.map +0 -1
  456. package/dist/chunk-CUPFXL3J.js.map +0 -1
  457. package/dist/chunk-DIXB44VE.js.map +0 -1
  458. package/dist/chunk-F5VP6YCB.js.map +0 -1
  459. package/dist/chunk-FVA6TGI3.js.map +0 -1
  460. package/dist/chunk-GA5P7RST.js.map +0 -1
  461. package/dist/chunk-KVBLZUKV.js.map +0 -1
  462. package/dist/chunk-L7IXWRYE.js.map +0 -1
  463. package/dist/chunk-LOIMBRDE.js.map +0 -1
  464. package/dist/chunk-LTCGGW2D.js +0 -14
  465. package/dist/chunk-LTCGGW2D.js.map +0 -1
  466. package/dist/chunk-NZLQTHS5.js.map +0 -1
  467. package/dist/chunk-OC5OXUQ4.js.map +0 -1
  468. package/dist/chunk-PVPWZSSI.js.map +0 -1
  469. package/dist/chunk-SPI27QT6.js.map +0 -1
  470. package/dist/chunk-STGWEHYR.js.map +0 -1
  471. package/dist/chunk-TP4FZJIZ.js.map +0 -1
  472. package/dist/chunk-ULYOGL6R.js.map +0 -1
  473. package/dist/chunk-UWB5LMWY.js.map +0 -1
  474. package/dist/chunk-VBVG2M5G.js.map +0 -1
  475. package/dist/chunk-VDX363PS.js.map +0 -1
  476. package/dist/chunk-WCLICCGB.js.map +0 -1
  477. package/dist/chunk-X6GF3FX2.js +0 -26
  478. package/dist/chunk-X6GF3FX2.js.map +0 -1
  479. package/dist/chunk-XXVWLXSG.js.map +0 -1
  480. package/dist/chunk-Y7R2XJ5Q.js.map +0 -1
  481. package/dist/chunk-ZAIM4TUE.js.map +0 -1
  482. package/dist/engine-72LSIWQP.js +0 -23
  483. /package/dist/{contradiction-review-WIUBAR52.js.map → capsule-cli.js.map} +0 -0
  484. /package/dist/{engine-72LSIWQP.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
  485. /package/dist/{chunk-TMYO7B5P.js.map → chunk-47WOM4YW.js.map} +0 -0
  486. /package/dist/{chunk-DG6YMRDC.js.map → chunk-B2TL6GA2.js.map} +0 -0
  487. /package/dist/{chunk-AYXIPSZO.js.map → chunk-CRU27Q4J.js.map} +0 -0
  488. /package/dist/{chunk-RBBWYEFJ.js.map → chunk-G2WADRQ3.js.map} +0 -0
  489. /package/dist/{chunk-NBVAS5MT.js.map → chunk-V7TEH5I2.js.map} +0 -0
@@ -1,21 +1,24 @@
1
1
  import {
2
2
  searchVerifiedSemanticRules
3
- } from "./chunk-SPI27QT6.js";
3
+ } from "./chunk-W7WWT4FJ.js";
4
4
  import "./chunk-DT5TVLJE.js";
5
- import "./chunk-F5VP6YCB.js";
6
- import "./chunk-LTCGGW2D.js";
5
+ import "./chunk-Y4A6M3B6.js";
6
+ import "./chunk-YNJHCGDT.js";
7
7
  import "./chunk-4KAN3GZ3.js";
8
- import "./chunk-6PFRXT4K.js";
9
- import "./chunk-TP4FZJIZ.js";
8
+ import "./chunk-43EKP2UK.js";
9
+ import "./chunk-PFV5C235.js";
10
+ import "./chunk-RULE4VG5.js";
10
11
  import "./chunk-SCU65EZI.js";
11
- import "./chunk-BOUYNNYD.js";
12
+ import "./chunk-67YLUWLG.js";
12
13
  import "./chunk-DM2T26WE.js";
13
14
  import "./chunk-QSVPYQPG.js";
14
15
  import "./chunk-M62O4P4T.js";
15
16
  import "./chunk-4DJQYKMN.js";
16
- import "./chunk-X6GF3FX2.js";
17
+ import "./chunk-G7D6GZ5J.js";
17
18
  import "./chunk-FAAFWE4G.js";
18
19
  import "./chunk-2ODBA7MQ.js";
20
+ import "./chunk-A6XUJE5D.js";
21
+ import "./chunk-PZ5AY32C.js";
19
22
  export {
20
23
  searchVerifiedSemanticRules
21
24
  };
@@ -3,6 +3,7 @@ import {
3
3
  applySessionRepair,
4
4
  planSessionRepair
5
5
  } from "./chunk-YRMVARQP.js";
6
+ import "./chunk-PZ5AY32C.js";
6
7
  export {
7
8
  analyzeSessionIntegrity,
8
9
  applySessionRepair,
@@ -2,6 +2,7 @@ import {
2
2
  DEFAULT_SESSION_OBSERVER_BANDS,
3
3
  cloneDefaultSessionObserverBands
4
4
  } from "./chunk-Z5LAYHGJ.js";
5
+ import "./chunk-PZ5AY32C.js";
5
6
  export {
6
7
  DEFAULT_SESSION_OBSERVER_BANDS,
7
8
  cloneDefaultSessionObserverBands
@@ -4,6 +4,7 @@ import {
4
4
  } from "./chunk-JR4ZC3G4.js";
5
5
  import "./chunk-Z5LAYHGJ.js";
6
6
  import "./chunk-2ODBA7MQ.js";
7
+ import "./chunk-PZ5AY32C.js";
7
8
  export {
8
9
  SessionObserverState,
9
10
  normalizeObserverBands
@@ -1,3 +1,5 @@
1
+ import "./chunk-PZ5AY32C.js";
2
+
1
3
  // src/session-toggles.ts
2
4
  import { mkdir, readFile, writeFile } from "fs/promises";
3
5
  import path from "path";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/session-toggles.ts"],"sourcesContent":["import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport interface SessionToggleStore {\n isDisabled(sessionKey: string, agentId: string): Promise<boolean>;\n resolve(sessionKey: string, agentId: string): Promise<{\n disabled: boolean;\n source: \"primary\" | \"secondary\" | \"none\";\n updatedAt?: string;\n }>;\n setDisabled(sessionKey: string, agentId: string, disabled: boolean): Promise<void>;\n clear(sessionKey: string, agentId: string): Promise<void>;\n list(): Promise<Array<{ sessionKey: string; agentId: string; disabled: boolean; updatedAt: string }>>;\n}\n\ninterface ToggleEntry {\n disabled: boolean;\n updatedAt: string;\n}\n\ninterface ToggleFile {\n version: 1;\n entries: Record<string, ToggleEntry>;\n}\n\ninterface FileToggleStoreOptions {\n secondaryReadOnlyPath?: string;\n}\n\nfunction encodeToggleKey(sessionKey: string, agentId: string): string {\n return `${encodeURIComponent(sessionKey)}::${encodeURIComponent(agentId)}`;\n}\n\nfunction decodeToggleKey(key: string): { sessionKey: string; agentId: string } | null {\n const [encodedSessionKey, encodedAgentId] = key.split(\"::\");\n if (!encodedSessionKey || !encodedAgentId) return null;\n return {\n sessionKey: decodeURIComponent(encodedSessionKey),\n agentId: decodeURIComponent(encodedAgentId),\n };\n}\n\nasync function safeReadToggleFile(filePath: string): Promise<ToggleFile> {\n try {\n const raw = await readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw) as Partial<ToggleFile>;\n if (!parsed || typeof parsed !== \"object\" || typeof parsed.entries !== \"object\") {\n return { version: 1, entries: {} };\n }\n return {\n version: 1,\n entries: Object.fromEntries(\n Object.entries(parsed.entries).filter(\n ([, value]) =>\n value &&\n typeof value === \"object\" &&\n typeof value.disabled === \"boolean\" &&\n typeof value.updatedAt === \"string\",\n ),\n ) as Record<string, ToggleEntry>,\n };\n } catch {\n return { version: 1, entries: {} };\n }\n}\n\nexport function createFileToggleStore(\n filePath: string,\n options: FileToggleStoreOptions = {},\n): SessionToggleStore {\n let writeChain = Promise.resolve();\n\n async function queueWrite(operation: () => Promise<void>): Promise<void> {\n const run = writeChain.catch(() => undefined).then(operation);\n writeChain = run.catch(() => undefined);\n await run;\n }\n\n async function writeToggleFile(next: ToggleFile): Promise<void> {\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, JSON.stringify(next, null, 2), \"utf8\");\n }\n\n async function readPrimary(): Promise<ToggleFile> {\n return safeReadToggleFile(filePath);\n }\n\n async function readSecondary(): Promise<ToggleFile> {\n if (!options.secondaryReadOnlyPath) return { version: 1, entries: {} };\n return safeReadToggleFile(options.secondaryReadOnlyPath);\n }\n\n return {\n async isDisabled(sessionKey: string, agentId: string): Promise<boolean> {\n const resolved = await this.resolve(sessionKey, agentId);\n return resolved.disabled;\n },\n\n async resolve(sessionKey: string, agentId: string) {\n const key = encodeToggleKey(sessionKey, agentId);\n const primary = await readPrimary();\n if (primary.entries[key]) {\n return {\n disabled: primary.entries[key].disabled,\n source: \"primary\" as const,\n updatedAt: primary.entries[key].updatedAt,\n };\n }\n const secondary = await readSecondary();\n if (secondary.entries[key]) {\n return {\n disabled: secondary.entries[key].disabled,\n source: \"secondary\" as const,\n updatedAt: secondary.entries[key].updatedAt,\n };\n }\n return { disabled: false, source: \"none\" as const };\n },\n\n async setDisabled(sessionKey: string, agentId: string, disabled: boolean): Promise<void> {\n const key = encodeToggleKey(sessionKey, agentId);\n await queueWrite(async () => {\n const current = await readPrimary();\n current.entries[key] = {\n disabled,\n updatedAt: new Date().toISOString(),\n };\n await writeToggleFile(current);\n });\n },\n\n async clear(sessionKey: string, agentId: string): Promise<void> {\n const key = encodeToggleKey(sessionKey, agentId);\n await queueWrite(async () => {\n const current = await readPrimary();\n delete current.entries[key];\n await writeToggleFile(current);\n });\n },\n\n async list() {\n const current = await readPrimary();\n return Object.entries(current.entries)\n .map(([key, value]) => {\n const decoded = decodeToggleKey(key);\n if (!decoded) return null;\n return {\n sessionKey: decoded.sessionKey,\n agentId: decoded.agentId,\n disabled: value.disabled,\n updatedAt: value.updatedAt,\n };\n })\n .filter((value): value is { sessionKey: string; agentId: string; disabled: boolean; updatedAt: string } =>\n value !== null\n );\n },\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/session-toggles.ts"],"sourcesContent":["import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport interface SessionToggleStore {\n isDisabled(sessionKey: string, agentId: string): Promise<boolean>;\n resolve(sessionKey: string, agentId: string): Promise<{\n disabled: boolean;\n source: \"primary\" | \"secondary\" | \"none\";\n updatedAt?: string;\n }>;\n setDisabled(sessionKey: string, agentId: string, disabled: boolean): Promise<void>;\n clear(sessionKey: string, agentId: string): Promise<void>;\n list(): Promise<Array<{ sessionKey: string; agentId: string; disabled: boolean; updatedAt: string }>>;\n}\n\ninterface ToggleEntry {\n disabled: boolean;\n updatedAt: string;\n}\n\ninterface ToggleFile {\n version: 1;\n entries: Record<string, ToggleEntry>;\n}\n\ninterface FileToggleStoreOptions {\n secondaryReadOnlyPath?: string;\n}\n\nfunction encodeToggleKey(sessionKey: string, agentId: string): string {\n return `${encodeURIComponent(sessionKey)}::${encodeURIComponent(agentId)}`;\n}\n\nfunction decodeToggleKey(key: string): { sessionKey: string; agentId: string } | null {\n const [encodedSessionKey, encodedAgentId] = key.split(\"::\");\n if (!encodedSessionKey || !encodedAgentId) return null;\n return {\n sessionKey: decodeURIComponent(encodedSessionKey),\n agentId: decodeURIComponent(encodedAgentId),\n };\n}\n\nasync function safeReadToggleFile(filePath: string): Promise<ToggleFile> {\n try {\n const raw = await readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw) as Partial<ToggleFile>;\n if (!parsed || typeof parsed !== \"object\" || typeof parsed.entries !== \"object\") {\n return { version: 1, entries: {} };\n }\n return {\n version: 1,\n entries: Object.fromEntries(\n Object.entries(parsed.entries).filter(\n ([, value]) =>\n value &&\n typeof value === \"object\" &&\n typeof value.disabled === \"boolean\" &&\n typeof value.updatedAt === \"string\",\n ),\n ) as Record<string, ToggleEntry>,\n };\n } catch {\n return { version: 1, entries: {} };\n }\n}\n\nexport function createFileToggleStore(\n filePath: string,\n options: FileToggleStoreOptions = {},\n): SessionToggleStore {\n let writeChain = Promise.resolve();\n\n async function queueWrite(operation: () => Promise<void>): Promise<void> {\n const run = writeChain.catch(() => undefined).then(operation);\n writeChain = run.catch(() => undefined);\n await run;\n }\n\n async function writeToggleFile(next: ToggleFile): Promise<void> {\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, JSON.stringify(next, null, 2), \"utf8\");\n }\n\n async function readPrimary(): Promise<ToggleFile> {\n return safeReadToggleFile(filePath);\n }\n\n async function readSecondary(): Promise<ToggleFile> {\n if (!options.secondaryReadOnlyPath) return { version: 1, entries: {} };\n return safeReadToggleFile(options.secondaryReadOnlyPath);\n }\n\n return {\n async isDisabled(sessionKey: string, agentId: string): Promise<boolean> {\n const resolved = await this.resolve(sessionKey, agentId);\n return resolved.disabled;\n },\n\n async resolve(sessionKey: string, agentId: string) {\n const key = encodeToggleKey(sessionKey, agentId);\n const primary = await readPrimary();\n if (primary.entries[key]) {\n return {\n disabled: primary.entries[key].disabled,\n source: \"primary\" as const,\n updatedAt: primary.entries[key].updatedAt,\n };\n }\n const secondary = await readSecondary();\n if (secondary.entries[key]) {\n return {\n disabled: secondary.entries[key].disabled,\n source: \"secondary\" as const,\n updatedAt: secondary.entries[key].updatedAt,\n };\n }\n return { disabled: false, source: \"none\" as const };\n },\n\n async setDisabled(sessionKey: string, agentId: string, disabled: boolean): Promise<void> {\n const key = encodeToggleKey(sessionKey, agentId);\n await queueWrite(async () => {\n const current = await readPrimary();\n current.entries[key] = {\n disabled,\n updatedAt: new Date().toISOString(),\n };\n await writeToggleFile(current);\n });\n },\n\n async clear(sessionKey: string, agentId: string): Promise<void> {\n const key = encodeToggleKey(sessionKey, agentId);\n await queueWrite(async () => {\n const current = await readPrimary();\n delete current.entries[key];\n await writeToggleFile(current);\n });\n },\n\n async list() {\n const current = await readPrimary();\n return Object.entries(current.entries)\n .map(([key, value]) => {\n const decoded = decodeToggleKey(key);\n if (!decoded) return null;\n return {\n sessionKey: decoded.sessionKey,\n agentId: decoded.agentId,\n disabled: value.disabled,\n updatedAt: value.updatedAt,\n };\n })\n .filter((value): value is { sessionKey: string; agentId: string; disabled: boolean; updatedAt: string } =>\n value !== null\n );\n },\n };\n}\n"],"mappings":"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","names":[]}
package/dist/signal.js CHANGED
@@ -2,6 +2,7 @@ import {
2
2
  isDisagreementPrompt,
3
3
  scanSignals
4
4
  } from "./chunk-XYIK4LF6.js";
5
+ import "./chunk-PZ5AY32C.js";
5
6
  export {
6
7
  isDisagreementPrompt,
7
8
  scanSignals
@@ -1,3 +1,5 @@
1
+ import "./chunk-PZ5AY32C.js";
2
+
1
3
  // src/skills-registry.ts
2
4
  import { fileURLToPath } from "url";
3
5
  import { dirname, resolve } from "path";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/skills-registry.ts"],"sourcesContent":["/**\n * skills-registry.ts\n *\n * Built-in Remnic procedural memory skills — the canonical SKILL.md sources\n * shipped with the monorepo. Consumers (e.g. the Codex materializer in #378)\n * read this registry to discover which skills to materialize into\n * `~/.codex/memories/skills/<slug>/SKILL.md`.\n *\n * This module is intentionally free of Codex/Claude Code host coupling —\n * it only exposes the static metadata each host needs.\n */\n\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\n\n/**\n * A single procedural-memory skill source that Remnic ships.\n *\n * - `slug` is the canonical folder name under `skills/` and the file on disk\n * must live at `<pluginRoot>/skills/<slug>/SKILL.md`.\n * - `staticPath`, when set, points at a pre-authored SKILL.md on disk.\n * - `generator`, when set, produces a SKILL.md body at materialization time.\n * Exactly one of `staticPath` or `generator` should be provided.\n * - `disableModelInvocation` mirrors the `disable-model-invocation` frontmatter\n * key and indicates a skill that writes or mutates state and therefore\n * should not be auto-invoked by a model without explicit opt-in.\n */\nexport interface RemnicSkillSource {\n slug: string;\n staticPath?: string;\n generator?: () => Promise<string>;\n disableModelInvocation: boolean;\n}\n\n/**\n * Validate a Remnic skill slug. Rules:\n *\n * - lowercase letters, digits, and `-` only\n * - must start with a letter or digit\n * - 1–64 characters\n *\n * This is the same shape the Codex skills directory expects.\n */\nexport function isValidSkillSlug(slug: string): boolean {\n // Must start with alphanumeric; each dash must be followed by alphanumeric\n // (no trailing dashes, no consecutive dashes); 1–64 characters total.\n return /^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,63}$/.test(slug);\n}\n\n// ---------------------------------------------------------------------------\n// Built-in skill paths — resolved relative to this source file.\n// ---------------------------------------------------------------------------\n//\n// This file lives at `packages/remnic-core/src/skills-registry.ts`.\n// After tsup build it lives at `packages/remnic-core/dist/skills-registry.js`.\n// In both cases, the shipped skill sources live four levels up at\n// `packages/plugin-codex/skills/<slug>/SKILL.md`.\n//\n// We compute the absolute path from the current module so that callers in any\n// cwd can resolve the files.\n\nconst HERE = dirname(fileURLToPath(import.meta.url));\nconst PLUGIN_CODEX_SKILLS_DIR = resolve(HERE, \"..\", \"..\", \"plugin-codex\", \"skills\");\n\nfunction codexSkillPath(slug: string): string {\n return resolve(PLUGIN_CODEX_SKILLS_DIR, slug, \"SKILL.md\");\n}\n\n/**\n * The canonical list of Remnic procedural memory skills shipped with the\n * monorepo. The Codex materializer (#378) copies these into\n * `~/.codex/memories/skills/<slug>/SKILL.md`.\n */\nexport const BUILTIN_SKILLS: RemnicSkillSource[] = [\n {\n slug: \"remnic-memory-workflow\",\n staticPath: codexSkillPath(\"remnic-memory-workflow\"),\n disableModelInvocation: true,\n },\n {\n slug: \"remnic-recall\",\n staticPath: codexSkillPath(\"remnic-recall\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-remember\",\n staticPath: codexSkillPath(\"remnic-remember\"),\n disableModelInvocation: true,\n },\n {\n slug: \"remnic-search\",\n staticPath: codexSkillPath(\"remnic-search\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-entities\",\n staticPath: codexSkillPath(\"remnic-entities\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-status\",\n staticPath: codexSkillPath(\"remnic-status\"),\n disableModelInvocation: false,\n },\n];\n"],"mappings":";AAYA,SAAS,qBAAqB;AAC9B,SAAS,SAAS,eAAe;AA8B1B,SAAS,iBAAiB,MAAuB;AAGtD,SAAO,6CAA6C,KAAK,IAAI;AAC/D;AAcA,IAAM,OAAO,QAAQ,cAAc,YAAY,GAAG,CAAC;AACnD,IAAM,0BAA0B,QAAQ,MAAM,MAAM,MAAM,gBAAgB,QAAQ;AAElF,SAAS,eAAe,MAAsB;AAC5C,SAAO,QAAQ,yBAAyB,MAAM,UAAU;AAC1D;AAOO,IAAM,iBAAsC;AAAA,EACjD;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,wBAAwB;AAAA,IACnD,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,iBAAiB;AAAA,IAC5C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,iBAAiB;AAAA,IAC5C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/skills-registry.ts"],"sourcesContent":["/**\n * skills-registry.ts\n *\n * Built-in Remnic procedural memory skills — the canonical SKILL.md sources\n * shipped with the monorepo. Consumers (e.g. the Codex materializer in #378)\n * read this registry to discover which skills to materialize into\n * `~/.codex/memories/skills/<slug>/SKILL.md`.\n *\n * This module is intentionally free of Codex/Claude Code host coupling —\n * it only exposes the static metadata each host needs.\n */\n\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, resolve } from \"node:path\";\n\n/**\n * A single procedural-memory skill source that Remnic ships.\n *\n * - `slug` is the canonical folder name under `skills/` and the file on disk\n * must live at `<pluginRoot>/skills/<slug>/SKILL.md`.\n * - `staticPath`, when set, points at a pre-authored SKILL.md on disk.\n * - `generator`, when set, produces a SKILL.md body at materialization time.\n * Exactly one of `staticPath` or `generator` should be provided.\n * - `disableModelInvocation` mirrors the `disable-model-invocation` frontmatter\n * key and indicates a skill that writes or mutates state and therefore\n * should not be auto-invoked by a model without explicit opt-in.\n */\nexport interface RemnicSkillSource {\n slug: string;\n staticPath?: string;\n generator?: () => Promise<string>;\n disableModelInvocation: boolean;\n}\n\n/**\n * Validate a Remnic skill slug. Rules:\n *\n * - lowercase letters, digits, and `-` only\n * - must start with a letter or digit\n * - 1–64 characters\n *\n * This is the same shape the Codex skills directory expects.\n */\nexport function isValidSkillSlug(slug: string): boolean {\n // Must start with alphanumeric; each dash must be followed by alphanumeric\n // (no trailing dashes, no consecutive dashes); 1–64 characters total.\n return /^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,63}$/.test(slug);\n}\n\n// ---------------------------------------------------------------------------\n// Built-in skill paths — resolved relative to this source file.\n// ---------------------------------------------------------------------------\n//\n// This file lives at `packages/remnic-core/src/skills-registry.ts`.\n// After tsup build it lives at `packages/remnic-core/dist/skills-registry.js`.\n// In both cases, the shipped skill sources live four levels up at\n// `packages/plugin-codex/skills/<slug>/SKILL.md`.\n//\n// We compute the absolute path from the current module so that callers in any\n// cwd can resolve the files.\n\nconst HERE = dirname(fileURLToPath(import.meta.url));\nconst PLUGIN_CODEX_SKILLS_DIR = resolve(HERE, \"..\", \"..\", \"plugin-codex\", \"skills\");\n\nfunction codexSkillPath(slug: string): string {\n return resolve(PLUGIN_CODEX_SKILLS_DIR, slug, \"SKILL.md\");\n}\n\n/**\n * The canonical list of Remnic procedural memory skills shipped with the\n * monorepo. The Codex materializer (#378) copies these into\n * `~/.codex/memories/skills/<slug>/SKILL.md`.\n */\nexport const BUILTIN_SKILLS: RemnicSkillSource[] = [\n {\n slug: \"remnic-memory-workflow\",\n staticPath: codexSkillPath(\"remnic-memory-workflow\"),\n disableModelInvocation: true,\n },\n {\n slug: \"remnic-recall\",\n staticPath: codexSkillPath(\"remnic-recall\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-remember\",\n staticPath: codexSkillPath(\"remnic-remember\"),\n disableModelInvocation: true,\n },\n {\n slug: \"remnic-search\",\n staticPath: codexSkillPath(\"remnic-search\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-entities\",\n staticPath: codexSkillPath(\"remnic-entities\"),\n disableModelInvocation: false,\n },\n {\n slug: \"remnic-status\",\n staticPath: codexSkillPath(\"remnic-status\"),\n disableModelInvocation: false,\n },\n];\n"],"mappings":";;;AAYA,SAAS,qBAAqB;AAC9B,SAAS,SAAS,eAAe;AA8B1B,SAAS,iBAAiB,MAAuB;AAGtD,SAAO,6CAA6C,KAAK,IAAI;AAC/D;AAcA,IAAM,OAAO,QAAQ,cAAc,YAAY,GAAG,CAAC;AACnD,IAAM,0BAA0B,QAAQ,MAAM,MAAM,MAAM,gBAAgB,QAAQ;AAElF,SAAS,eAAe,MAAsB;AAC5C,SAAO,QAAQ,yBAAyB,MAAM,UAAU;AAC1D;AAOO,IAAM,iBAAsC;AAAA,EACjD;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,wBAAwB;AAAA,IACnD,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,iBAAiB;AAAA,IAC5C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,iBAAiB;AAAA,IAC5C,wBAAwB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,eAAe,eAAe;AAAA,IAC1C,wBAAwB;AAAA,EAC1B;AACF;","names":[]}
@@ -11,6 +11,7 @@ import {
11
11
  stripCitation,
12
12
  stripCitationForTemplate
13
13
  } from "./chunk-4KAN3GZ3.js";
14
+ import "./chunk-PZ5AY32C.js";
14
15
  export {
15
16
  CITATION_UNKNOWN,
16
17
  DEFAULT_CITATION_FORMAT,
@@ -0,0 +1,8 @@
1
+ import {
2
+ gatherConsoleState
3
+ } from "./chunk-TYEOAFH3.js";
4
+ import "./chunk-PZ5AY32C.js";
5
+ export {
6
+ gatherConsoleState
7
+ };
8
+ //# sourceMappingURL=state-NCHQ4TRG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,16 @@
1
+ import {
2
+ _connectorStatePathForTest,
3
+ listConnectorStates,
4
+ readConnectorState,
5
+ writeConnectorState
6
+ } from "./chunk-6TBWYBJ3.js";
7
+ import "./chunk-IXEJRKCZ.js";
8
+ import "./chunk-MARWOCVP.js";
9
+ import "./chunk-PZ5AY32C.js";
10
+ export {
11
+ _connectorStatePathForTest,
12
+ listConnectorStates,
13
+ readConnectorState,
14
+ writeConnectorState
15
+ };
16
+ //# sourceMappingURL=state-store-3EH7HYIN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/storage.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VersioningConfig } from './page-versioning.js';
2
2
  import { ConsolidationOperator } from './consolidation-operator.js';
3
3
  import { PluginConfig, MemoryCategory, ImportanceScore, MemoryLink, MemoryFrontmatter, MemoryStatus, MemoryFile, EntityStructuredSection, BufferState, MetaState, MemoryActionEvent, MemoryLifecycleEvent, BufferSurpriseEvent, BehaviorSignalEvent, CompressionGuidelineOptimizerState, ContinuityIncidentOpenInput, ContinuityIncidentRecord, ContinuityIncidentCloseInput, ContinuityImprovementLoop, ContinuityLoopUpsertInput, ContinuityLoopReviewInput, FileHygieneConfig, EntityRelationship, EntityActivityEntry, EntityFile, AccessTrackingEntry, MemoryProjectionCurrentState, MemorySummary, TopicScore } from './types.js';
4
- import { P as ProjectedMemoryBrowseOptions, a as ProjectedMemoryBrowsePage, b as readProjectedGovernanceRecord } from './memory-projection-store-DeSXPh1j.js';
4
+ import { P as ProjectedMemoryBrowseOptions, a as ProjectedMemoryBrowsePage, b as readProjectedGovernanceRecord } from './memory-projection-store-CY8TU40w.js';
5
5
  import 'better-sqlite3';
6
6
 
7
7
  interface ReextractJobRequest {
@@ -36,7 +36,10 @@ declare class ContentHashIndex {
36
36
  private hashes;
37
37
  private dirty;
38
38
  private readonly filePath;
39
- constructor(stateDir: string);
39
+ private readonly secureStoreKeyProvider;
40
+ private readonly secureStoreWriteKeyProvider;
41
+ private readonly memoryDir;
42
+ constructor(stateDir: string, secureStoreKeyProvider?: () => Buffer | null, secureStoreWriteKeyProvider?: () => Buffer | null, memoryDir?: string);
40
43
  /** Load existing hashes from disk. Safe to call multiple times. */
41
44
  load(): Promise<void>;
42
45
  /** Check if content already exists in the index. */
@@ -112,6 +115,8 @@ declare class StorageManager {
112
115
  private static readonly ARTIFACT_INDEX_CACHE_TTL_MS;
113
116
  private static readonly artifactWriteVersionByDir;
114
117
  private static readonly memoryStatusVersionByDir;
118
+ private static readonly secureStoreEntityCacheKeyIds;
119
+ private static nextSecureStoreEntityCacheKeyId;
115
120
  private static readonly coldWriteVersionByDir;
116
121
  private static readonly allMemoriesInFlight;
117
122
  private static readonly COLD_SCAN_CACHE_TTL_MS;
@@ -122,12 +127,68 @@ declare class StorageManager {
122
127
  private factHashIndexLoadPromise;
123
128
  private factHashIndexAuthoritative;
124
129
  private factHashIndexAuthoritativePromise;
130
+ private readonly secureAppendChains;
125
131
  /** Optional: set by the orchestrator after construction to enable template-aware citation stripping during legacy hash rebuild. */
126
132
  citationTemplate: string;
127
133
  /** Page-versioning configuration. Set by the orchestrator after construction. */
128
134
  private _versioningConfig;
129
135
  /** Set the page-versioning configuration. When `enabled` is false (default), all versioning calls are no-ops. */
130
136
  setVersioningConfig(config: VersioningConfig): void;
137
+ /**
138
+ * At-rest encryption key (issue #690 PR 3/4).
139
+ *
140
+ * When non-null, every memory file read is decrypted and every write
141
+ * is encrypted using the secure-fs layer. When null, the storage
142
+ * layer operates in plain-text mode (legacy/unencrypted store).
143
+ *
144
+ * Set by the orchestrator after init/unlock; cleared on lock.
145
+ * The key buffer is NEVER logged or serialized.
146
+ */
147
+ private _secureStoreKey;
148
+ /**
149
+ * When true (and `_secureStoreKey` is non-null), new writes are
150
+ * encrypted. Set to false to pause encryption of new writes while
151
+ * still decrypting existing files.
152
+ */
153
+ private _secureStoreEncryptOnWrite;
154
+ /**
155
+ * When true, the secure-store is configured as required — writes
156
+ * MUST be encrypted and a locked store MUST reject writes rather
157
+ * than silently falling back to plaintext. Set by the orchestrator
158
+ * from `config.secureStoreEnabled`.
159
+ */
160
+ private _secureStoreRequired;
161
+ /**
162
+ * Set or clear the at-rest encryption key.
163
+ *
164
+ * Pass a 32-byte Buffer to enable encryption; pass null to clear
165
+ * (lock) the store. The caller is responsible for key lifecycle —
166
+ * this method does not zero the buffer on replacement; the keyring
167
+ * module (`keyring.ts`) owns zeroization.
168
+ */
169
+ setSecureStoreKey(key: Buffer | null, encryptOnWrite?: boolean): void;
170
+ private getEntityCacheSecureStoreKey;
171
+ /**
172
+ * Mark the secure-store as required for this storage instance.
173
+ * When required and locked, writes throw SecureStoreLockedError
174
+ * rather than silently writing plaintext.
175
+ */
176
+ setSecureStoreRequired(required: boolean): void;
177
+ /** Return true iff the secure-store key is currently set (store is unlocked). */
178
+ isSecureStoreUnlocked(): boolean;
179
+ /**
180
+ * Resolve the effective write key.
181
+ *
182
+ * - If `_secureStoreEncryptOnWrite` is false: returns null (plain write).
183
+ * - If `_secureStoreEncryptOnWrite` is true AND key is set: returns key.
184
+ * - If `_secureStoreEncryptOnWrite` is true AND key is null AND
185
+ * `_secureStoreRequired` is true: throws SecureStoreLockedError so the
186
+ * write fails loudly rather than silently writing plaintext (P1 finding
187
+ * from Cursor review of PR #767).
188
+ * - If `_secureStoreEncryptOnWrite` is true AND key is null AND
189
+ * `_secureStoreRequired` is false: returns null (unencrypted store).
190
+ */
191
+ private resolveWriteKey;
131
192
  /**
132
193
  * Snapshot the current content of a page before overwriting.
133
194
  * No-op when versioning is disabled or the file does not yet exist.
@@ -164,6 +225,11 @@ declare class StorageManager {
164
225
  private get proceduresDir();
165
226
  private get reasoningTracesDir();
166
227
  private get entitiesDir();
228
+ private readStorageSecureFile;
229
+ private writeStorageSecureFile;
230
+ createContentHashIndex(): ContentHashIndex;
231
+ private appendStorageSecureFile;
232
+ private appendStorageSecureFileUnlocked;
167
233
  private get stateDir();
168
234
  private get entitySynthesisQueuePath();
169
235
  private get factHashIndexReadyPath();
@@ -247,6 +313,8 @@ declare class StorageManager {
247
313
  derivedVia?: ConsolidationOperator;
248
314
  }): Promise<string>;
249
315
  hasFactContentHash(content: string): Promise<boolean>;
316
+ private factContentHashForRemoval;
317
+ removeFactContentHashesForMemories(memories: MemoryFile[]): Promise<void>;
250
318
  isFactContentHashAuthoritative(): Promise<boolean>;
251
319
  writeArtifact(quote: string, options?: {
252
320
  actor?: string;
@@ -287,6 +355,8 @@ declare class StorageManager {
287
355
  /** Public cache invalidation for callers that need authoritative disk reads
288
356
  * (e.g. projection verify/rebuild). */
289
357
  invalidateAllMemoriesCacheForDir(): void;
358
+ /** Invalidate only the cache layers affected by direct tier file deletes. */
359
+ invalidateMemoryCachesForTiers(tiers: Iterable<"hot" | "cold" | "archive">): void;
290
360
  /** Clear ALL static caches. Use in tests that write files directly
291
361
  * (bypassing StorageManager.writeMemory) to avoid stale reads. */
292
362
  static clearAllStaticCaches(): void;
@@ -477,6 +547,10 @@ declare class StorageManager {
477
547
  readReextractJobs(limit?: number): Promise<ReextractJobRequest[]>;
478
548
  readBehaviorSignals(limit?: number): Promise<BehaviorSignalEvent[]>;
479
549
  readMemoryActionEvents(limit?: number): Promise<MemoryActionEvent[]>;
550
+ readMemoryActionEventRows(limit?: number): Promise<Array<{
551
+ line: number;
552
+ event: MemoryActionEvent;
553
+ }>>;
480
554
  readAllMemoryLifecycleEvents(): Promise<MemoryLifecycleEvent[]>;
481
555
  readMemoryLifecycleEvents(limit?: number): Promise<MemoryLifecycleEvent[]>;
482
556
  writeCompressionGuidelines(content: string): Promise<void>;
package/dist/storage.js CHANGED
@@ -8,20 +8,23 @@ import {
8
8
  normalizeEntityName,
9
9
  parseEntityFile,
10
10
  serializeEntityFile
11
- } from "./chunk-F5VP6YCB.js";
12
- import "./chunk-LTCGGW2D.js";
11
+ } from "./chunk-Y4A6M3B6.js";
12
+ import "./chunk-YNJHCGDT.js";
13
13
  import "./chunk-4KAN3GZ3.js";
14
- import "./chunk-6PFRXT4K.js";
15
- import "./chunk-TP4FZJIZ.js";
14
+ import "./chunk-43EKP2UK.js";
15
+ import "./chunk-PFV5C235.js";
16
+ import "./chunk-RULE4VG5.js";
16
17
  import "./chunk-SCU65EZI.js";
17
- import "./chunk-BOUYNNYD.js";
18
+ import "./chunk-67YLUWLG.js";
18
19
  import "./chunk-DM2T26WE.js";
19
20
  import "./chunk-QSVPYQPG.js";
20
21
  import "./chunk-M62O4P4T.js";
21
22
  import "./chunk-4DJQYKMN.js";
22
- import "./chunk-X6GF3FX2.js";
23
+ import "./chunk-G7D6GZ5J.js";
23
24
  import "./chunk-FAAFWE4G.js";
24
25
  import "./chunk-2ODBA7MQ.js";
26
+ import "./chunk-A6XUJE5D.js";
27
+ import "./chunk-PZ5AY32C.js";
25
28
  export {
26
29
  ContentHashIndex,
27
30
  StorageManager,
@@ -8,6 +8,7 @@ import {
8
8
  recordStoreDay,
9
9
  validateStringRecord
10
10
  } from "./chunk-DGXUHMOV.js";
11
+ import "./chunk-PZ5AY32C.js";
11
12
  export {
12
13
  assertIsoRecordedAt,
13
14
  assertSafePathSegment,
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  HourlySummarizer
3
- } from "./chunk-DG6YMRDC.js";
3
+ } from "./chunk-B2TL6GA2.js";
4
4
  import "./chunk-ETOW6ACV.js";
5
5
  import "./chunk-FEMOX5AD.js";
6
6
  import "./chunk-R2XRID2N.js";
7
- import "./chunk-OR64ZGRZ.js";
8
- import "./chunk-AYXIPSZO.js";
9
- import "./chunk-Y7R2XJ5Q.js";
7
+ import "./chunk-CRU27Q4J.js";
8
+ import "./chunk-Q7FJ5ZHM.js";
10
9
  import "./chunk-ODWDQNRE.js";
11
10
  import "./chunk-Y27UJK6V.js";
12
11
  import "./chunk-UZB5KHKX.js";
12
+ import "./chunk-OR64ZGRZ.js";
13
13
  import "./chunk-MARWOCVP.js";
14
14
  import "./chunk-2ODBA7MQ.js";
15
+ import "./chunk-PZ5AY32C.js";
15
16
  export {
16
17
  HourlySummarizer
17
18
  };
@@ -4,6 +4,7 @@ import {
4
4
  upsertSummarySnapshot,
5
5
  writeSummarySnapshot
6
6
  } from "./chunk-ETOW6ACV.js";
7
+ import "./chunk-PZ5AY32C.js";
7
8
  export {
8
9
  readSummarySnapshot,
9
10
  summarySnapshotPath,
@@ -12,6 +12,7 @@ import {
12
12
  recencyWindowFromPrompt,
13
13
  resolvePromptTagPrefilterAsync
14
14
  } from "./chunk-V3RXWQIE.js";
15
+ import "./chunk-PZ5AY32C.js";
15
16
  export {
16
17
  clearIndexes,
17
18
  deindexMemory,
@@ -2,7 +2,7 @@ import { MemoryFrontmatter } from './types.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './page-versioning.js';
4
4
  import './consolidation-operator.js';
5
- import './memory-projection-store-DeSXPh1j.js';
5
+ import './memory-projection-store-CY8TU40w.js';
6
6
  import 'better-sqlite3';
7
7
 
8
8
  /**
@@ -6,8 +6,9 @@ import {
6
6
  shouldFilterSupersededFromRecall,
7
7
  shouldSupersedeExisting,
8
8
  supersessionKeysForFact
9
- } from "./chunk-W6SL7OFG.js";
9
+ } from "./chunk-ZTSE2ZJ6.js";
10
10
  import "./chunk-2ODBA7MQ.js";
11
+ import "./chunk-PZ5AY32C.js";
11
12
  export {
12
13
  applyTemporalSupersession,
13
14
  computeSupersessionKey,
@@ -0,0 +1,52 @@
1
+ import { MemoryFrontmatter } from './types.js';
2
+
3
+ /**
4
+ * Temporal validity helpers (issue #680).
5
+ *
6
+ * `valid_at` / `invalid_at` are explicit ISO 8601 timestamps that mark when a
7
+ * fact begins and ends being authoritative. These helpers centralize the
8
+ * read-time defaulting rules so every call site (recall filter, supersession
9
+ * write, tests) agrees on the canonical semantics:
10
+ *
11
+ * - `effectiveValidAt(fm)` — the moment this fact starts being true.
12
+ * Falls back to `created` when `valid_at` is absent so legacy memories
13
+ * written before #680 still participate in `as_of` filtering without
14
+ * a backfill migration.
15
+ * - `effectiveInvalidAt(fm)` — the moment this fact stops being true.
16
+ * Returns `undefined` when no `invalid_at` is set; supersession logic
17
+ * populates it on the older fact when a newer one replaces it.
18
+ * - `isValidAsOf(fm, asOfMs)` — true when the fact was authoritative at
19
+ * `asOfMs` (a numeric timestamp in ms). Half-open interval semantics:
20
+ * `valid_at <= asOf < invalid_at`. Strings are parsed via
21
+ * `Date.parse()` so timezone-suffixed ISO strings compare correctly
22
+ * (CLAUDE.md gotcha — never compare ISO strings lexicographically).
23
+ *
24
+ * Boundary case: when `invalid_at === asOf`, the fact is treated as NOT
25
+ * valid (the upper bound is exclusive), which matches the supersession
26
+ * model — at the instant a successor's `valid_at` fires, the predecessor
27
+ * is no longer authoritative.
28
+ */
29
+
30
+ declare function effectiveValidAt(fm: Pick<MemoryFrontmatter, "valid_at" | "created">): string;
31
+ declare function effectiveInvalidAt(fm: Pick<MemoryFrontmatter, "invalid_at" | "supersededAt" | "status">): string | undefined;
32
+ /**
33
+ * Returns true when the fact was authoritative at `asOfMs` (parsed
34
+ * milliseconds since epoch). Half-open semantics: a fact is valid in
35
+ * `[valid_at, invalid_at)`.
36
+ *
37
+ * If `valid_at` cannot be parsed, the fact is conservatively treated as
38
+ * NOT valid at the requested point — we never silently default a corrupt
39
+ * timestamp to "always true" because that would let bad data leak past
40
+ * the historical filter (CLAUDE.md gotcha #34: distinguish empty from
41
+ * malformed).
42
+ */
43
+ declare function isValidAsOf(fm: Pick<MemoryFrontmatter, "valid_at" | "invalid_at" | "created" | "supersededAt" | "status">, asOfMs: number): boolean;
44
+ /**
45
+ * Parse and validate an `as_of` value supplied at an input boundary
46
+ * (CLI flag, HTTP query param, MCP field). Returns parsed milliseconds
47
+ * on success; throws a `RangeError` with a helpful message on malformed
48
+ * input. CLAUDE.md rule 51 — never silently default invalid input.
49
+ */
50
+ declare function parseAsOfTimestamp(raw: unknown): number;
51
+
52
+ export { effectiveInvalidAt, effectiveValidAt, isValidAsOf, parseAsOfTimestamp };
@@ -0,0 +1,14 @@
1
+ import {
2
+ effectiveInvalidAt,
3
+ effectiveValidAt,
4
+ isValidAsOf,
5
+ parseAsOfTimestamp
6
+ } from "./chunk-MDYG7VI7.js";
7
+ import "./chunk-PZ5AY32C.js";
8
+ export {
9
+ effectiveInvalidAt,
10
+ effectiveValidAt,
11
+ isValidAsOf,
12
+ parseAsOfTimestamp
13
+ };
14
+ //# sourceMappingURL=temporal-validity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/threading.js CHANGED
@@ -2,6 +2,7 @@ import {
2
2
  ThreadingManager
3
3
  } from "./chunk-JRNQ3RNA.js";
4
4
  import "./chunk-2ODBA7MQ.js";
5
+ import "./chunk-PZ5AY32C.js";
5
6
  export {
6
7
  ThreadingManager
7
8
  };
@@ -1,10 +1,10 @@
1
1
  import { MemoryFile } from './types.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import { MemoryTier } from './tier-routing.js';
4
- import { S as SearchBackend } from './port-BADbLZU5.js';
4
+ import { S as SearchBackend } from './port-hqGnoStS.js';
5
5
  import './page-versioning.js';
6
6
  import './consolidation-operator.js';
7
- import './memory-projection-store-DeSXPh1j.js';
7
+ import './memory-projection-store-CY8TU40w.js';
8
8
  import 'better-sqlite3';
9
9
  import './lifecycle.js';
10
10
 
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  TierMigrationExecutor
3
3
  } from "./chunk-Z5AAYHUC.js";
4
+ import "./chunk-PZ5AY32C.js";
4
5
  export {
5
6
  TierMigrationExecutor
6
7
  };
@@ -3,6 +3,7 @@ import {
3
3
  decideTierTransition
4
4
  } from "./chunk-S75M5ZRK.js";
5
5
  import "./chunk-TBBDFYXW.js";
6
+ import "./chunk-PZ5AY32C.js";
6
7
  export {
7
8
  computeTierValueScore,
8
9
  decideTierTransition