@remnic/core 9.65.8 → 9.66.1

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 (702) hide show
  1. package/dist/access-admin-ops-surface.d.ts +11 -12
  2. package/dist/access-admin-ops-surface.js +54 -51
  3. package/dist/access-authorization-probe.d.ts +11 -12
  4. package/dist/access-authorization-probe.js +55 -52
  5. package/dist/access-boundary.d.ts +11 -12
  6. package/dist/access-boundary.js +54 -51
  7. package/dist/access-citation-namespace.js +3 -3
  8. package/dist/access-cli.js +132 -125
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +1 -2
  11. package/dist/access-coding-context-resolution.js +2 -2
  12. package/dist/access-extraction-force-flush.d.ts +11 -12
  13. package/dist/access-extraction-force-flush.js +54 -51
  14. package/dist/access-health-types.d.ts +1 -2
  15. package/dist/access-http-lcm-compaction.d.ts +11 -12
  16. package/dist/access-http-lifecycle-flush.d.ts +11 -12
  17. package/dist/access-http-offline-stream.d.ts +11 -12
  18. package/dist/access-http-query.d.ts +2 -3
  19. package/dist/access-http-query.js +56 -53
  20. package/dist/access-http.d.ts +12 -13
  21. package/dist/access-http.js +77 -74
  22. package/dist/access-identity-continuity-surface.d.ts +9 -10
  23. package/dist/access-identity-continuity-surface.js +54 -51
  24. package/dist/access-lcm-surface.d.ts +11 -12
  25. package/dist/access-lcm-surface.js +54 -51
  26. package/dist/access-mcp-output-schemas.js +1 -1
  27. package/dist/access-mcp.d.ts +11 -12
  28. package/dist/access-mcp.js +67 -64
  29. package/dist/access-memory-search-fanout.d.ts +2 -3
  30. package/dist/{access-namespace-preflight-CpAOrS-9.d.ts → access-namespace-preflight-50VIkPhB.d.ts} +1 -1
  31. package/dist/access-namespace-preflight.d.ts +3 -4
  32. package/dist/access-namespace-preflight.js +54 -51
  33. package/dist/access-observe-write-surface.d.ts +11 -12
  34. package/dist/access-observe-write-surface.js +54 -51
  35. package/dist/access-offline-manifest.d.ts +9 -10
  36. package/dist/access-offline-manifest.js +15 -15
  37. package/dist/access-operations-batch.js +59 -56
  38. package/dist/access-operations.d.ts +12 -13
  39. package/dist/access-operations.js +64 -61
  40. package/dist/access-recall-concurrency.d.ts +11 -12
  41. package/dist/access-recall-concurrency.js +54 -51
  42. package/dist/access-recall-response.d.ts +11 -12
  43. package/dist/access-recall-response.js +54 -51
  44. package/dist/access-recall-surface.d.ts +11 -12
  45. package/dist/access-recall-surface.js +54 -51
  46. package/dist/access-schema.d.ts +12 -12
  47. package/dist/access-schema.js +5 -5
  48. package/dist/{access-service-Diu61Cfv.d.ts → access-service-C2tV2-uL.d.ts} +8 -8
  49. package/dist/access-service-helpers.d.ts +11 -12
  50. package/dist/access-service.d.ts +11 -12
  51. package/dist/access-service.js +54 -51
  52. package/dist/access-surface-catalog.d.ts +11 -12
  53. package/dist/access-surface-catalog.js +58 -53
  54. package/dist/access-surface-catalog.js.map +1 -1
  55. package/dist/access-wearables-meetings-surface.d.ts +3 -4
  56. package/dist/action-confidence.d.ts +1 -2
  57. package/dist/active-memory-bridge.d.ts +1 -2
  58. package/dist/active-memory-bridge.js +2 -2
  59. package/dist/active-recall.d.ts +1 -2
  60. package/dist/active-recall.js +11 -11
  61. package/dist/adapters/index.js +7 -7
  62. package/dist/adapters/registry.js +3 -3
  63. package/dist/ambient-provenance.d.ts +1 -2
  64. package/dist/artifact-search.d.ts +1 -2
  65. package/dist/{auto-sync-2YPITIWN.js → auto-sync-Q6Q2FVSC.js} +9 -9
  66. package/dist/behavior-learner.d.ts +1 -2
  67. package/dist/behavior-signals.d.ts +1 -2
  68. package/dist/bootstrap.d.ts +9 -10
  69. package/dist/briefing-window.d.ts +2 -3
  70. package/dist/briefing.d.ts +2 -3
  71. package/dist/briefing.js +28 -28
  72. package/dist/buffer-surprise-report.d.ts +1 -2
  73. package/dist/buffer-turn-helpers.d.ts +1 -2
  74. package/dist/buffer.d.ts +2 -3
  75. package/dist/buffer.js +20 -4
  76. package/dist/bulk-import/index.d.ts +3 -4
  77. package/dist/calibration.d.ts +1 -2
  78. package/dist/calibration.js +1 -1
  79. package/dist/capabilities.d.ts +1 -2
  80. package/dist/{capsule-merge-SGIVB3WA.js → capsule-merge-SEHERWWP.js} +4 -4
  81. package/dist/{catalog-9f-vEQLS.d.ts → catalog-C2jA-gLm.d.ts} +1 -1
  82. package/dist/causal-behavior.d.ts +1 -2
  83. package/dist/causal-consolidation.d.ts +1 -2
  84. package/dist/causal-consolidation.js +29 -29
  85. package/dist/causal-trajectory-graph.d.ts +1 -2
  86. package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
  87. package/dist/{chunk-TFR3HG4K.js → chunk-2FA7U5XY.js} +4 -4
  88. package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
  89. package/dist/{chunk-W2BAGGEW.js → chunk-2ITZ74A6.js} +40 -31
  90. package/dist/{chunk-W2BAGGEW.js.map → chunk-2ITZ74A6.js.map} +1 -1
  91. package/dist/{chunk-MY2BC6UE.js → chunk-2X6BGKQL.js} +11 -11
  92. package/dist/{chunk-UEBDCMOO.js → chunk-3TSU662L.js} +3 -3
  93. package/dist/{chunk-XAB6STPO.js → chunk-46XR5FNZ.js} +53 -3
  94. package/dist/chunk-46XR5FNZ.js.map +1 -0
  95. package/dist/{chunk-FP7YTTVO.js → chunk-4OFKZAJG.js} +2 -1
  96. package/dist/chunk-4OFKZAJG.js.map +1 -0
  97. package/dist/{chunk-S5XOSTYM.js → chunk-4XLTUR6R.js} +3 -3
  98. package/dist/{chunk-BWGCOLEL.js → chunk-65JOGLIS.js} +2 -2
  99. package/dist/{chunk-HMZKGHMD.js → chunk-7UOXCCCI.js} +3 -3
  100. package/dist/{chunk-7WOWGRAU.js → chunk-AF5H7TKI.js} +108 -23
  101. package/dist/chunk-AF5H7TKI.js.map +1 -0
  102. package/dist/{chunk-7BDZTALN.js → chunk-AJTG3CP7.js} +12 -2
  103. package/dist/chunk-AJTG3CP7.js.map +1 -0
  104. package/dist/{chunk-2LWQSV6A.js → chunk-AL3UYZ5N.js} +3 -2
  105. package/dist/chunk-AL3UYZ5N.js.map +1 -0
  106. package/dist/{chunk-4F4AQFWL.js → chunk-B4AOWRYF.js} +10 -10
  107. package/dist/{chunk-ODU2CNNX.js → chunk-C5IUOBCN.js} +2 -2
  108. package/dist/{chunk-3A2NJP2U.js → chunk-CHGG74CY.js} +3 -3
  109. package/dist/{chunk-76DIF5KT.js → chunk-CX4OLNIH.js} +2 -2
  110. package/dist/{chunk-Z3YEGSR4.js → chunk-D3UXGE5D.js} +10 -10
  111. package/dist/{chunk-5HK3CJAR.js → chunk-D6Q5EPOV.js} +2 -2
  112. package/dist/{chunk-EGBDFJ36.js → chunk-DD5JFCWM.js} +2 -2
  113. package/dist/{chunk-XBGHAAKR.js → chunk-DDX6KIXF.js} +2 -2
  114. package/dist/{chunk-JIYDRBVZ.js → chunk-DJORULH3.js} +2 -2
  115. package/dist/{chunk-7KQB4EBS.js → chunk-DUAJKRR2.js} +2 -2
  116. package/dist/{chunk-XDL5CYZN.js → chunk-EEOUMG3J.js} +2 -1
  117. package/dist/{chunk-XDL5CYZN.js.map → chunk-EEOUMG3J.js.map} +1 -1
  118. package/dist/{chunk-Q57GOHLF.js → chunk-EGALNSZ4.js} +3 -3
  119. package/dist/{chunk-DPCXDG7G.js → chunk-EH65UV2Z.js} +2 -2
  120. package/dist/{chunk-KCT36JAW.js → chunk-ESNFSSO4.js} +2 -2
  121. package/dist/{chunk-XQ3HXAQH.js → chunk-ET2CNMLD.js} +4 -4
  122. package/dist/{chunk-TUHBYJXL.js → chunk-EWKVYCFP.js} +1 -1
  123. package/dist/{chunk-NPFUNWNX.js → chunk-FFUMTH27.js} +2 -2
  124. package/dist/{chunk-3PKAS6VL.js → chunk-GAJK3DQ5.js} +2 -2
  125. package/dist/{chunk-DA7ITC5Z.js → chunk-GBEOUCBB.js} +2 -2
  126. package/dist/{chunk-UENKPWCS.js → chunk-H2IRSXZN.js} +6 -6
  127. package/dist/{chunk-CFVTRUR3.js → chunk-H6RSANGQ.js} +2 -2
  128. package/dist/chunk-HVAEXYPL.js +98 -0
  129. package/dist/chunk-HVAEXYPL.js.map +1 -0
  130. package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
  131. package/dist/{chunk-3SZD4CYO.js → chunk-IGZCAHFL.js} +3 -3
  132. package/dist/{chunk-UPFNQJC7.js → chunk-INUBU6I5.js} +2 -2
  133. package/dist/{chunk-PMVPCZJZ.js → chunk-J2R275FN.js} +3 -3
  134. package/dist/{chunk-UW5NPZJ2.js → chunk-JALOAKSZ.js} +59 -7
  135. package/dist/chunk-JALOAKSZ.js.map +1 -0
  136. package/dist/{chunk-2QSZNTDO.js → chunk-JBPKEARU.js} +7 -7
  137. package/dist/{chunk-3BCULS4U.js → chunk-JKTV3JNX.js} +145 -507
  138. package/dist/chunk-JKTV3JNX.js.map +1 -0
  139. package/dist/{chunk-5ACCD4L7.js → chunk-JRRQ747T.js} +7 -7
  140. package/dist/{chunk-V4IDF3EZ.js → chunk-JTWZKNUH.js} +5 -5
  141. package/dist/{chunk-AZMLH5UT.js → chunk-KI64TTBL.js} +2 -2
  142. package/dist/{chunk-DEACDKE3.js → chunk-KJXCD7VR.js} +112 -87
  143. package/dist/chunk-KJXCD7VR.js.map +1 -0
  144. package/dist/chunk-LJABGXC4.js +267 -0
  145. package/dist/chunk-LJABGXC4.js.map +1 -0
  146. package/dist/{chunk-NPIBN2VL.js → chunk-LK4TOYPU.js} +2 -2
  147. package/dist/{chunk-UTQUEHC7.js → chunk-LUDBXTBJ.js} +8 -8
  148. package/dist/{chunk-PU56CXZA.js → chunk-LYUUA6QB.js} +2 -2
  149. package/dist/{chunk-P36Z4JRA.js → chunk-M5ERTI4I.js} +2 -2
  150. package/dist/{chunk-LDKPDODJ.js → chunk-ME35HVDJ.js} +2 -2
  151. package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
  152. package/dist/{chunk-OXRRJXPR.js → chunk-MUEGIKKY.js} +476 -1796
  153. package/dist/chunk-MUEGIKKY.js.map +1 -0
  154. package/dist/{chunk-AHPIFKNG.js → chunk-N4F7ZSSG.js} +2 -2
  155. package/dist/{chunk-JOZUBF4A.js → chunk-NACLNNFQ.js} +2 -2
  156. package/dist/{chunk-LC2BDILZ.js → chunk-NBP4EX5N.js} +2 -2
  157. package/dist/{chunk-T7XP6IZE.js → chunk-NFP4KPTA.js} +2 -2
  158. package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
  159. package/dist/{chunk-LPNCR4QK.js → chunk-NSTNGMSS.js} +14 -14
  160. package/dist/{chunk-5RWZH6PH.js → chunk-NUF7VSEX.js} +2 -2
  161. package/dist/{chunk-7VZFRUQU.js → chunk-O7ERGZDA.js} +5 -5
  162. package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
  163. package/dist/{chunk-5DHKCO52.js → chunk-OJUEUQDJ.js} +2 -2
  164. package/dist/{chunk-LOXHYCVS.js → chunk-OMX6TKXH.js} +2 -2
  165. package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
  166. package/dist/{chunk-SEEJOGQX.js → chunk-QBNE55VA.js} +4 -4
  167. package/dist/chunk-QJCWK2A7.js +1466 -0
  168. package/dist/chunk-QJCWK2A7.js.map +1 -0
  169. package/dist/{chunk-YEUXERJ6.js → chunk-RDGKVH6T.js} +7 -3
  170. package/dist/{chunk-YEUXERJ6.js.map → chunk-RDGKVH6T.js.map} +1 -1
  171. package/dist/{chunk-JYSN42VN.js → chunk-RPIS5FQ7.js} +237 -183
  172. package/dist/chunk-RPIS5FQ7.js.map +1 -0
  173. package/dist/{chunk-F7XUD3PL.js → chunk-S4CDUXQY.js} +2 -2
  174. package/dist/{chunk-WNXYT4MK.js → chunk-S4Z2OBTX.js} +4 -4
  175. package/dist/{chunk-UL4MKZHI.js → chunk-SN4JXNLL.js} +2 -2
  176. package/dist/{chunk-CAMNRAJF.js → chunk-SZMYGDSM.js} +2 -2
  177. package/dist/chunk-TB2MJRI6.js +866 -0
  178. package/dist/chunk-TB2MJRI6.js.map +1 -0
  179. package/dist/{chunk-XNWXSGHS.js → chunk-TBCDF556.js} +28 -10
  180. package/dist/chunk-TBCDF556.js.map +1 -0
  181. package/dist/{chunk-LKYIOCWL.js → chunk-TCF4MU7L.js} +967 -132
  182. package/dist/chunk-TCF4MU7L.js.map +1 -0
  183. package/dist/chunk-TCQRIIIN.js +202 -0
  184. package/dist/chunk-TCQRIIIN.js.map +1 -0
  185. package/dist/{chunk-7PHI6GUI.js → chunk-TEZ2HTC7.js} +42 -2
  186. package/dist/chunk-TEZ2HTC7.js.map +1 -0
  187. package/dist/{chunk-CPA5NBHN.js → chunk-TNGH4ZYI.js} +2 -2
  188. package/dist/{chunk-F3NVYTTA.js → chunk-TNXNECAN.js} +6 -6
  189. package/dist/{chunk-BEC4YBNA.js → chunk-TVW4C7PV.js} +2 -2
  190. package/dist/{chunk-UFKPQBXH.js → chunk-U62OK7BB.js} +2 -2
  191. package/dist/{chunk-KZIF6XHX.js → chunk-U65VJSCJ.js} +32 -19
  192. package/dist/chunk-U65VJSCJ.js.map +1 -0
  193. package/dist/{chunk-4QEYREAV.js → chunk-U6NGKS32.js} +8 -8
  194. package/dist/{chunk-HRHO3ZNG.js → chunk-UW4RYPWC.js} +2 -2
  195. package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
  196. package/dist/chunk-UYA36DQ7.js.map +1 -0
  197. package/dist/{chunk-T6ILXUAH.js → chunk-VG4SSPAW.js} +2 -2
  198. package/dist/chunk-VOSWUO3K.js +100 -0
  199. package/dist/chunk-VOSWUO3K.js.map +1 -0
  200. package/dist/chunk-WFCWP4XU.js +17 -0
  201. package/dist/chunk-WFCWP4XU.js.map +1 -0
  202. package/dist/{chunk-H2YSH3DG.js → chunk-WKAXBXVA.js} +2 -2
  203. package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
  204. package/dist/{chunk-UNUMFURP.js → chunk-X5PIDJ3L.js} +3 -3
  205. package/dist/{chunk-CRML27CO.js → chunk-X5YYSAZX.js} +4 -4
  206. package/dist/{chunk-FZEEWOI2.js → chunk-XJJYSX6F.js} +2 -2
  207. package/dist/{chunk-U7EW2W4W.js → chunk-XKNHFDTT.js} +26 -6
  208. package/dist/chunk-XKNHFDTT.js.map +1 -0
  209. package/dist/{chunk-OA2O2GJ4.js → chunk-XOHYGIWF.js} +3 -3
  210. package/dist/{chunk-UG6VXIOK.js → chunk-XSTNGNJP.js} +2 -2
  211. package/dist/{chunk-MINHJ55X.js → chunk-XXW32OL7.js} +1 -1
  212. package/dist/{chunk-MINHJ55X.js.map → chunk-XXW32OL7.js.map} +1 -1
  213. package/dist/{chunk-YDPAE2RD.js → chunk-YFLLGRXO.js} +2 -2
  214. package/dist/{chunk-MDD2RINF.js → chunk-YWPLOJ7T.js} +3 -3
  215. package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
  216. package/dist/{chunk-GTO56JY5.js → chunk-ZPS724LT.js} +2 -2
  217. package/dist/{chunk-SNOIKAHM.js → chunk-ZZZWEDF4.js} +3 -3
  218. package/dist/{cli-O3F-ht3i.d.ts → cli-CsfFMe6n.d.ts} +5 -5
  219. package/dist/cli.d.ts +13 -14
  220. package/dist/cli.js +101 -96
  221. package/dist/coding/export-okf-codegraph.d.ts +56 -0
  222. package/dist/coding/export-okf-codegraph.js +526 -0
  223. package/dist/coding/export-okf-codegraph.js.map +1 -0
  224. package/dist/coding/pre-action-gate.d.ts +1 -2
  225. package/dist/compounding/engine.d.ts +2 -3
  226. package/dist/compounding/engine.js +29 -29
  227. package/dist/compounding/preference-consolidator.d.ts +1 -2
  228. package/dist/compression-optimizer.d.ts +1 -2
  229. package/dist/config.d.ts +1 -2
  230. package/dist/config.js +11 -11
  231. package/dist/connectors/codex-materialize-runner.d.ts +1 -2
  232. package/dist/connectors/codex-materialize-runner.js +28 -28
  233. package/dist/connectors/codex-materialize.d.ts +1 -2
  234. package/dist/connectors/index.d.ts +1 -2
  235. package/dist/connectors/index.js +28 -28
  236. package/dist/consolidation-provenance-check.d.ts +2 -3
  237. package/dist/consolidation-provenance-check.js +4 -4
  238. package/dist/consolidation-undo.d.ts +2 -3
  239. package/dist/consolidation-undo.js +3 -3
  240. package/dist/contradiction/index.d.ts +3 -4
  241. package/dist/contradiction/index.js +9 -9
  242. package/dist/{contradiction-scan-AKUWPX5N.js → contradiction-scan-NOYMFG66.js} +3 -3
  243. package/dist/converge-config.d.ts +1 -2
  244. package/dist/convergence-refresh.d.ts +2 -3
  245. package/dist/convergence-refresh.js +30 -30
  246. package/dist/conversation-index/backend.d.ts +1 -2
  247. package/dist/conversation-index/backend.js +2 -2
  248. package/dist/conversation-index/chunker.d.ts +1 -2
  249. package/dist/conversation-index/faiss-adapter.d.ts +1 -2
  250. package/dist/conversation-index/indexer.d.ts +1 -2
  251. package/dist/conversation-index/search.d.ts +1 -2
  252. package/dist/corpus-watermark.d.ts +1 -2
  253. package/dist/corpus-watermark.js +30 -30
  254. package/dist/cross-lingual-recall.d.ts +1 -2
  255. package/dist/day-summary.d.ts +1 -2
  256. package/dist/delinearize.d.ts +1 -2
  257. package/dist/dependency-propagation-config.d.ts +1 -2
  258. package/dist/{dependency-propagation-delivery-CL6RWXTA.d.ts → dependency-propagation-delivery-D4WMbOwA.d.ts} +1 -1
  259. package/dist/direct-answer-wiring.d.ts +1 -2
  260. package/dist/direct-answer.d.ts +1 -2
  261. package/dist/embedding-fallback.d.ts +1 -2
  262. package/dist/enrichment/index.d.ts +1 -2
  263. package/dist/entity-origin-fields.d.ts +1 -2
  264. package/dist/entity-retrieval.d.ts +2 -3
  265. package/dist/entity-retrieval.js +28 -28
  266. package/dist/entity-schema.d.ts +1 -2
  267. package/dist/episodic-context.d.ts +1 -2
  268. package/dist/eval-trajectory-contracts.d.ts +1 -2
  269. package/dist/eval-trajectory-store.d.ts +1 -2
  270. package/dist/eval-trajectory.d.ts +1 -2
  271. package/dist/explicit-capture.d.ts +9 -10
  272. package/dist/explicit-capture.js +11 -11
  273. package/dist/external-wiki-access.d.ts +11 -12
  274. package/dist/external-wiki-access.js +55 -52
  275. package/dist/external-wiki-collection-registration.d.ts +1 -2
  276. package/dist/external-wiki-collection.d.ts +1 -2
  277. package/dist/external-wiki-mcp-tools.d.ts +11 -12
  278. package/dist/extraction-error-classification.d.ts +1 -2
  279. package/dist/extraction-faithfulness.d.ts +1 -2
  280. package/dist/extraction-faithfulness.js +2 -2
  281. package/dist/extraction-judge-telemetry.d.ts +1 -2
  282. package/dist/extraction-judge-training.d.ts +1 -2
  283. package/dist/extraction-judge.d.ts +1 -2
  284. package/dist/extraction-judge.js +2 -2
  285. package/dist/extraction-liveness.d.ts +1 -2
  286. package/dist/extraction-normalization.d.ts +1 -2
  287. package/dist/extraction-prompt.d.ts +1 -2
  288. package/dist/extraction-source-grounding-rules.d.ts +1 -2
  289. package/dist/extraction-source-grounding.d.ts +1 -2
  290. package/dist/extraction.d.ts +1 -2
  291. package/dist/extraction.js +37 -34
  292. package/dist/fallback-llm.d.ts +7 -2
  293. package/dist/fallback-llm.js +1 -1
  294. package/dist/{first-start-migration-4NETATFF.js → first-start-migration-KHIMCBIC.js} +3 -3
  295. package/dist/graph-dashboard-diff.d.ts +1 -2
  296. package/dist/graph-dashboard-key.d.ts +1 -2
  297. package/dist/graph-dashboard-parser.d.ts +1 -2
  298. package/dist/graph-edge-reinforcement.d.ts +1 -2
  299. package/dist/graph-path-reconstruction.d.ts +1 -2
  300. package/dist/graph-path-scoring.d.ts +1 -2
  301. package/dist/graph-snapshot.d.ts +1 -2
  302. package/dist/graph.d.ts +1 -2
  303. package/dist/harmonic-retrieval.js +1 -1
  304. package/dist/importance.d.ts +1 -2
  305. package/dist/importers/index.d.ts +1 -2
  306. package/dist/in-flight-reads.d.ts +1 -2
  307. package/dist/{index-C7Xep6S9.d.ts → index-DuJnzwHv.d.ts} +2 -2
  308. package/dist/index.d.ts +364 -26
  309. package/dist/index.js +232 -169
  310. package/dist/intent.d.ts +1 -2
  311. package/dist/lcm/engine.d.ts +1 -2
  312. package/dist/lcm/engine.js +4 -4
  313. package/dist/lcm/index.d.ts +1 -2
  314. package/dist/lcm/index.js +10 -10
  315. package/dist/lcm/tools.d.ts +1 -2
  316. package/dist/lifecycle.d.ts +1 -2
  317. package/dist/live-connectors-runner.d.ts +1 -2
  318. package/dist/local-llm.d.ts +1 -2
  319. package/dist/local-model-endpoint.d.ts +1 -2
  320. package/dist/location/index.d.ts +315 -6
  321. package/dist/location/index.js +151 -19
  322. package/dist/maintenance/memory-governance.d.ts +1 -2
  323. package/dist/maintenance/memory-governance.js +28 -28
  324. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -3
  325. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -28
  326. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -3
  327. package/dist/maintenance/rebuild-memory-projection.js +29 -29
  328. package/dist/{maintenance-CJ-xqFp0.d.ts → maintenance-BBeaeYRR.d.ts} +3 -3
  329. package/dist/mcp-memory-inspector-app.d.ts +11 -12
  330. package/dist/mcp-read-only-tools.js +1 -1
  331. package/dist/memory-action-policy.d.ts +1 -2
  332. package/dist/memory-cache.d.ts +1 -2
  333. package/dist/memory-controller.d.ts +1 -2
  334. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -2
  335. package/dist/memory-projection-mutations.js +3 -3
  336. package/dist/memory-projection-store.d.ts +1 -2
  337. package/dist/memory-projection-store.js +1 -1
  338. package/dist/memory-provenance.d.ts +1 -2
  339. package/dist/memory-snapshot.d.ts +1 -2
  340. package/dist/memory-subject-cli.d.ts +11 -12
  341. package/dist/memory-subject.d.ts +11 -12
  342. package/dist/memory-subject.js +4 -4
  343. package/dist/memory-worth-outcomes.d.ts +2 -3
  344. package/dist/models-json.d.ts +1 -2
  345. package/dist/namespaces/migrate.d.ts +3 -4
  346. package/dist/namespaces/migrate.js +29 -29
  347. package/dist/namespaces/principal.d.ts +1 -2
  348. package/dist/namespaces/search.d.ts +1 -2
  349. package/dist/namespaces/search.js +8 -8
  350. package/dist/namespaces/storage.d.ts +3 -4
  351. package/dist/namespaces/storage.js +28 -28
  352. package/dist/native-knowledge.d.ts +1 -2
  353. package/dist/offline-sync-file-io.js +3 -3
  354. package/dist/offline-sync-impression-drain.d.ts +1 -2
  355. package/dist/offline-sync-impression-drain.js +9 -9
  356. package/dist/offline-sync.js +4 -4
  357. package/dist/operator-doctor-corpus.d.ts +1 -2
  358. package/dist/operator-doctor-corpus.js +31 -31
  359. package/dist/operator-doctor-replica.d.ts +1 -2
  360. package/dist/operator-toolkit.d.ts +3 -4
  361. package/dist/operator-toolkit.js +47 -47
  362. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
  363. package/dist/orchestration/maintenance.d.ts +4 -5
  364. package/dist/orchestration/maintenance.js +42 -41
  365. package/dist/{orchestrator-BsntWxLy.d.ts → orchestrator-CaqnwNwM.d.ts} +8 -8
  366. package/dist/orchestrator.d.ts +9 -10
  367. package/dist/orchestrator.js +132 -125
  368. package/dist/page-versioning.js +3 -3
  369. package/dist/patterns-cli.d.ts +1 -2
  370. package/dist/{pipeline-CVoysPm2.d.ts → pipeline-CrxVjlJr.d.ts} +1 -1
  371. package/dist/policy-runtime.d.ts +1 -2
  372. package/dist/proactive-contention.d.ts +1 -2
  373. package/dist/provenance.d.ts +1 -2
  374. package/dist/{public-http-CuOxlTC2.d.ts → public-http-Cwvl4QZr.d.ts} +1 -1
  375. package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
  376. package/dist/{qmd-DWMAGA5l.d.ts → qmd-BZgbJm0g.d.ts} +1 -1
  377. package/dist/qmd-preflight.d.ts +2 -3
  378. package/dist/qmd-recall-cache.d.ts +1 -2
  379. package/dist/qmd.d.ts +2 -3
  380. package/dist/recall-concurrency-config.d.ts +1 -2
  381. package/dist/recall-deep.d.ts +37 -0
  382. package/dist/recall-deep.js +81 -0
  383. package/dist/recall-deep.js.map +1 -0
  384. package/dist/recall-disclosure-escalation.d.ts +1 -2
  385. package/dist/recall-explain-renderer.d.ts +1 -2
  386. package/dist/recall-explain-renderer.js +3 -3
  387. package/dist/recall-memory-map.d.ts +1 -2
  388. package/dist/recall-navigate.d.ts +70 -0
  389. package/dist/recall-navigate.js +51 -0
  390. package/dist/recall-navigate.js.map +1 -0
  391. package/dist/recall-planner-llm.d.ts +1 -2
  392. package/dist/recall-planner-llm.js +1 -1
  393. package/dist/recall-state-view-wire.d.ts +14 -0
  394. package/dist/recall-state-view-wire.js +11 -0
  395. package/dist/recall-state-view.d.ts +25 -0
  396. package/dist/recall-state-view.js +22 -0
  397. package/dist/recall-state-view.js.map +1 -0
  398. package/dist/recall-state.d.ts +1 -2
  399. package/dist/recall-tag-filter.d.ts +1 -2
  400. package/dist/recall-timings.d.ts +1 -2
  401. package/dist/recall-xray-cli.d.ts +1 -2
  402. package/dist/recall-xray-cli.js +4 -4
  403. package/dist/recall-xray-renderer.d.ts +1 -2
  404. package/dist/recall-xray-renderer.js +3 -3
  405. package/dist/recall-xray.d.ts +1 -2
  406. package/dist/recall-xray.js +2 -2
  407. package/dist/reconcile/cursor.d.ts +1 -2
  408. package/dist/reconcile/manifest.d.ts +1 -2
  409. package/dist/reconcile/manifest.js +4 -4
  410. package/dist/reconcile/plan.d.ts +1 -2
  411. package/dist/replay/normalizers/chatgpt.d.ts +1 -2
  412. package/dist/replay/normalizers/claude.d.ts +1 -2
  413. package/dist/replay/normalizers/openclaw.d.ts +1 -2
  414. package/dist/replay/normalizers/shared.d.ts +1 -2
  415. package/dist/replay/runner.d.ts +1 -2
  416. package/dist/replay/types.d.ts +1 -2
  417. package/dist/replica-divergence.d.ts +1 -2
  418. package/dist/replica-peers-config.d.ts +1 -2
  419. package/dist/{resolution-XWBPKYFB.js → resolution-4DLI3IOR.js} +10 -10
  420. package/dist/resolution-4DLI3IOR.js.map +1 -0
  421. package/dist/resolve-auth-token.d.ts +1 -2
  422. package/dist/resume-bundles.js +12 -12
  423. package/dist/retrieval-agents.d.ts +2 -3
  424. package/dist/retrieval-tiers.d.ts +1 -2
  425. package/dist/routing/engine.d.ts +1 -2
  426. package/dist/routing/store.d.ts +1 -2
  427. package/dist/salvage-envelope.d.ts +1 -2
  428. package/dist/salvage-envelope.js +6 -6
  429. package/dist/schemas.d.ts +570 -105
  430. package/dist/schemas.js +3 -1
  431. package/dist/{scope-profiles-CPWkW_dI.d.ts → scope-profiles-DFaojvoP.d.ts} +1 -1
  432. package/dist/search/document-scanner.js +1 -1
  433. package/dist/search/embed-helper.d.ts +1 -2
  434. package/dist/search/factory.d.ts +1 -2
  435. package/dist/search/factory.js +7 -7
  436. package/dist/search/index.d.ts +1 -2
  437. package/dist/search/index.js +13 -13
  438. package/dist/search/lancedb-backend.d.ts +1 -2
  439. package/dist/search/lancedb-backend.js +1 -1
  440. package/dist/search/meilisearch-backend.d.ts +1 -2
  441. package/dist/search/meilisearch-backend.js +1 -1
  442. package/dist/search/noop-backend.d.ts +1 -2
  443. package/dist/search/orama-backend.d.ts +1 -2
  444. package/dist/search/orama-backend.js +1 -1
  445. package/dist/search/port.d.ts +1 -2
  446. package/dist/search/remote-backend.d.ts +1 -2
  447. package/dist/secure-store/index.js +3 -3
  448. package/dist/{semantic-consolidation-CNFVBXFc.d.ts → semantic-consolidation-BiX68wZA.d.ts} +1 -1
  449. package/dist/semantic-consolidation.d.ts +2 -3
  450. package/dist/semantic-consolidation.js +29 -29
  451. package/dist/semantic-rule-promotion.js +28 -28
  452. package/dist/semantic-rule-verifier.d.ts +1 -2
  453. package/dist/semantic-rule-verifier.js +28 -28
  454. package/dist/{service-Bb-JIdQ0.d.ts → service-D5h2zZ0M.d.ts} +2 -2
  455. package/dist/session-observer-bands.d.ts +1 -2
  456. package/dist/session-observer-state.d.ts +1 -2
  457. package/dist/shared-context/manager.d.ts +1 -2
  458. package/dist/signal.d.ts +1 -2
  459. package/dist/source-agent-qualifier.d.ts +1 -2
  460. package/dist/source-agent-qualifier.js +35 -32
  461. package/dist/standup/build.d.ts +16 -0
  462. package/dist/standup/build.js +17 -0
  463. package/dist/standup/build.js.map +1 -0
  464. package/dist/{storage-CukrlNKk.d.ts → storage-CtsaojWD.d.ts} +1 -1
  465. package/dist/storage.d.ts +2 -3
  466. package/dist/storage.js +27 -27
  467. package/dist/subject-config.d.ts +1 -2
  468. package/dist/subject-config.js +5 -5
  469. package/dist/summarizer.d.ts +1 -2
  470. package/dist/summarizer.js +2 -2
  471. package/dist/summary-snapshot.d.ts +1 -2
  472. package/dist/support-passport/index.d.ts +16 -17
  473. package/dist/support-passport/index.js +57 -54
  474. package/dist/temporal-supersession.d.ts +2 -3
  475. package/dist/temporal-timeline-recall.d.ts +1 -2
  476. package/dist/temporal-validity.d.ts +1 -2
  477. package/dist/threading.d.ts +1 -2
  478. package/dist/tier-migration.d.ts +2 -3
  479. package/dist/tier-routing.d.ts +1 -2
  480. package/dist/tier-routing.js +2 -2
  481. package/dist/{tier-stats-4B5IJ3NE.js → tier-stats-2TOW3QNL.js} +3 -3
  482. package/dist/topics.d.ts +1 -2
  483. package/dist/transcript.d.ts +1 -2
  484. package/dist/transfer/capsule-import.js +4 -4
  485. package/dist/transfer/export-okf.d.ts +39 -0
  486. package/dist/transfer/export-okf.js +112 -0
  487. package/dist/transfer/export-okf.js.map +1 -0
  488. package/dist/trust-score-stage.d.ts +1 -2
  489. package/dist/trust-score.d.ts +1 -2
  490. package/dist/{types-djxQlxJ7.d.ts → types-CIpfYz1I.d.ts} +132 -12
  491. package/dist/types.d.ts +1 -2
  492. package/dist/types.js +1 -1
  493. package/dist/utility-runtime.d.ts +1 -2
  494. package/dist/verified-recall.js +28 -28
  495. package/dist/who-knows-cli.d.ts +11 -12
  496. package/dist/who-knows-cli.js +29 -29
  497. package/dist/who-knows.d.ts +11 -12
  498. package/dist/who-knows.js +28 -28
  499. package/dist/write-envelope.d.ts +1 -2
  500. package/dist/write-envelope.js +5 -5
  501. package/package.json +34 -3
  502. package/src/access-admin-ops-surface.ts +6 -1
  503. package/src/access-boundary.ts +1 -0
  504. package/src/access-http.ts +3 -1
  505. package/src/access-mcp-output-schemas.ts +1 -0
  506. package/src/access-mcp.ts +3 -3
  507. package/src/access-operations.ts +1 -0
  508. package/src/access-service-offline-file-content.test.ts +63 -0
  509. package/src/access-surface-catalog.ts +2 -0
  510. package/src/activity/config.test.ts +1 -0
  511. package/src/activity/config.ts +66 -1
  512. package/src/activity/index.ts +3 -0
  513. package/src/activity/journal.test.ts +97 -0
  514. package/src/activity/journal.ts +113 -0
  515. package/src/activity/privacy.test.ts +53 -0
  516. package/src/activity/privacy.ts +80 -0
  517. package/src/activity/timeline/build.ts +279 -0
  518. package/src/activity/timeline/categories.ts +111 -0
  519. package/src/activity/timeline/classify.ts +110 -0
  520. package/src/activity/timeline/corrections.ts +145 -0
  521. package/src/activity/timeline/index.ts +8 -0
  522. package/src/activity/timeline/journal-recap.test.ts +113 -0
  523. package/src/activity/timeline/journal-recap.ts +130 -0
  524. package/src/activity/timeline/query.test.ts +198 -0
  525. package/src/activity/timeline/query.ts +313 -0
  526. package/src/activity/timeline/timeline.test.ts +277 -0
  527. package/src/activity/timeline/types.ts +106 -0
  528. package/src/activity/timeline/weekly.test.ts +215 -0
  529. package/src/activity/timeline/weekly.ts +234 -0
  530. package/src/activity/types.ts +20 -0
  531. package/src/activity/vault-publish.test.ts +166 -0
  532. package/src/activity/vault-publish.ts +101 -0
  533. package/src/cli/okf-commands.ts +45 -0
  534. package/src/cli.ts +2 -2
  535. package/src/coding/export-okf-codegraph.test.ts +381 -0
  536. package/src/coding/export-okf-codegraph.ts +565 -0
  537. package/src/config.test.ts +1 -0
  538. package/src/config.ts +2 -22
  539. package/src/dedup/merge-on-write.test.ts +91 -0
  540. package/src/dedup/merge-on-write.ts +75 -0
  541. package/src/dedup/novelty-gate.test.ts +143 -0
  542. package/src/dedup/novelty-gate.ts +163 -0
  543. package/src/extraction-prompt-safety.test.ts +14 -2
  544. package/src/extraction.ts +21 -1
  545. package/src/fallback-llm.test.ts +134 -0
  546. package/src/fallback-llm.ts +77 -5
  547. package/src/location/access-operations.ts +17 -8
  548. package/src/location/backfill.ts +137 -0
  549. package/src/location/config.test.ts +3 -0
  550. package/src/location/config.ts +46 -2
  551. package/src/location/http-glue.ts +1 -1
  552. package/src/location/index.ts +3 -0
  553. package/src/location/intervals.ts +1 -0
  554. package/src/location/matching.test.ts +65 -0
  555. package/src/location/matching.ts +354 -0
  556. package/src/location/mcp-tools.ts +2 -1
  557. package/src/location/recall-exclusion.test.ts +1 -0
  558. package/src/location/surfaces.test.ts +15 -2
  559. package/src/location/surfaces.ts +95 -18
  560. package/src/location/tagging.test.ts +119 -0
  561. package/src/location/tagging.ts +277 -0
  562. package/src/location/types.ts +23 -1
  563. package/src/mcp-read-only-tools.ts +1 -0
  564. package/src/memory-projection-store.ts +3 -1
  565. package/src/okf/cli.ts +18 -5
  566. package/src/okf/config.ts +5 -0
  567. package/src/okf/index-files.test.ts +60 -0
  568. package/src/okf/index-files.ts +114 -0
  569. package/src/okf/render.ts +133 -0
  570. package/src/okf/type-mapping.test.ts +3 -0
  571. package/src/okf/type-mapping.ts +2 -0
  572. package/src/orchestration/extraction-persist.ts +22 -23
  573. package/src/orchestration/extraction-run.ts +2 -1
  574. package/src/orchestration/generic-recall-paths.ts +15 -3
  575. package/src/orchestration/recall-entry.ts +8 -3
  576. package/src/recall-deep.test.ts +72 -0
  577. package/src/recall-deep.ts +113 -0
  578. package/src/recall-navigate.test.ts +84 -0
  579. package/src/recall-navigate.ts +100 -0
  580. package/src/recall-state-view-wire.test.ts +35 -0
  581. package/src/recall-state-view-wire.ts +28 -0
  582. package/src/recall-state-view.test.ts +131 -0
  583. package/src/recall-state-view.ts +138 -0
  584. package/src/schemas.ts +17 -1
  585. package/src/shared-context/governance.test.ts +53 -0
  586. package/src/shared-context/governance.ts +86 -0
  587. package/src/standup/access-operations.ts +14 -0
  588. package/src/standup/build.test.ts +34 -0
  589. package/src/standup/build.ts +115 -0
  590. package/src/standup/http-glue.ts +15 -0
  591. package/src/standup/mcp-tools.ts +16 -0
  592. package/src/support-passport/card-projection.ts +1 -0
  593. package/src/support-passport/card-service-commit-forwarding.test.ts +1 -0
  594. package/src/support-passport/card-service.test.ts +75 -1
  595. package/src/support-passport/card-service.ts +6 -3
  596. package/src/support-passport/card-state.ts +5 -1
  597. package/src/support-passport/offline-sync-guard.ts +14 -1
  598. package/src/transfer/export-okf.test.ts +164 -0
  599. package/src/transfer/export-okf.ts +286 -0
  600. package/src/types.ts +3 -10
  601. package/dist/chunk-2LWQSV6A.js.map +0 -1
  602. package/dist/chunk-3BCULS4U.js.map +0 -1
  603. package/dist/chunk-7BDZTALN.js.map +0 -1
  604. package/dist/chunk-7PHI6GUI.js.map +0 -1
  605. package/dist/chunk-7WOWGRAU.js.map +0 -1
  606. package/dist/chunk-AX7UXCHJ.js.map +0 -1
  607. package/dist/chunk-DEACDKE3.js.map +0 -1
  608. package/dist/chunk-FP7YTTVO.js.map +0 -1
  609. package/dist/chunk-JYSN42VN.js.map +0 -1
  610. package/dist/chunk-KZIF6XHX.js.map +0 -1
  611. package/dist/chunk-LKYIOCWL.js.map +0 -1
  612. package/dist/chunk-OXRRJXPR.js.map +0 -1
  613. package/dist/chunk-U7EW2W4W.js.map +0 -1
  614. package/dist/chunk-UW5NPZJ2.js.map +0 -1
  615. package/dist/chunk-XAB6STPO.js.map +0 -1
  616. package/dist/chunk-XNWXSGHS.js.map +0 -1
  617. package/dist/types-CM86alG1.d.ts +0 -89
  618. /package/dist/{auto-sync-2YPITIWN.js.map → auto-sync-Q6Q2FVSC.js.map} +0 -0
  619. /package/dist/{capsule-merge-SGIVB3WA.js.map → capsule-merge-SEHERWWP.js.map} +0 -0
  620. /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
  621. /package/dist/{chunk-TFR3HG4K.js.map → chunk-2FA7U5XY.js.map} +0 -0
  622. /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
  623. /package/dist/{chunk-MY2BC6UE.js.map → chunk-2X6BGKQL.js.map} +0 -0
  624. /package/dist/{chunk-UEBDCMOO.js.map → chunk-3TSU662L.js.map} +0 -0
  625. /package/dist/{chunk-S5XOSTYM.js.map → chunk-4XLTUR6R.js.map} +0 -0
  626. /package/dist/{chunk-BWGCOLEL.js.map → chunk-65JOGLIS.js.map} +0 -0
  627. /package/dist/{chunk-HMZKGHMD.js.map → chunk-7UOXCCCI.js.map} +0 -0
  628. /package/dist/{chunk-4F4AQFWL.js.map → chunk-B4AOWRYF.js.map} +0 -0
  629. /package/dist/{chunk-ODU2CNNX.js.map → chunk-C5IUOBCN.js.map} +0 -0
  630. /package/dist/{chunk-3A2NJP2U.js.map → chunk-CHGG74CY.js.map} +0 -0
  631. /package/dist/{chunk-76DIF5KT.js.map → chunk-CX4OLNIH.js.map} +0 -0
  632. /package/dist/{chunk-Z3YEGSR4.js.map → chunk-D3UXGE5D.js.map} +0 -0
  633. /package/dist/{chunk-5HK3CJAR.js.map → chunk-D6Q5EPOV.js.map} +0 -0
  634. /package/dist/{chunk-EGBDFJ36.js.map → chunk-DD5JFCWM.js.map} +0 -0
  635. /package/dist/{chunk-XBGHAAKR.js.map → chunk-DDX6KIXF.js.map} +0 -0
  636. /package/dist/{chunk-JIYDRBVZ.js.map → chunk-DJORULH3.js.map} +0 -0
  637. /package/dist/{chunk-7KQB4EBS.js.map → chunk-DUAJKRR2.js.map} +0 -0
  638. /package/dist/{chunk-Q57GOHLF.js.map → chunk-EGALNSZ4.js.map} +0 -0
  639. /package/dist/{chunk-DPCXDG7G.js.map → chunk-EH65UV2Z.js.map} +0 -0
  640. /package/dist/{chunk-KCT36JAW.js.map → chunk-ESNFSSO4.js.map} +0 -0
  641. /package/dist/{chunk-XQ3HXAQH.js.map → chunk-ET2CNMLD.js.map} +0 -0
  642. /package/dist/{chunk-TUHBYJXL.js.map → chunk-EWKVYCFP.js.map} +0 -0
  643. /package/dist/{chunk-NPFUNWNX.js.map → chunk-FFUMTH27.js.map} +0 -0
  644. /package/dist/{chunk-3PKAS6VL.js.map → chunk-GAJK3DQ5.js.map} +0 -0
  645. /package/dist/{chunk-DA7ITC5Z.js.map → chunk-GBEOUCBB.js.map} +0 -0
  646. /package/dist/{chunk-UENKPWCS.js.map → chunk-H2IRSXZN.js.map} +0 -0
  647. /package/dist/{chunk-CFVTRUR3.js.map → chunk-H6RSANGQ.js.map} +0 -0
  648. /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
  649. /package/dist/{chunk-3SZD4CYO.js.map → chunk-IGZCAHFL.js.map} +0 -0
  650. /package/dist/{chunk-UPFNQJC7.js.map → chunk-INUBU6I5.js.map} +0 -0
  651. /package/dist/{chunk-PMVPCZJZ.js.map → chunk-J2R275FN.js.map} +0 -0
  652. /package/dist/{chunk-2QSZNTDO.js.map → chunk-JBPKEARU.js.map} +0 -0
  653. /package/dist/{chunk-5ACCD4L7.js.map → chunk-JRRQ747T.js.map} +0 -0
  654. /package/dist/{chunk-V4IDF3EZ.js.map → chunk-JTWZKNUH.js.map} +0 -0
  655. /package/dist/{chunk-AZMLH5UT.js.map → chunk-KI64TTBL.js.map} +0 -0
  656. /package/dist/{chunk-NPIBN2VL.js.map → chunk-LK4TOYPU.js.map} +0 -0
  657. /package/dist/{chunk-UTQUEHC7.js.map → chunk-LUDBXTBJ.js.map} +0 -0
  658. /package/dist/{chunk-PU56CXZA.js.map → chunk-LYUUA6QB.js.map} +0 -0
  659. /package/dist/{chunk-P36Z4JRA.js.map → chunk-M5ERTI4I.js.map} +0 -0
  660. /package/dist/{chunk-LDKPDODJ.js.map → chunk-ME35HVDJ.js.map} +0 -0
  661. /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.js.map} +0 -0
  662. /package/dist/{chunk-AHPIFKNG.js.map → chunk-N4F7ZSSG.js.map} +0 -0
  663. /package/dist/{chunk-JOZUBF4A.js.map → chunk-NACLNNFQ.js.map} +0 -0
  664. /package/dist/{chunk-LC2BDILZ.js.map → chunk-NBP4EX5N.js.map} +0 -0
  665. /package/dist/{chunk-T7XP6IZE.js.map → chunk-NFP4KPTA.js.map} +0 -0
  666. /package/dist/{chunk-ZVPVTPGI.js.map → chunk-NNZFPYYX.js.map} +0 -0
  667. /package/dist/{chunk-LPNCR4QK.js.map → chunk-NSTNGMSS.js.map} +0 -0
  668. /package/dist/{chunk-5RWZH6PH.js.map → chunk-NUF7VSEX.js.map} +0 -0
  669. /package/dist/{chunk-7VZFRUQU.js.map → chunk-O7ERGZDA.js.map} +0 -0
  670. /package/dist/{chunk-HSZMX3ZJ.js.map → chunk-ODW5GDFE.js.map} +0 -0
  671. /package/dist/{chunk-5DHKCO52.js.map → chunk-OJUEUQDJ.js.map} +0 -0
  672. /package/dist/{chunk-LOXHYCVS.js.map → chunk-OMX6TKXH.js.map} +0 -0
  673. /package/dist/{chunk-J2WC5LF4.js.map → chunk-QBC33MPY.js.map} +0 -0
  674. /package/dist/{chunk-SEEJOGQX.js.map → chunk-QBNE55VA.js.map} +0 -0
  675. /package/dist/{chunk-F7XUD3PL.js.map → chunk-S4CDUXQY.js.map} +0 -0
  676. /package/dist/{chunk-WNXYT4MK.js.map → chunk-S4Z2OBTX.js.map} +0 -0
  677. /package/dist/{chunk-UL4MKZHI.js.map → chunk-SN4JXNLL.js.map} +0 -0
  678. /package/dist/{chunk-CAMNRAJF.js.map → chunk-SZMYGDSM.js.map} +0 -0
  679. /package/dist/{chunk-CPA5NBHN.js.map → chunk-TNGH4ZYI.js.map} +0 -0
  680. /package/dist/{chunk-F3NVYTTA.js.map → chunk-TNXNECAN.js.map} +0 -0
  681. /package/dist/{chunk-BEC4YBNA.js.map → chunk-TVW4C7PV.js.map} +0 -0
  682. /package/dist/{chunk-UFKPQBXH.js.map → chunk-U62OK7BB.js.map} +0 -0
  683. /package/dist/{chunk-4QEYREAV.js.map → chunk-U6NGKS32.js.map} +0 -0
  684. /package/dist/{chunk-HRHO3ZNG.js.map → chunk-UW4RYPWC.js.map} +0 -0
  685. /package/dist/{chunk-T6ILXUAH.js.map → chunk-VG4SSPAW.js.map} +0 -0
  686. /package/dist/{chunk-H2YSH3DG.js.map → chunk-WKAXBXVA.js.map} +0 -0
  687. /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
  688. /package/dist/{chunk-UNUMFURP.js.map → chunk-X5PIDJ3L.js.map} +0 -0
  689. /package/dist/{chunk-CRML27CO.js.map → chunk-X5YYSAZX.js.map} +0 -0
  690. /package/dist/{chunk-FZEEWOI2.js.map → chunk-XJJYSX6F.js.map} +0 -0
  691. /package/dist/{chunk-OA2O2GJ4.js.map → chunk-XOHYGIWF.js.map} +0 -0
  692. /package/dist/{chunk-UG6VXIOK.js.map → chunk-XSTNGNJP.js.map} +0 -0
  693. /package/dist/{chunk-YDPAE2RD.js.map → chunk-YFLLGRXO.js.map} +0 -0
  694. /package/dist/{chunk-MDD2RINF.js.map → chunk-YWPLOJ7T.js.map} +0 -0
  695. /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
  696. /package/dist/{chunk-GTO56JY5.js.map → chunk-ZPS724LT.js.map} +0 -0
  697. /package/dist/{chunk-SNOIKAHM.js.map → chunk-ZZZWEDF4.js.map} +0 -0
  698. /package/dist/{contradiction-scan-AKUWPX5N.js.map → contradiction-scan-NOYMFG66.js.map} +0 -0
  699. /package/dist/{first-start-migration-4NETATFF.js.map → first-start-migration-KHIMCBIC.js.map} +0 -0
  700. /package/dist/{purge-GB7PZHT2.js.map → purge-OP6BEDFY.js.map} +0 -0
  701. /package/dist/{resolution-XWBPKYFB.js.map → recall-state-view-wire.js.map} +0 -0
  702. /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
@@ -0,0 +1,114 @@
1
+ import { readdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
2
+ import path from "node:path";
3
+
4
+ import { writeFileAtomically } from "../maintenance/atomic-file.js";
5
+ import { normalizeProjectionPreview } from "../memory-projection-format.js";
6
+ import { OKF_RESERVED_BASENAMES } from "./type-mapping.js";
7
+
8
+ export const OKF_INDEX_MARKER = "<!-- remnic-okf-index -->";
9
+
10
+ const INDEXED_ROOTS = ["entities", "facts", "corrections", "summaries"] as const;
11
+
12
+ export interface OkfIndexReport {
13
+ written: string[];
14
+ removed: string[];
15
+ }
16
+
17
+ export async function runOkfIndexMaintenance(
18
+ memoryDir: string,
19
+ enabled: boolean,
20
+ ): Promise<OkfIndexReport> {
21
+ const written: string[] = [];
22
+ const removed: string[] = [];
23
+ const dirs = collectIndexDirs(memoryDir);
24
+ for (const dir of dirs) {
25
+ const indexPath = path.join(dir, "index.md");
26
+ if (!enabled) {
27
+ if (isGeneratedIndex(indexPath)) {
28
+ unlinkSync(indexPath);
29
+ removed.push(indexPath);
30
+ }
31
+ continue;
32
+ }
33
+ const next = renderIndex(dir);
34
+ if (next === null) continue;
35
+ if (isUnchangedGenerated(indexPath, next)) continue;
36
+ await writeFileAtomically(indexPath, next);
37
+ written.push(indexPath);
38
+ }
39
+ return { written, removed };
40
+ }
41
+
42
+ function collectIndexDirs(memoryDir: string): string[] {
43
+ const dirs = [memoryDir];
44
+ for (const root of INDEXED_ROOTS) {
45
+ const full = path.join(memoryDir, root);
46
+ if (!isDir(full)) continue;
47
+ dirs.push(full);
48
+ if (root === "facts") {
49
+ for (const entry of safeList(full)) {
50
+ const child = path.join(full, entry);
51
+ if (isDir(child) && /^\d{4}-\d{2}-\d{2}$/.test(entry)) dirs.push(child);
52
+ }
53
+ }
54
+ }
55
+ return dirs;
56
+ }
57
+
58
+ function renderIndex(dir: string): string | null {
59
+ const entries = safeList(dir)
60
+ .filter((name) => name.endsWith(".md") && OKF_RESERVED_BASENAMES[name] !== true)
61
+ .sort((a, b) => a.localeCompare(b));
62
+ if (entries.length === 0) return null;
63
+ const lines = [OKF_INDEX_MARKER, "", `# ${path.basename(dir)}`, ""];
64
+ for (const name of entries) {
65
+ const preview = previewFile(path.join(dir, name));
66
+ lines.push(`* [${titleFrom(name, preview)}](${name}) - ${preview}`);
67
+ }
68
+ lines.push("");
69
+ return lines.join("\n");
70
+ }
71
+
72
+ function previewFile(filePath: string): string {
73
+ try {
74
+ return normalizeProjectionPreview(readFileSync(filePath, "utf8"), 120);
75
+ } catch {
76
+ return "";
77
+ }
78
+ }
79
+
80
+ function titleFrom(name: string, preview: string): string {
81
+ return preview.split(" ").slice(0, 8).join(" ") || name.replace(/\.md$/, "");
82
+ }
83
+
84
+ function isGeneratedIndex(filePath: string): boolean {
85
+ try {
86
+ return readFileSync(filePath, "utf8").includes(OKF_INDEX_MARKER);
87
+ } catch {
88
+ return false;
89
+ }
90
+ }
91
+
92
+ function isUnchangedGenerated(filePath: string, next: string): boolean {
93
+ try {
94
+ return readFileSync(filePath, "utf8") === next;
95
+ } catch {
96
+ return false;
97
+ }
98
+ }
99
+
100
+ function isDir(dir: string): boolean {
101
+ try {
102
+ return statSync(dir).isDirectory();
103
+ } catch {
104
+ return false;
105
+ }
106
+ }
107
+
108
+ function safeList(dir: string): string[] {
109
+ try {
110
+ return readdirSync(dir);
111
+ } catch {
112
+ return [];
113
+ }
114
+ }
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Shared OKF bundle-rendering helpers (issues #1948 + #1950).
3
+ *
4
+ * One source of truth for the mechanics every OKF bundle exporter uses:
5
+ * deterministic frontmatter rendering, staging-directory file writes, the
6
+ * symlink-guarded atomic publish, and the bundle version stamp. The memory
7
+ * exporter (transfer/export-okf.ts) and the codegraph exporter
8
+ * (coding/export-okf-codegraph.ts) both consume this module so their
9
+ * bundles are byte-compatible in convention (rule 38 — deterministic
10
+ * rendering discipline; rule 9 — stable seam over shared mechanics).
11
+ */
12
+ import { lstatSync, mkdirSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
13
+ import path from "node:path";
14
+
15
+ /** OKF spec version emitted in every bundle root index. */
16
+ export const OKF_EXPORT_VERSION = "0.1";
17
+
18
+ /**
19
+ * Render a YAML frontmatter block from a flat field map.
20
+ *
21
+ * Key order: the canonical OKF keys first (`type`, `title`, `description`,
22
+ * `tags`, `timestamp`), everything else alphabetical — one deterministic
23
+ * layout so identical inputs always render byte-identical files. A key set
24
+ * to `undefined` is omitted; callers must not pass a key twice.
25
+ */
26
+ export function renderFrontmatter(fields: Record<string, unknown>): string {
27
+ const keys = Object.keys(fields).sort((a, b) => {
28
+ const order = ["type", "title", "description", "tags", "timestamp"];
29
+ const ai = order.indexOf(a);
30
+ const bi = order.indexOf(b);
31
+ if (ai >= 0 || bi >= 0) return (ai < 0 ? 99 : ai) - (bi < 0 ? 99 : bi);
32
+ return a.localeCompare(b);
33
+ });
34
+ const lines = keys.flatMap((key) => yamlLine(key, fields[key]));
35
+ return `---\n${lines.join("\n")}\n---\n\n`;
36
+ }
37
+
38
+ function yamlLine(key: string, value: unknown): string[] {
39
+ if (value === undefined) return [];
40
+ if (Array.isArray(value)) {
41
+ if (value.length === 0) return [`${key}: []`];
42
+ if (value.every((item) => typeof item !== "object" || item === null)) {
43
+ return [`${key}:`, ...value.map((item) => ` - ${yamlScalar(item)}`)];
44
+ }
45
+ return [`${key}: ${JSON.stringify(value)}`];
46
+ }
47
+ if (typeof value === "object" && value !== null) return [`${key}: ${JSON.stringify(value)}`];
48
+ return [`${key}: ${yamlScalar(value)}`];
49
+ }
50
+
51
+ function yamlScalar(value: unknown): string {
52
+ if (typeof value === "string") {
53
+ if (value === "" || /[:#\n]/.test(value) || value !== value.trim()) return JSON.stringify(value);
54
+ return value;
55
+ }
56
+ return String(value);
57
+ }
58
+
59
+ /**
60
+ * Write one file into a bundle staging tree. `rel` is a POSIX-style
61
+ * bundle-relative path; parent directories are created as needed.
62
+ */
63
+ export function writeBundleFile(root: string, rel: string, content: string): void {
64
+ const dest = path.join(root, ...rel.split("/"));
65
+ mkdirSync(path.dirname(dest), { recursive: true });
66
+ writeFileSync(dest, content, "utf8");
67
+ }
68
+
69
+ /**
70
+ * Publish a staged bundle: refuse a non-empty target without `--force`,
71
+ * swap via rename so the target is never observed half-written, and keep a
72
+ * restorable backup when replacing an existing tree.
73
+ */
74
+ export function publishBundle(staging: string, outDir: string, force: boolean): void {
75
+ let exists = false;
76
+ try {
77
+ const stat = lstatSync(outDir);
78
+ if (stat.isSymbolicLink()) throw new Error(`--out must not be a symlink: ${outDir}`);
79
+ exists = true;
80
+ const entries = readdirSync(outDir).filter((name) => name !== "." && name !== "..");
81
+ if (entries.length > 0 && !force) {
82
+ rmSync(staging, { recursive: true, force: true });
83
+ throw new Error(`--out ${outDir} is not empty; pass --force to replace it`);
84
+ }
85
+ } catch (err) {
86
+ if ((err as NodeJS.ErrnoException).code !== "ENOENT") throw err;
87
+ }
88
+ mkdirSync(path.dirname(outDir), { recursive: true });
89
+ if (exists && force) {
90
+ const backup = `${outDir}.okf-prev`;
91
+ try {
92
+ renameSync(outDir, backup);
93
+ } catch {
94
+ rmSync(staging, { recursive: true, force: true });
95
+ throw new Error(`cannot replace --out ${outDir}`);
96
+ }
97
+ try {
98
+ renameSync(staging, outDir);
99
+ rmSync(backup, { recursive: true, force: true });
100
+ } catch (err) {
101
+ try {
102
+ renameSync(backup, outDir);
103
+ } catch {
104
+ // Keep backup if restore fails.
105
+ }
106
+ throw err;
107
+ }
108
+ return;
109
+ }
110
+ renameSync(staging, outDir);
111
+ }
112
+
113
+ /**
114
+ * Reject a --out path with a symlink anywhere in its component chain
115
+ * (pattern 42 + hermes-shim precedent): a symlinked component could aim
116
+ * the atomic rename outside the operator's chosen directory.
117
+ */
118
+ export function rejectSymlinkPath(target: string): void {
119
+ let current = path.resolve(target);
120
+ while (true) {
121
+ try {
122
+ if (lstatSync(current).isSymbolicLink()) {
123
+ throw new Error(`--out path component is a symlink: ${current}`);
124
+ }
125
+ } catch (err) {
126
+ if ((err as NodeJS.ErrnoException).code !== "ENOENT") throw err;
127
+ }
128
+ const parent = path.dirname(current);
129
+ if (parent === current) break;
130
+ current = parent;
131
+ }
132
+ }
133
+
@@ -49,6 +49,7 @@ test("parseOkfConfig treats false as a real disable", () => {
49
49
  assert.deepEqual(parseOkfConfig({ conformanceEnabled: false, sweepEnabled: "false" }), {
50
50
  conformanceEnabled: false,
51
51
  sweepEnabled: false,
52
+ indexFilesEnabled: false,
52
53
  });
53
54
  assert.throws(() => parseOkfConfig("nope"), /okf must be an object/);
54
55
  });
@@ -164,6 +165,7 @@ test("runOkfCliCommand handles help and rejects unexpected tokens", async () =>
164
165
  memoryDir: "/tmp",
165
166
  conformanceEnabled: true,
166
167
  sweepEnabled: false,
168
+ indexFilesEnabled: false,
167
169
  });
168
170
  assert.equal(code, 0);
169
171
  assert.match(chunks.join(""), /usage: remnic okf/);
@@ -176,6 +178,7 @@ test("runOkfCliCommand handles help and rejects unexpected tokens", async () =>
176
178
  memoryDir: "/tmp",
177
179
  conformanceEnabled: true,
178
180
  sweepEnabled: false,
181
+ indexFilesEnabled: false,
179
182
  });
180
183
  assert.equal(code, 1);
181
184
  assert.match(errChunks.join(""), new RegExp(`unexpected argument '${token}'`));
@@ -57,6 +57,8 @@ export function okfTypeForEntityKind(kind: string | undefined): string {
57
57
  export const OKF_PROFILE_TYPE = "Profile";
58
58
  export const OKF_QUESTION_TYPE = "Question";
59
59
  export const OKF_DECISION_RECORD_TYPE = "Decision Record";
60
+ export const OKF_ARCHITECTURE_CARD_TYPE = "Architecture Card";
61
+ export const OKF_CODE_MODULE_TYPE = "Code Module";
60
62
 
61
63
  /**
62
64
  * OKF §6/§7 reserve `index.md` and `log.md` for bundle-level files with a
@@ -83,6 +83,7 @@ import {
83
83
  } from "../fallback-llm.js";
84
84
  import { EmbeddingFallback } from "../embedding-fallback.js";
85
85
  import { decideSemanticDedup, type SemanticDedupDecision, type SemanticDedupHit } from "../dedup/semantic.js";
86
+ import { applyNoveltyGate, embeddingsFromCosineHits } from "../dedup/novelty-gate.js";
86
87
  import { selectRouteRule, type RouteRule, type RoutingEngineOptions } from "../routing/engine.js";
87
88
  import { ThreadingManager } from "../threading.js";
88
89
  import { NamespaceStorageRouter } from "../namespaces/storage.js";
@@ -1919,26 +1920,24 @@ export class ExtractionPersistCoordinator {
1919
1920
  : undefined;
1920
1921
  const faithfulnessEnforceStatus = faithfulnessGateStatus ?? requireSpansPendingStatus ?? injectionScreenStatus;
1921
1922
 
1922
- // Issue #373 write-time semantic similarity guard. Hook runs after
1923
- // the exact content-hash miss and the importance gate so that:
1924
- // (a) paraphrased near-duplicates never reach writeMemory(), and
1925
- // (b) low-importance facts that will be dropped never trigger an
1926
- // embedding lookup (avoids unnecessary API latency/cost).
1927
- // Fails open when the embedding backend is unavailable.
1928
- //
1929
- // Defense in depth (PR #399 review): decideSemanticDedup already
1930
- // catches lookup errors internally, and the embedding fetch is
1931
- // bounded by a timeout in embedding-fallback.ts. We still wrap the
1932
- // whole call in its own try/catch here so that any unexpected
1933
- // rejection (future refactors, misbehaving custom backends, etc.)
1934
- // can never block the persist loop — a failure in the dedup path
1935
- // must always default to "not a duplicate".
1936
- // Track a pending semantic-skip decision (populated inside the block
1937
- // below). The actual drop happens AFTER contradiction detection so that
1938
- // a high-similarity update/correction is linked as a superseding
1939
- // contradiction rather than silently dropped.
1923
+ const novelty = await applyNoveltyGate({
1924
+ enabled: this.deps.config["noveltyGateEnabled"] === true,
1925
+ addThreshold: this.deps.config.noveltyAddThreshold,
1926
+ noopThreshold: this.deps.config.noveltyNoopThreshold,
1927
+ lookup: async () =>
1928
+ embeddingsFromCosineHits(
1929
+ await this.deps.semanticDedupLookup(
1930
+ fact.content,
1931
+ this.deps.config.semanticDedupCandidates,
1932
+ targetStorage,
1933
+ ),
1934
+ // Same connector scoping as decideSemanticDedup below: a
1935
+ // cross-connector neighbor must not noop this candidate.
1936
+ { candidateConnector: sourceContext?.sourceConnector },
1937
+ ),
1938
+ });
1940
1939
  let pendingSemanticSkip: (SemanticDedupDecision & { action: "skip" }) | null = null;
1941
- if (resolvePipelineProcessingCapabilities(this.deps.config).semanticDedup && injectionScreenStatus !== "pending_review") {
1940
+ if (novelty.decision !== "add" && resolvePipelineProcessingCapabilities(this.deps.config).semanticDedup && injectionScreenStatus !== "pending_review") {
1942
1941
  let semanticDecision: SemanticDedupDecision;
1943
1942
  // UUI2: skip embedding lookup for the rest of this batch once we know
1944
1943
  // the backend is unavailable. The flag is reset per-batch (set to false
@@ -2100,17 +2099,17 @@ export class ExtractionPersistCoordinator {
2100
2099
  // gate's contract is "persists with status: pending_review, never
2101
2100
  // silently dropped" (issue #1576).
2102
2101
  if (
2103
- pendingSemanticSkip &&
2102
+ (pendingSemanticSkip || novelty.decision === "noop") &&
2104
2103
  !contradictionDetected &&
2105
2104
  !isCorrection &&
2106
2105
  faithfulnessEnforceStatus !== "pending_review"
2107
2106
  ) {
2108
2107
  log.debug(
2109
- `dedup: skipping semantic near-duplicate fact "${fact.content
2108
+ `dedup: skipping ${pendingSemanticSkip ? "semantic near-duplicate" : "novelty-noop"} fact "${fact.content
2110
2109
  .slice(0, 60)
2111
- .replace(/\s+/g, " ")}…" score=${pendingSemanticSkip.topScore.toFixed(
2110
+ .replace(/\s+/g, " ")}…" score=${(pendingSemanticSkip?.topScore ?? novelty.score).toFixed(
2112
2111
  3,
2113
- )} neighbor=${pendingSemanticSkip.topId}`,
2112
+ )} neighbor=${pendingSemanticSkip?.topId ?? novelty.neighborId}`,
2114
2113
  );
2115
2114
  dedupedCount++;
2116
2115
  // Do NOT add fact.content to contentHashIndex here. No memory was
@@ -40,6 +40,7 @@ import {
40
40
  type MemoryLifecycleCapabilitySet,
41
41
  } from "../capabilities.js";
42
42
  import { parseFlexibleIsoTimestamp } from "../utils/iso-timestamp.js";
43
+ import { tagPersistedMemories } from "../location/tagging.js";
43
44
  import { log } from "../logger.js";
44
45
  import type { PluginConfig, BufferTurn, ExtractionResult, MetaState, ExtractionFailureClass } from "../types.js";
45
46
  import type { TierMigrationCycleSummary } from "../recall-state.js";
@@ -62,7 +63,6 @@ export class ExtractionDeadlineError extends Error {
62
63
  }
63
64
  }
64
65
 
65
-
66
66
  /** Dependencies injected by the orchestrator. All stable references or
67
67
  * live accessors — lazy getters for anything tests reassign
68
68
  * post-construction (buffer, extraction, storageRouter, threading). */
@@ -1090,6 +1090,7 @@ export class ExtractionRunCoordinator {
1090
1090
  log.warn("runExtraction: durable-commit callback failed", error);
1091
1091
  }
1092
1092
  const runPostPersistBestEffort = runExtractionPostPersistBestEffort.bind(null, runDeadlineAware);
1093
+ await tagPersistedMemories(storage, persistedIds, this.config);
1093
1094
  const postPersist = await runExtractionPostPersist({
1094
1095
  result,
1095
1096
  storage,
@@ -9,6 +9,9 @@ import {
9
9
  isLocationDayPath,
10
10
  isMeetingRecordPath,
11
11
  } from "./orchestrator-helpers.js";
12
+ import { isJournalDayPath } from "../activity/journal.js";
13
+ import { OKF_RESERVED_BASENAMES } from "../okf/type-mapping.js";
14
+
12
15
 
13
16
  export interface GenericRecallPathPolicy {
14
17
  readonly memoryDir?: string;
@@ -135,6 +138,7 @@ export function isSearchExcludedPath(
135
138
  isArtifactMemoryPath(candidate) ||
136
139
  isNamespacedActivityDigestPath(candidate, policy.memoryDir) ||
137
140
  isNamespacedLocationDayPath(candidate, policy.memoryDir) ||
141
+ isNamespacedJournalDayPath(candidate, policy.memoryDir) ||
138
142
  isMeetingRecordPath(candidate)
139
143
  ) {
140
144
  return true;
@@ -177,6 +181,15 @@ function isNamespacedLocationDayPath(candidate: string, memoryDir?: string): boo
177
181
  return isLocationDayPath(namespaced[2] ?? "", memoryDir);
178
182
  }
179
183
 
184
+ function isNamespacedJournalDayPath(candidate: string, memoryDir?: string): boolean {
185
+ if (isJournalDayPath(candidate, memoryDir)) return true;
186
+ if (memoryDir === undefined || memoryDir.length === 0) return false;
187
+ const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));
188
+ const namespaced = /^namespaces[\\/]([^\\/]+)[\\/](.*)$/.exec(relative);
189
+ if (namespaced === null) return false;
190
+ return isJournalDayPath(namespaced[2] ?? "", memoryDir);
191
+ }
192
+
180
193
  /** A path as given, plus its form with a leading COLLECTION segment removed. */
181
194
  function collectionSpellings(
182
195
  filePath: string,
@@ -230,9 +243,8 @@ export function isGenericRecallExcludedPath(
230
243
  ): boolean {
231
244
  return (
232
245
  isSearchExcludedPath(filePath, policy, source) ||
233
- // Recall-only: archived memories are cold, but an explicit search is one
234
- // of the surfaces they remain reachable through.
235
- isTopLevelArchivePath(filePath, policy, source)
246
+ isTopLevelArchivePath(filePath, policy, source) ||
247
+ OKF_RESERVED_BASENAMES[path.basename(filePath)] === true
236
248
  );
237
249
  }
238
250
 
@@ -20,6 +20,7 @@ import { ProfilingCollector } from "../profiling.js";
20
20
  import { trustResultFor, type TrustStageResultItem } from "../trust-score-stage.js";
21
21
  import type { RecallResultFormatter } from "./recall-result-formatter.js";
22
22
  import type { IdentityInjectionMode, PluginConfig, QmdSearchResult } from "../types.js";
23
+ import { applyRecallStateViews } from "../recall-state-view-wire.js";
23
24
 
24
25
  export interface RecallEntryDeps {
25
26
  appendRecallSection(
@@ -274,9 +275,13 @@ export class RecallEntryCoordinator {
274
275
  }): void {
275
276
  const sectionId = "memories";
276
277
  const trustByPath = options.trustByPath ?? null;
277
- const injectable = trustByPath
278
- ? options.results.filter((r) => !trustResultFor(trustByPath, r)?.quarantined)
279
- : options.results;
278
+ const injectable = applyRecallStateViews(
279
+ trustByPath
280
+ ? options.results.filter((r) => !trustResultFor(trustByPath, r)?.quarantined)
281
+ : options.results,
282
+ options.retrievalQuery,
283
+ this.deps.config,
284
+ );
280
285
  if (injectable.length === 0) return;
281
286
 
282
287
  const formatted = this.deps.recallResultFormatter.formatQmdResultEntries(
@@ -0,0 +1,72 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import {
5
+ runDeepRecall,
6
+ runDeepRecallStep,
7
+ type DeepRecallState,
8
+ } from "./recall-deep.js";
9
+
10
+ function seed(extra: Partial<DeepRecallState> = {}): DeepRecallState {
11
+ return {
12
+ query: "who met at the cafe",
13
+ workingSet: ["m-seed"],
14
+ frontier: ["m-b", "m-c"],
15
+ budget: 2,
16
+ ...extra,
17
+ };
18
+ }
19
+
20
+ test("budget 0 stops without calling the policy", () => {
21
+ const result = runDeepRecall(seed({ budget: 0 }), () => {
22
+ throw new Error("policy must not run when budget is 0");
23
+ });
24
+ assert.equal(result.trace.length, 1);
25
+ assert.equal(result.trace[0]?.action, "stop");
26
+ assert.equal(result.state.budget, 0);
27
+ assert.deepEqual(result.state.workingSet, ["m-seed"]);
28
+ assert.deepEqual(result.state.frontier, ["m-b", "m-c"]);
29
+ });
30
+
31
+ test("expand consumes budget and pulls the next frontier item", () => {
32
+ const result = runDeepRecallStep(seed({ budget: 2 }), "expand");
33
+ assert.equal(result.step.action, "expand");
34
+ assert.equal(result.state.budget, 1);
35
+ assert.deepEqual(result.state.workingSet, ["m-seed", "m-b"]);
36
+ assert.deepEqual(result.state.frontier, ["m-c"]);
37
+ });
38
+
39
+ test("stop ends while budget remains", () => {
40
+ let calls = 0;
41
+ const result = runDeepRecall(seed({ budget: 4 }), () => {
42
+ calls += 1;
43
+ return "stop";
44
+ });
45
+ assert.equal(calls, 1);
46
+ assert.equal(result.trace.length, 1);
47
+ assert.equal(result.trace[0]?.action, "stop");
48
+ assert.equal(result.state.budget, 4);
49
+ assert.deepEqual(result.state.workingSet, ["m-seed"]);
50
+ });
51
+
52
+ test("unknown action throws", () => {
53
+ assert.throws(() => runDeepRecallStep(seed(), "rewrite"), /unknown deep recall action/);
54
+ assert.throws(
55
+ () => runDeepRecall(seed(), () => "rewrite"),
56
+ /unknown deep recall action/,
57
+ );
58
+ });
59
+
60
+ test("same state and policy produce the same trace", () => {
61
+ const policy = (state: DeepRecallState) => (state.budget > 1 ? "expand" : "refine");
62
+ const start = seed({ budget: 3, frontier: ["m-z", "m-a"] });
63
+ const first = runDeepRecall(start, policy);
64
+ const second = runDeepRecall(start, policy);
65
+ assert.deepEqual(first, second);
66
+ assert.deepEqual(
67
+ first.trace.map((step) => step.action),
68
+ ["expand", "expand", "refine", "stop"],
69
+ );
70
+ assert.equal(start.budget, 3);
71
+ assert.deepEqual(start.frontier, ["m-z", "m-a"]);
72
+ });
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Budgeted REFINE/EXPAND/STOP loop (issue #2332 first slice).
3
+ *
4
+ * Pure state stepper. Policy is injected. No LLM, no orchestrator recall,
5
+ * no IO. Surfaces and parseConfig wait for a later PR — config.ts is at
6
+ * its fileSizeGrandfather ceiling.
7
+ *
8
+ * Budget 0 stops without calling the policy. Unknown actions throw.
9
+ */
10
+ export const DEEP_RECALL_ACTIONS = ["refine", "expand", "stop"] as const;
11
+
12
+ export type DeepRecallAction = (typeof DEEP_RECALL_ACTIONS)[number];
13
+
14
+ export interface DeepRecallState {
15
+ query: string;
16
+ workingSet: readonly string[];
17
+ frontier: readonly string[];
18
+ budget: number;
19
+ }
20
+
21
+ export interface DeepRecallTraceStep {
22
+ action: DeepRecallAction;
23
+ budget: number;
24
+ workingSet: readonly string[];
25
+ frontier: readonly string[];
26
+ }
27
+
28
+ export interface DeepRecallStepResult {
29
+ state: DeepRecallState;
30
+ step: DeepRecallTraceStep;
31
+ }
32
+
33
+ export interface DeepRecallResult {
34
+ state: DeepRecallState;
35
+ trace: readonly DeepRecallTraceStep[];
36
+ }
37
+
38
+ export type DeepRecallPolicy = (state: DeepRecallState) => string;
39
+
40
+ export function isDeepRecallAction(value: unknown): value is DeepRecallAction {
41
+ return typeof value === "string" && (DEEP_RECALL_ACTIONS as readonly string[]).includes(value);
42
+ }
43
+
44
+ function snapshot(state: DeepRecallState): DeepRecallState {
45
+ return {
46
+ query: state.query,
47
+ workingSet: [...state.workingSet],
48
+ frontier: [...state.frontier],
49
+ budget: state.budget,
50
+ };
51
+ }
52
+
53
+ export function runDeepRecallStep(state: DeepRecallState, action: string): DeepRecallStepResult {
54
+ if (!isDeepRecallAction(action)) {
55
+ throw new Error(
56
+ `unknown deep recall action: ${JSON.stringify(action)}. Valid: ${DEEP_RECALL_ACTIONS.join(", ")}`,
57
+ );
58
+ }
59
+ if (!Number.isFinite(state.budget) || state.budget <= 0 || action === "stop") {
60
+ const stopped = snapshot(state);
61
+ return {
62
+ state: stopped,
63
+ step: {
64
+ action: "stop",
65
+ budget: stopped.budget,
66
+ workingSet: stopped.workingSet,
67
+ frontier: stopped.frontier,
68
+ },
69
+ };
70
+ }
71
+
72
+ const next = snapshot(state);
73
+ next.budget = state.budget - 1;
74
+ if (action === "expand") {
75
+ const [head, ...rest] = next.frontier;
76
+ if (head !== undefined && !next.workingSet.includes(head)) {
77
+ next.workingSet = [...next.workingSet, head];
78
+ }
79
+ next.frontier = rest;
80
+ }
81
+ return {
82
+ state: next,
83
+ step: {
84
+ action,
85
+ budget: next.budget,
86
+ workingSet: next.workingSet,
87
+ frontier: next.frontier,
88
+ },
89
+ };
90
+ }
91
+
92
+ export function runDeepRecall(state: DeepRecallState, policy: DeepRecallPolicy): DeepRecallResult {
93
+ const trace: DeepRecallTraceStep[] = [];
94
+ let current = snapshot(state);
95
+ while (true) {
96
+ if (!Number.isFinite(current.budget) || current.budget <= 0) {
97
+ const stopped = snapshot(current);
98
+ trace.push({
99
+ action: "stop",
100
+ budget: stopped.budget,
101
+ workingSet: stopped.workingSet,
102
+ frontier: stopped.frontier,
103
+ });
104
+ return { state: stopped, trace };
105
+ }
106
+ const stepped = runDeepRecallStep(current, policy(current));
107
+ trace.push(stepped.step);
108
+ current = stepped.state;
109
+ if (stepped.step.action === "stop") {
110
+ return { state: current, trace };
111
+ }
112
+ }
113
+ }