@remnic/core 9.69.75 → 9.69.77

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 (324) hide show
  1. package/dist/access-admin-ops-surface.js +45 -45
  2. package/dist/access-authorization-probe.js +46 -46
  3. package/dist/access-boundary.js +45 -45
  4. package/dist/access-cli.js +113 -113
  5. package/dist/access-extraction-force-flush.js +45 -45
  6. package/dist/access-http-briefing.js +46 -46
  7. package/dist/access-http-query.js +47 -47
  8. package/dist/access-http.js +65 -65
  9. package/dist/access-identity-continuity-surface.js +45 -45
  10. package/dist/access-lcm-surface.js +45 -45
  11. package/dist/access-mcp.js +55 -55
  12. package/dist/access-namespace-preflight.js +45 -45
  13. package/dist/access-observe-write-category.js +8 -8
  14. package/dist/access-observe-write-surface.js +45 -45
  15. package/dist/access-offline-manifest.js +5 -5
  16. package/dist/access-operations-batch.js +46 -46
  17. package/dist/access-operations.js +53 -53
  18. package/dist/access-recall-concurrency.js +45 -45
  19. package/dist/access-recall-diagnostics.js +2 -2
  20. package/dist/access-recall-response.js +45 -45
  21. package/dist/access-recall-surface.js +45 -45
  22. package/dist/access-schema.js +5 -5
  23. package/dist/access-service.js +45 -45
  24. package/dist/access-surface-catalog.js +47 -47
  25. package/dist/active-recall.js +15 -14
  26. package/dist/active-recall.js.map +1 -1
  27. package/dist/adapters/index.js +4 -4
  28. package/dist/adapters/registry.js +2 -2
  29. package/dist/{auto-sync-QJNIKZHV.js → auto-sync-WEUDMXUW.js} +4 -4
  30. package/dist/briefing-followup-timeout.d.ts +3 -0
  31. package/dist/briefing-followup-timeout.d.ts.map +1 -0
  32. package/dist/briefing-followup-timeout.js +10 -0
  33. package/dist/briefing.d.ts.map +1 -1
  34. package/dist/briefing.js +12 -10
  35. package/dist/buffer.js +6 -6
  36. package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-GWVG7LGC.js} +2 -2
  37. package/dist/capsule-crypto-GWVG7LGC.js.map +1 -0
  38. package/dist/causal-consolidation.js +12 -11
  39. package/dist/causal-consolidation.js.map +1 -1
  40. package/dist/{chunk-O4QH33GV.js → chunk-2CH6MMO2.js} +6 -6
  41. package/dist/{chunk-VXNWOHOR.js → chunk-2GKLHU2D.js} +2 -2
  42. package/dist/{chunk-MB3HMRXM.js → chunk-2I6VHX6Q.js} +2 -2
  43. package/dist/{chunk-LVFI5LG7.js → chunk-2L5FSNPC.js} +5 -5
  44. package/dist/{chunk-U3NBO4IX.js → chunk-345MEMRU.js} +132 -37
  45. package/dist/chunk-345MEMRU.js.map +1 -0
  46. package/dist/{chunk-6BSPRNFF.js → chunk-3AGCSD42.js} +2 -2
  47. package/dist/{chunk-IGSVMAPQ.js → chunk-3K3PITOE.js} +2 -2
  48. package/dist/{chunk-ZUT4FK5W.js → chunk-5ELENZTA.js} +2 -2
  49. package/dist/{chunk-NF6LF76X.js → chunk-5X7ZTLFS.js} +2 -2
  50. package/dist/{chunk-S52VKUUW.js → chunk-6DTJBTHL.js} +3 -3
  51. package/dist/{chunk-LH6UP5SR.js → chunk-6MJGDUC7.js} +3 -3
  52. package/dist/{chunk-YYRMOMX3.js → chunk-7DZHRPCO.js} +2 -2
  53. package/dist/{chunk-SB4ZWVKI.js → chunk-7G6WUOLB.js} +4 -6
  54. package/dist/{chunk-SB4ZWVKI.js.map → chunk-7G6WUOLB.js.map} +1 -1
  55. package/dist/{chunk-LDOURFFA.js → chunk-7QXTCONH.js} +2 -2
  56. package/dist/{chunk-HPK66ZM5.js → chunk-7WO66MKJ.js} +2 -2
  57. package/dist/{chunk-ODP62HIA.js → chunk-A2XDQ3JW.js} +2 -2
  58. package/dist/{chunk-TY5JOP2W.js → chunk-ALOMLIRC.js} +84 -69
  59. package/dist/chunk-ALOMLIRC.js.map +1 -0
  60. package/dist/{chunk-MSRNAAWW.js → chunk-AVO2CBIL.js} +2 -2
  61. package/dist/{chunk-B5EZWPSM.js → chunk-AZ2X5LNA.js} +2 -2
  62. package/dist/{chunk-3NTVCMDD.js → chunk-B3OFQP5Y.js} +2 -2
  63. package/dist/chunk-B3OFQP5Y.js.map +1 -0
  64. package/dist/{chunk-IGEZE6QB.js → chunk-BMYZTZ5D.js} +4 -4
  65. package/dist/{chunk-XDOXR3U6.js → chunk-BNPLDVM6.js} +2 -2
  66. package/dist/{chunk-7JFQI6DQ.js → chunk-BOUFVFV2.js} +2 -2
  67. package/dist/{chunk-VDX2J7OX.js → chunk-BUKK5SWA.js} +2 -2
  68. package/dist/{chunk-KMHE76A2.js → chunk-CDEI5S5W.js} +2 -2
  69. package/dist/{chunk-UJX4I26O.js → chunk-CLSYE5OZ.js} +2 -2
  70. package/dist/{chunk-WDBKDYK2.js → chunk-CYCE3L2I.js} +46 -46
  71. package/dist/{chunk-GZBNEZIU.js → chunk-DBYAY6UW.js} +3 -3
  72. package/dist/{chunk-HZDOLAZV.js → chunk-DCPAAAIC.js} +2 -2
  73. package/dist/{chunk-6JA22L5X.js → chunk-DSQWTXHP.js} +8 -8
  74. package/dist/{chunk-WQC54W25.js → chunk-EJPF6XDQ.js} +2 -2
  75. package/dist/{chunk-CGO3A7SR.js → chunk-EVBI7S4J.js} +3 -3
  76. package/dist/{chunk-OB2YI57R.js → chunk-FMT52ROU.js} +43 -43
  77. package/dist/{chunk-62AE2EUZ.js → chunk-FVK5NQ3V.js} +2 -2
  78. package/dist/{chunk-3SL52JKD.js → chunk-FZVROZKC.js} +5 -5
  79. package/dist/{chunk-ZVTG7JTG.js → chunk-GARVFCV6.js} +2 -2
  80. package/dist/{chunk-Y52T5Y6B.js → chunk-GATQP7CE.js} +2 -2
  81. package/dist/{chunk-7COBZFUF.js → chunk-GXQ5GDUH.js} +2 -2
  82. package/dist/chunk-GZFKCLRC.js +17 -0
  83. package/dist/chunk-GZFKCLRC.js.map +1 -0
  84. package/dist/{chunk-VVX5PZFS.js → chunk-H36X4NRH.js} +2 -2
  85. package/dist/{chunk-2VH2JWYN.js → chunk-I4G4UWQA.js} +2 -2
  86. package/dist/{chunk-6OACG7JV.js → chunk-IBGEHKQ6.js} +3 -3
  87. package/dist/{chunk-BXCZPPRO.js → chunk-IILMR37Z.js} +16 -16
  88. package/dist/{chunk-X2PBZOYZ.js → chunk-IP5VLSLO.js} +2 -2
  89. package/dist/{chunk-IXLHREAB.js → chunk-IVH7INFM.js} +3 -3
  90. package/dist/{chunk-D4SPMHEW.js → chunk-JLPNONPH.js} +2 -2
  91. package/dist/{chunk-AEGQ5PJ7.js → chunk-JX6USXZR.js} +2 -2
  92. package/dist/{chunk-SA2JMMMS.js → chunk-K2SXIWEV.js} +2 -2
  93. package/dist/{chunk-VEBYLZQQ.js → chunk-KN6CIN7I.js} +2 -2
  94. package/dist/{chunk-WZKKI6S2.js → chunk-LEP46X5Y.js} +2 -2
  95. package/dist/{chunk-5UBH37SL.js → chunk-LI76ESJL.js} +4 -4
  96. package/dist/{chunk-AQJBFLUA.js → chunk-LZLJK2IA.js} +5 -5
  97. package/dist/{chunk-5LWVTSF7.js → chunk-MOQPEFLN.js} +4 -4
  98. package/dist/{chunk-6BFW7SGF.js → chunk-MQQPONTM.js} +2 -2
  99. package/dist/{chunk-5KNEOYTF.js → chunk-NGFRFDSK.js} +2 -2
  100. package/dist/{chunk-B6PY25JB.js → chunk-NHV6WCM5.js} +1 -1
  101. package/dist/{chunk-S5FWSNLI.js → chunk-NYZRJW5X.js} +2 -2
  102. package/dist/{chunk-JOMGKV72.js → chunk-OHRIBMSS.js} +2 -2
  103. package/dist/{chunk-YMSPN4W4.js → chunk-OJ3TV57W.js} +12 -7
  104. package/dist/chunk-OJ3TV57W.js.map +1 -0
  105. package/dist/{chunk-BXLOS5AJ.js → chunk-OWHERGF2.js} +2 -2
  106. package/dist/{chunk-F5O6WEDO.js → chunk-PWF4JXKD.js} +1 -1
  107. package/dist/chunk-PWF4JXKD.js.map +1 -0
  108. package/dist/{chunk-KPSJA45G.js → chunk-QIDMGBUY.js} +2 -2
  109. package/dist/{chunk-MKNENZCK.js → chunk-QJAGDPY7.js} +3 -3
  110. package/dist/{chunk-VIRTAUJO.js → chunk-RDUM6BKQ.js} +2 -2
  111. package/dist/{chunk-I6Y6QKWF.js → chunk-RGX4DGOG.js} +2 -2
  112. package/dist/{chunk-OMYCECTS.js → chunk-RJLV4BKR.js} +2 -2
  113. package/dist/{chunk-LBL77UXO.js → chunk-RKTT72XV.js} +4 -4
  114. package/dist/{chunk-AWEMJYN2.js → chunk-RMG22TH2.js} +2 -2
  115. package/dist/{chunk-GH5YSAAI.js → chunk-RRMIACBG.js} +11 -10
  116. package/dist/chunk-RRMIACBG.js.map +1 -0
  117. package/dist/{chunk-4GPI3GVE.js → chunk-SLEAJ67D.js} +5 -5
  118. package/dist/{chunk-YR6A6ZK7.js → chunk-SSUDD72S.js} +2 -2
  119. package/dist/{chunk-WDP7CJZQ.js → chunk-SUSMEKBE.js} +4 -4
  120. package/dist/{chunk-YZENVZWY.js → chunk-TY446V34.js} +2 -2
  121. package/dist/{chunk-PIG4WJFQ.js → chunk-UHESJ6TQ.js} +2 -2
  122. package/dist/{chunk-PIG4WJFQ.js.map → chunk-UHESJ6TQ.js.map} +1 -1
  123. package/dist/{chunk-YCYFXA6P.js → chunk-UKB7ZDKK.js} +2 -2
  124. package/dist/{chunk-DQEMWVMT.js → chunk-UVYI6VIX.js} +1 -1
  125. package/dist/{chunk-YF3JERFZ.js → chunk-VL4X7ZHC.js} +2 -2
  126. package/dist/{chunk-COHJUEBQ.js → chunk-WGXWZE3K.js} +2 -2
  127. package/dist/{chunk-ZHOXXHT5.js → chunk-WQZZDN5M.js} +4 -4
  128. package/dist/{chunk-25LKLNSJ.js → chunk-X33QB7LW.js} +2 -2
  129. package/dist/{chunk-JDES3G7T.js → chunk-X3NZ2HAO.js} +2 -2
  130. package/dist/{chunk-Q4AUIFUA.js → chunk-XAITGGX5.js} +4 -4
  131. package/dist/{chunk-5HP5F2SQ.js → chunk-XNYTMLPS.js} +3 -3
  132. package/dist/{chunk-UFBHEMNR.js → chunk-YL273SOF.js} +2 -2
  133. package/dist/{chunk-ZPED47SP.js → chunk-YUAOU2B2.js} +19 -25
  134. package/dist/chunk-YUAOU2B2.js.map +1 -0
  135. package/dist/{chunk-GFD7TWAZ.js → chunk-ZWWF7PI5.js} +4 -4
  136. package/dist/{chunk-5LPDXYU3.js → chunk-ZYBLNHUB.js} +5 -5
  137. package/dist/cli.js +85 -85
  138. package/dist/coding/export-okf-codegraph.js +11 -10
  139. package/dist/coding/export-okf-codegraph.js.map +1 -1
  140. package/dist/compounding/engine.js +11 -10
  141. package/dist/config-qmd.js +1 -1
  142. package/dist/config.d.ts.map +1 -1
  143. package/dist/config.js +15 -14
  144. package/dist/connectors/codex-materialize-runner.js +11 -10
  145. package/dist/connectors/index.js +11 -10
  146. package/dist/convergence-refresh.js +13 -13
  147. package/dist/corpus-watermark.js +13 -12
  148. package/dist/deep-recall-http-glue.js +6 -6
  149. package/dist/directory-sidecars.d.ts +3 -0
  150. package/dist/directory-sidecars.d.ts.map +1 -1
  151. package/dist/directory-sidecars.js +7 -4
  152. package/dist/entity-retrieval.js +11 -10
  153. package/dist/external-wiki-access.js +46 -46
  154. package/dist/extraction-span-materialize.js +2 -2
  155. package/dist/extraction.js +19 -19
  156. package/dist/{first-start-migration-7OATHJKB.js → first-start-migration-GAT7G733.js} +4 -4
  157. package/dist/harmonic-retrieval.js +1 -1
  158. package/dist/index.js +171 -171
  159. package/dist/lcm/engine.js +2 -2
  160. package/dist/lcm/index.js +5 -5
  161. package/dist/location/index.js +14 -14
  162. package/dist/maintenance/memory-governance.js +11 -10
  163. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +11 -11
  164. package/dist/maintenance/rebuild-memory-projection.js +12 -12
  165. package/dist/memory-browse-operations.js +46 -46
  166. package/dist/memory-browse.js +5 -6
  167. package/dist/namespaces/migrate.js +12 -11
  168. package/dist/namespaces/search.js +5 -5
  169. package/dist/namespaces/storage.js +11 -10
  170. package/dist/offline-sync-impression-drain.js +2 -2
  171. package/dist/offline-sync.js +2 -2
  172. package/dist/operator-doctor-corpus.js +14 -13
  173. package/dist/operator-toolkit.js +24 -23
  174. package/dist/orchestration/maintenance.js +20 -20
  175. package/dist/orchestration/recall-recognition-search.d.ts +1 -0
  176. package/dist/orchestration/recall-recognition-search.d.ts.map +1 -1
  177. package/dist/orchestration/recall-search-pipeline.d.ts.map +1 -1
  178. package/dist/orchestrator.d.ts.map +1 -1
  179. package/dist/orchestrator.js +114 -114
  180. package/dist/qmd.d.ts +1 -1
  181. package/dist/qmd.d.ts.map +1 -1
  182. package/dist/qmd.js +1 -1
  183. package/dist/recall-explain-renderer.js +3 -3
  184. package/dist/recall-navigate-access.js +2 -2
  185. package/dist/recall-navigate-disclosure.js +2 -2
  186. package/dist/recall-navigate.js +2 -2
  187. package/dist/recall-navigation-operations.js +46 -46
  188. package/dist/recall-navigation.js +45 -45
  189. package/dist/recall-state-view-admission.js +5 -6
  190. package/dist/recall-state.js +2 -2
  191. package/dist/recall-why-service.js +5 -6
  192. package/dist/recall-xray-cli.js +4 -4
  193. package/dist/recall-xray-renderer.js +3 -3
  194. package/dist/recall-xray.js +2 -2
  195. package/dist/resume-bundles.js +16 -15
  196. package/dist/search/factory.js +4 -4
  197. package/dist/search/index.js +8 -8
  198. package/dist/semantic-consolidation.js +12 -11
  199. package/dist/semantic-rule-promotion.js +11 -10
  200. package/dist/semantic-rule-verifier.js +11 -10
  201. package/dist/source-agent-qualifier.js +15 -15
  202. package/dist/standup/build.js +11 -10
  203. package/dist/storage.d.ts +1 -19
  204. package/dist/storage.d.ts.map +1 -1
  205. package/dist/storage.js +10 -9
  206. package/dist/support-passport/index.js +48 -48
  207. package/dist/transfer/backup.js +2 -2
  208. package/dist/transfer/capsule-export.js +2 -2
  209. package/dist/transfer/capsule-import.js +2 -2
  210. package/dist/transfer/export-okf.js +12 -11
  211. package/dist/types.d.ts +3 -3
  212. package/dist/types.d.ts.map +1 -1
  213. package/dist/types.js +1 -1
  214. package/dist/verified-recall.js +11 -10
  215. package/dist/who-knows-cli.js +12 -11
  216. package/dist/who-knows.js +11 -10
  217. package/package.json +2 -2
  218. package/src/briefing-followup-timeout.test.ts +15 -0
  219. package/src/briefing-followup-timeout.ts +14 -0
  220. package/src/briefing.ts +8 -9
  221. package/src/config-qmd.ts +1 -1
  222. package/src/config.test.ts +2 -2
  223. package/src/config.ts +3 -4
  224. package/src/directory-sidecars-config.test.ts +34 -0
  225. package/src/directory-sidecars.test.ts +36 -1
  226. package/src/directory-sidecars.ts +41 -7
  227. package/src/orchestration/recall-internal.ts +1 -1
  228. package/src/orchestration/recall-recognition-search.test.ts +8 -0
  229. package/src/orchestration/recall-recognition-search.ts +5 -1
  230. package/src/orchestration/recall-search-pipeline.ts +5 -7
  231. package/src/orchestrator.ts +8 -0
  232. package/src/qmd.ts +4 -4
  233. package/src/recall-budget-config.test.ts +1 -1
  234. package/src/storage.ts +13 -22
  235. package/src/types.ts +3 -3
  236. package/dist/chunk-3NTVCMDD.js.map +0 -1
  237. package/dist/chunk-F5O6WEDO.js.map +0 -1
  238. package/dist/chunk-GH5YSAAI.js.map +0 -1
  239. package/dist/chunk-PCEYGOSL.js +0 -66
  240. package/dist/chunk-PCEYGOSL.js.map +0 -1
  241. package/dist/chunk-TY5JOP2W.js.map +0 -1
  242. package/dist/chunk-U3NBO4IX.js.map +0 -1
  243. package/dist/chunk-YMSPN4W4.js.map +0 -1
  244. package/dist/chunk-ZPED47SP.js.map +0 -1
  245. /package/dist/{auto-sync-QJNIKZHV.js.map → auto-sync-WEUDMXUW.js.map} +0 -0
  246. /package/dist/{capsule-crypto-YO5QJ6L3.js.map → briefing-followup-timeout.js.map} +0 -0
  247. /package/dist/{chunk-O4QH33GV.js.map → chunk-2CH6MMO2.js.map} +0 -0
  248. /package/dist/{chunk-VXNWOHOR.js.map → chunk-2GKLHU2D.js.map} +0 -0
  249. /package/dist/{chunk-MB3HMRXM.js.map → chunk-2I6VHX6Q.js.map} +0 -0
  250. /package/dist/{chunk-LVFI5LG7.js.map → chunk-2L5FSNPC.js.map} +0 -0
  251. /package/dist/{chunk-6BSPRNFF.js.map → chunk-3AGCSD42.js.map} +0 -0
  252. /package/dist/{chunk-IGSVMAPQ.js.map → chunk-3K3PITOE.js.map} +0 -0
  253. /package/dist/{chunk-ZUT4FK5W.js.map → chunk-5ELENZTA.js.map} +0 -0
  254. /package/dist/{chunk-NF6LF76X.js.map → chunk-5X7ZTLFS.js.map} +0 -0
  255. /package/dist/{chunk-S52VKUUW.js.map → chunk-6DTJBTHL.js.map} +0 -0
  256. /package/dist/{chunk-LH6UP5SR.js.map → chunk-6MJGDUC7.js.map} +0 -0
  257. /package/dist/{chunk-YYRMOMX3.js.map → chunk-7DZHRPCO.js.map} +0 -0
  258. /package/dist/{chunk-LDOURFFA.js.map → chunk-7QXTCONH.js.map} +0 -0
  259. /package/dist/{chunk-HPK66ZM5.js.map → chunk-7WO66MKJ.js.map} +0 -0
  260. /package/dist/{chunk-ODP62HIA.js.map → chunk-A2XDQ3JW.js.map} +0 -0
  261. /package/dist/{chunk-MSRNAAWW.js.map → chunk-AVO2CBIL.js.map} +0 -0
  262. /package/dist/{chunk-B5EZWPSM.js.map → chunk-AZ2X5LNA.js.map} +0 -0
  263. /package/dist/{chunk-IGEZE6QB.js.map → chunk-BMYZTZ5D.js.map} +0 -0
  264. /package/dist/{chunk-XDOXR3U6.js.map → chunk-BNPLDVM6.js.map} +0 -0
  265. /package/dist/{chunk-7JFQI6DQ.js.map → chunk-BOUFVFV2.js.map} +0 -0
  266. /package/dist/{chunk-VDX2J7OX.js.map → chunk-BUKK5SWA.js.map} +0 -0
  267. /package/dist/{chunk-KMHE76A2.js.map → chunk-CDEI5S5W.js.map} +0 -0
  268. /package/dist/{chunk-UJX4I26O.js.map → chunk-CLSYE5OZ.js.map} +0 -0
  269. /package/dist/{chunk-WDBKDYK2.js.map → chunk-CYCE3L2I.js.map} +0 -0
  270. /package/dist/{chunk-GZBNEZIU.js.map → chunk-DBYAY6UW.js.map} +0 -0
  271. /package/dist/{chunk-HZDOLAZV.js.map → chunk-DCPAAAIC.js.map} +0 -0
  272. /package/dist/{chunk-6JA22L5X.js.map → chunk-DSQWTXHP.js.map} +0 -0
  273. /package/dist/{chunk-WQC54W25.js.map → chunk-EJPF6XDQ.js.map} +0 -0
  274. /package/dist/{chunk-CGO3A7SR.js.map → chunk-EVBI7S4J.js.map} +0 -0
  275. /package/dist/{chunk-OB2YI57R.js.map → chunk-FMT52ROU.js.map} +0 -0
  276. /package/dist/{chunk-62AE2EUZ.js.map → chunk-FVK5NQ3V.js.map} +0 -0
  277. /package/dist/{chunk-3SL52JKD.js.map → chunk-FZVROZKC.js.map} +0 -0
  278. /package/dist/{chunk-ZVTG7JTG.js.map → chunk-GARVFCV6.js.map} +0 -0
  279. /package/dist/{chunk-Y52T5Y6B.js.map → chunk-GATQP7CE.js.map} +0 -0
  280. /package/dist/{chunk-7COBZFUF.js.map → chunk-GXQ5GDUH.js.map} +0 -0
  281. /package/dist/{chunk-VVX5PZFS.js.map → chunk-H36X4NRH.js.map} +0 -0
  282. /package/dist/{chunk-2VH2JWYN.js.map → chunk-I4G4UWQA.js.map} +0 -0
  283. /package/dist/{chunk-6OACG7JV.js.map → chunk-IBGEHKQ6.js.map} +0 -0
  284. /package/dist/{chunk-BXCZPPRO.js.map → chunk-IILMR37Z.js.map} +0 -0
  285. /package/dist/{chunk-X2PBZOYZ.js.map → chunk-IP5VLSLO.js.map} +0 -0
  286. /package/dist/{chunk-IXLHREAB.js.map → chunk-IVH7INFM.js.map} +0 -0
  287. /package/dist/{chunk-D4SPMHEW.js.map → chunk-JLPNONPH.js.map} +0 -0
  288. /package/dist/{chunk-AEGQ5PJ7.js.map → chunk-JX6USXZR.js.map} +0 -0
  289. /package/dist/{chunk-SA2JMMMS.js.map → chunk-K2SXIWEV.js.map} +0 -0
  290. /package/dist/{chunk-VEBYLZQQ.js.map → chunk-KN6CIN7I.js.map} +0 -0
  291. /package/dist/{chunk-WZKKI6S2.js.map → chunk-LEP46X5Y.js.map} +0 -0
  292. /package/dist/{chunk-5UBH37SL.js.map → chunk-LI76ESJL.js.map} +0 -0
  293. /package/dist/{chunk-AQJBFLUA.js.map → chunk-LZLJK2IA.js.map} +0 -0
  294. /package/dist/{chunk-5LWVTSF7.js.map → chunk-MOQPEFLN.js.map} +0 -0
  295. /package/dist/{chunk-6BFW7SGF.js.map → chunk-MQQPONTM.js.map} +0 -0
  296. /package/dist/{chunk-5KNEOYTF.js.map → chunk-NGFRFDSK.js.map} +0 -0
  297. /package/dist/{chunk-B6PY25JB.js.map → chunk-NHV6WCM5.js.map} +0 -0
  298. /package/dist/{chunk-S5FWSNLI.js.map → chunk-NYZRJW5X.js.map} +0 -0
  299. /package/dist/{chunk-JOMGKV72.js.map → chunk-OHRIBMSS.js.map} +0 -0
  300. /package/dist/{chunk-BXLOS5AJ.js.map → chunk-OWHERGF2.js.map} +0 -0
  301. /package/dist/{chunk-KPSJA45G.js.map → chunk-QIDMGBUY.js.map} +0 -0
  302. /package/dist/{chunk-MKNENZCK.js.map → chunk-QJAGDPY7.js.map} +0 -0
  303. /package/dist/{chunk-VIRTAUJO.js.map → chunk-RDUM6BKQ.js.map} +0 -0
  304. /package/dist/{chunk-I6Y6QKWF.js.map → chunk-RGX4DGOG.js.map} +0 -0
  305. /package/dist/{chunk-OMYCECTS.js.map → chunk-RJLV4BKR.js.map} +0 -0
  306. /package/dist/{chunk-LBL77UXO.js.map → chunk-RKTT72XV.js.map} +0 -0
  307. /package/dist/{chunk-AWEMJYN2.js.map → chunk-RMG22TH2.js.map} +0 -0
  308. /package/dist/{chunk-4GPI3GVE.js.map → chunk-SLEAJ67D.js.map} +0 -0
  309. /package/dist/{chunk-YR6A6ZK7.js.map → chunk-SSUDD72S.js.map} +0 -0
  310. /package/dist/{chunk-WDP7CJZQ.js.map → chunk-SUSMEKBE.js.map} +0 -0
  311. /package/dist/{chunk-YZENVZWY.js.map → chunk-TY446V34.js.map} +0 -0
  312. /package/dist/{chunk-YCYFXA6P.js.map → chunk-UKB7ZDKK.js.map} +0 -0
  313. /package/dist/{chunk-DQEMWVMT.js.map → chunk-UVYI6VIX.js.map} +0 -0
  314. /package/dist/{chunk-YF3JERFZ.js.map → chunk-VL4X7ZHC.js.map} +0 -0
  315. /package/dist/{chunk-COHJUEBQ.js.map → chunk-WGXWZE3K.js.map} +0 -0
  316. /package/dist/{chunk-ZHOXXHT5.js.map → chunk-WQZZDN5M.js.map} +0 -0
  317. /package/dist/{chunk-25LKLNSJ.js.map → chunk-X33QB7LW.js.map} +0 -0
  318. /package/dist/{chunk-JDES3G7T.js.map → chunk-X3NZ2HAO.js.map} +0 -0
  319. /package/dist/{chunk-Q4AUIFUA.js.map → chunk-XAITGGX5.js.map} +0 -0
  320. /package/dist/{chunk-5HP5F2SQ.js.map → chunk-XNYTMLPS.js.map} +0 -0
  321. /package/dist/{chunk-UFBHEMNR.js.map → chunk-YL273SOF.js.map} +0 -0
  322. /package/dist/{chunk-GFD7TWAZ.js.map → chunk-ZWWF7PI5.js.map} +0 -0
  323. /package/dist/{chunk-5LPDXYU3.js.map → chunk-ZYBLNHUB.js.map} +0 -0
  324. /package/dist/{first-start-migration-7OATHJKB.js.map → first-start-migration-GAT7G733.js.map} +0 -0
@@ -1,3 +1,7 @@
1
+ import {
2
+ ensureLcmStateDir,
3
+ openLcmDatabase
4
+ } from "./chunk-DDA47TES.js";
1
5
  import {
2
6
  LcmSummarizer
3
7
  } from "./chunk-KOLJJN5G.js";
@@ -13,10 +17,6 @@ import {
13
17
  import {
14
18
  assembleCompressedHistoryWithTrace
15
19
  } from "./chunk-UXPUUL3G.js";
16
- import {
17
- ensureLcmStateDir,
18
- openLcmDatabase
19
- } from "./chunk-DDA47TES.js";
20
20
  import {
21
21
  nativeBindingRecoveryHint
22
22
  } from "./chunk-LD72P4YS.js";
@@ -573,4 +573,4 @@ export {
573
573
  extractLcmConfig,
574
574
  LcmEngine
575
575
  };
576
- //# sourceMappingURL=chunk-LVFI5LG7.js.map
576
+ //# sourceMappingURL=chunk-2L5FSNPC.js.map
@@ -1,6 +1,3 @@
1
- import {
2
- OKF_RESERVED_BASENAMES
3
- } from "./chunk-PCEYGOSL.js";
4
1
  import {
5
2
  normalizeProjectionPreview
6
3
  } from "./chunk-SCU65EZI.js";
@@ -17,7 +14,62 @@ import {
17
14
  // src/directory-sidecars.ts
18
15
  import { createHash } from "crypto";
19
16
  import { lstatSync, readFileSync, readdirSync, statSync, unlinkSync } from "fs";
17
+ import path2 from "path";
18
+
19
+ // src/okf/type-mapping.ts
20
20
  import path from "path";
21
+ var OKF_TYPE_BY_CATEGORY = Object.freeze({
22
+ fact: "Memory Fact",
23
+ decision: "Decision",
24
+ preference: "Preference",
25
+ commitment: "Commitment",
26
+ relationship: "Relationship",
27
+ principle: "Principle",
28
+ moment: "Moment",
29
+ skill: "Skill",
30
+ correction: "Correction",
31
+ rule: "Rule"
32
+ });
33
+ var OKF_TYPE_FALLBACK = "Memory";
34
+ function okfTypeForCategory(category) {
35
+ return OKF_TYPE_BY_CATEGORY[category] ?? OKF_TYPE_FALLBACK;
36
+ }
37
+ function okfTypeForMemory(fm) {
38
+ return fm.artifactType ? "Artifact" : okfTypeForCategory(fm.category);
39
+ }
40
+ var OKF_TYPE_BY_ENTITY_KIND = Object.freeze({
41
+ person: "Person",
42
+ company: "Company",
43
+ organization: "Organization",
44
+ project: "Project",
45
+ topic: "Topic",
46
+ technology: "Technology",
47
+ place: "Place",
48
+ event: "Event"
49
+ });
50
+ function okfTypeForEntityKind(kind) {
51
+ const normalized = kind?.trim().toLowerCase();
52
+ return normalized !== void 0 && OKF_TYPE_BY_ENTITY_KIND[normalized] || "Entity";
53
+ }
54
+ var OKF_PROFILE_TYPE = "Profile";
55
+ var OKF_QUESTION_TYPE = "Question";
56
+ var OKF_DECISION_RECORD_TYPE = "Decision Record";
57
+ var OKF_ARCHITECTURE_CARD_TYPE = "Architecture Card";
58
+ var OKF_CODE_MODULE_TYPE = "Code Module";
59
+ var OKF_RESERVED_BASENAMES = Object.freeze({
60
+ "index.md": true,
61
+ "log.md": true
62
+ });
63
+ function assertNotOkfReservedBasename(filePath) {
64
+ const basename = path.basename(filePath);
65
+ if (OKF_RESERVED_BASENAMES[basename] === true) {
66
+ throw new Error(
67
+ `OKF reserved basename '${basename}' is not a valid memory file target (${filePath}); OKF \xA76/\xA77 reserves it for bundle-level files.`
68
+ );
69
+ }
70
+ }
71
+
72
+ // src/directory-sidecars.ts
21
73
  var DIRECTORY_SIDECAR_BASENAME = "overview.md";
22
74
  var DIRECTORY_SIDECAR_MARKER = "<!-- remnic-directory-sidecar -->";
23
75
  var NEIGHBORHOOD_ABSTRACT_LABEL = "Neighborhood:";
@@ -28,6 +80,19 @@ var CATEGORY_ROOTS = new Set(RECALL_FALLBACK_DIRS);
28
80
  function parseDirectorySidecarsEnabled(raw) {
29
81
  return coerceBooleanLike(raw, "directorySidecarsEnabled") === true;
30
82
  }
83
+ var sidecarEnabledByDir = /* @__PURE__ */ new Map();
84
+ function setDirectorySidecarsEnabledForDir(memoryDir, enabled) {
85
+ sidecarEnabledByDir.set(path2.resolve(memoryDir), enabled === true);
86
+ }
87
+ function isDirectorySidecarsEnabledForDir(memoryDir) {
88
+ let dir = path2.resolve(memoryDir);
89
+ for (; ; ) {
90
+ if (sidecarEnabledByDir.has(dir)) return sidecarEnabledByDir.get(dir) === true;
91
+ const parent = path2.dirname(dir);
92
+ if (parent === dir) return false;
93
+ dir = parent;
94
+ }
95
+ }
31
96
  var RESERVED_CHILD_BASENAMES = Object.freeze({
32
97
  ...OKF_RESERVED_BASENAMES,
33
98
  [DIRECTORY_SIDECAR_BASENAME]: true
@@ -57,7 +122,7 @@ function directoryFingerprint(dir) {
57
122
  const hash = createHash("sha256");
58
123
  for (const name of memoryChildren(dir)) {
59
124
  try {
60
- const stats = statSync(path.join(dir, name));
125
+ const stats = statSync(path2.join(dir, name));
61
126
  hash.update(`f|${name}|${stats.size}|${Math.trunc(stats.mtimeMs)}
62
127
  `);
63
128
  } catch {
@@ -66,7 +131,7 @@ function directoryFingerprint(dir) {
66
131
  }
67
132
  }
68
133
  for (const name of directoryChildren(dir)) {
69
- hash.update(`d|${name}|${directoryFingerprint(path.join(dir, name))}
134
+ hash.update(`d|${name}|${directoryFingerprint(path2.join(dir, name))}
70
135
  `);
71
136
  }
72
137
  return hash.digest("hex");
@@ -89,15 +154,15 @@ function parseSidecar(content) {
89
154
  return { abstract, overview, childCount, fingerprint };
90
155
  }
91
156
  function sidecarPath(dir) {
92
- return path.join(dir, DIRECTORY_SIDECAR_BASENAME);
157
+ return path2.join(dir, DIRECTORY_SIDECAR_BASENAME);
93
158
  }
94
159
  function renderSidecar(dir, fingerprint, childAbstracts) {
95
160
  const children = memoryChildren(dir);
96
- const childDirs = directoryChildren(dir).filter((name) => childAbstracts.has(path.join(dir, name)));
161
+ const childDirs = directoryChildren(dir).filter((name) => childAbstracts.has(path2.join(dir, name)));
97
162
  if (children.length === 0 && childDirs.length === 0) return null;
98
163
  const previews = children.map((name) => {
99
164
  try {
100
- return normalizeProjectionPreview(readFileSync(path.join(dir, name), "utf8"), 120);
165
+ return normalizeProjectionPreview(readFileSync(path2.join(dir, name), "utf8"), 120);
101
166
  } catch {
102
167
  return "";
103
168
  }
@@ -106,13 +171,13 @@ function renderSidecar(dir, fingerprint, childAbstracts) {
106
171
  (name, index) => previews[index].split(" ").slice(0, 8).join(" ") || name.replace(/\.md$/, "")
107
172
  );
108
173
  const abstract = normalizeProjectionPreview(
109
- `${path.basename(dir)}/ \u2014 ${children.length} memories: ${titles.slice(0, 5).join(" \xB7 ")}`,
174
+ `${path2.basename(dir)}/ \u2014 ${children.length} memories: ${titles.slice(0, 5).join(" \xB7 ")}`,
110
175
  ABSTRACT_MAX_CHARS
111
176
  );
112
177
  const lines = [
113
178
  DIRECTORY_SIDECAR_MARKER,
114
179
  `fingerprint: ${fingerprint}`,
115
- `# ${path.basename(dir)}/ overview`,
180
+ `# ${path2.basename(dir)}/ overview`,
116
181
  "",
117
182
  "## Abstract",
118
183
  abstract,
@@ -124,17 +189,17 @@ function renderSidecar(dir, fingerprint, childAbstracts) {
124
189
  }
125
190
  for (const name of childDirs) {
126
191
  lines.push(`### ${name}/`);
127
- lines.push(childAbstracts.get(path.join(dir, name)) ?? "");
192
+ lines.push(childAbstracts.get(path2.join(dir, name)) ?? "");
128
193
  }
129
194
  lines.push("");
130
195
  return lines.join("\n");
131
196
  }
132
197
  function scopeRoots(memoryDir) {
133
198
  const roots = [memoryDir];
134
- const namespacesRoot = path.join(memoryDir, "namespaces");
199
+ const namespacesRoot = path2.join(memoryDir, "namespaces");
135
200
  for (const entry of listEntries(namespacesRoot)) {
136
- if (entry.isDirectory() && isRealDirectory(path.join(namespacesRoot, entry.name))) {
137
- roots.push(path.join(namespacesRoot, entry.name));
201
+ if (entry.isDirectory() && isRealDirectory(path2.join(namespacesRoot, entry.name))) {
202
+ roots.push(path2.join(namespacesRoot, entry.name));
138
203
  }
139
204
  }
140
205
  return roots;
@@ -144,14 +209,14 @@ function collectSidecarDirs(scopeRoot) {
144
209
  const walk = (dir, isCategoryRoot) => {
145
210
  let carries = memoryChildren(dir).length > 0;
146
211
  for (const name of directoryChildren(dir)) {
147
- carries = walk(path.join(dir, name), false) || carries;
212
+ carries = walk(path2.join(dir, name), false) || carries;
148
213
  }
149
214
  const hasSidecar = readFileOrNull(sidecarPath(dir))?.startsWith(DIRECTORY_SIDECAR_MARKER) === true;
150
215
  if (isCategoryRoot || carries || hasSidecar) dirs.push(dir);
151
216
  return carries;
152
217
  };
153
218
  for (const category of RECALL_FALLBACK_DIRS) {
154
- const categoryDir = path.join(scopeRoot, category);
219
+ const categoryDir = path2.join(scopeRoot, category);
155
220
  if (!isRealDirectory(categoryDir)) continue;
156
221
  walk(categoryDir, true);
157
222
  }
@@ -186,18 +251,29 @@ async function syncSidecarDir(dir, enabled, childAbstracts, written, removed) {
186
251
  function childAbstractsFromDisk(dir) {
187
252
  const abstracts = /* @__PURE__ */ new Map();
188
253
  for (const name of directoryChildren(dir)) {
189
- const childDir = path.join(dir, name);
254
+ const childDir = path2.join(dir, name);
190
255
  const parsed = parseSidecar(readFileOrNull(sidecarPath(childDir)) ?? "");
191
256
  if (parsed) abstracts.set(childDir, parsed.abstract);
192
257
  }
193
258
  return abstracts;
194
259
  }
195
260
  function directorySidecarAncestry(memoryDir, changedPath) {
196
- const root = path.resolve(memoryDir);
197
- const abs = path.isAbsolute(changedPath) ? path.resolve(changedPath) : path.resolve(root, changedPath);
198
- const rel = path.relative(root, abs);
199
- if (rel.startsWith("..") || path.isAbsolute(rel)) return [];
200
- const parts = rel.split(path.sep).filter(Boolean);
261
+ const root = path2.resolve(memoryDir);
262
+ if (!isRealDirectory(root)) return [];
263
+ const abs = path2.isAbsolute(changedPath) ? path2.resolve(changedPath) : path2.resolve(root, changedPath);
264
+ const rel = path2.relative(root, abs);
265
+ if (rel.startsWith("..") || path2.isAbsolute(rel)) return [];
266
+ const parts = rel.split(path2.sep).filter(Boolean);
267
+ let cursor = root;
268
+ for (let i = 0; i < parts.length; i++) {
269
+ cursor = path2.join(cursor, parts[i] ?? "");
270
+ try {
271
+ if (lstatSync(cursor).isSymbolicLink()) return [];
272
+ } catch {
273
+ if (i === parts.length - 1) break;
274
+ return [];
275
+ }
276
+ }
201
277
  const dirParts = isRealDirectory(abs) ? parts : parts.slice(0, -1);
202
278
  let categoryAt = -1;
203
279
  if (dirParts[0] === "namespaces" && dirParts.length >= 3 && CATEGORY_ROOTS.has(dirParts[2] ?? "")) {
@@ -208,7 +284,9 @@ function directorySidecarAncestry(memoryDir, changedPath) {
208
284
  if (categoryAt === -1) return [];
209
285
  const dirs = [];
210
286
  for (let i = dirParts.length; i > categoryAt; i--) {
211
- dirs.push(path.join(root, ...dirParts.slice(0, i)));
287
+ const dir = path2.join(root, ...dirParts.slice(0, i));
288
+ if (!isRealDirectory(dir)) return [];
289
+ dirs.push(dir);
212
290
  }
213
291
  return dirs;
214
292
  }
@@ -251,8 +329,8 @@ async function loadDirectorySidecar(dir, options = {}) {
251
329
  if (!refresh) return null;
252
330
  const childAbstracts = /* @__PURE__ */ new Map();
253
331
  for (const name of directoryChildren(dir)) {
254
- const child = await loadDirectorySidecar(path.join(dir, name));
255
- if (child) childAbstracts.set(path.join(dir, name), child.abstract);
332
+ const child = await loadDirectorySidecar(path2.join(dir, name));
333
+ if (child) childAbstracts.set(path2.join(dir, name), child.abstract);
256
334
  }
257
335
  const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);
258
336
  if (next === null) {
@@ -275,7 +353,7 @@ async function loadDirectorySidecar(dir, options = {}) {
275
353
  } : null;
276
354
  }
277
355
  async function findDirectorySidecarsForQuery(memoryDir, query, options = {}) {
278
- const scope = options.namespace ? path.join(memoryDir, "namespaces", options.namespace) : memoryDir;
356
+ const scope = options.namespace ? path2.join(memoryDir, "namespaces", options.namespace) : memoryDir;
279
357
  if (!isRealDirectory(scope)) return [];
280
358
  const terms = query.toLowerCase().split(/[^a-z0-9]+/).filter((term) => term.length >= 2);
281
359
  const matches = [];
@@ -295,7 +373,7 @@ async function findDirectorySidecarsForQuery(memoryDir, query, options = {}) {
295
373
  }
296
374
  matches.sort((a, b) => b.score - a.score || a.dir.localeCompare(b.dir));
297
375
  const limit = options.limit ?? DEFAULT_QUERY_LIMIT;
298
- return matches.filter((candidate) => !matches.some((other) => other.dir.startsWith(`${candidate.dir}${path.sep}`))).slice(0, limit);
376
+ return matches.filter((candidate) => !matches.some((other) => other.dir.startsWith(`${candidate.dir}${path2.sep}`))).slice(0, limit);
299
377
  }
300
378
  function attachNeighborhoodAbstract(snippet, abstract) {
301
379
  const line = `${NEIGHBORHOOD_ABSTRACT_LABEL} ${abstract}`;
@@ -305,22 +383,27 @@ function attachNeighborhoodAbstract(snippet, abstract) {
305
383
  ${snippet}`;
306
384
  }
307
385
  function mostSpecificSidecarForHit(memoryDir, hitPath, matches) {
308
- if (path.basename(hitPath) === DIRECTORY_SIDECAR_BASENAME) return null;
309
- const abs = path.isAbsolute(hitPath) ? path.resolve(hitPath) : path.resolve(memoryDir, hitPath);
386
+ if (path2.basename(hitPath) === DIRECTORY_SIDECAR_BASENAME) return null;
387
+ const abs = path2.isAbsolute(hitPath) ? path2.resolve(hitPath) : path2.resolve(memoryDir, hitPath);
310
388
  let best = null;
311
389
  for (const match of matches) {
312
- const rel = path.relative(match.dir, abs);
313
- if (rel === "" || rel.startsWith("..") || path.isAbsolute(rel)) continue;
390
+ const rel = path2.relative(match.dir, abs);
391
+ if (rel === "" || rel.startsWith("..") || path2.isAbsolute(rel)) continue;
314
392
  if (best === null || match.dir.length > best.dir.length) best = match;
315
393
  }
316
394
  return best;
317
395
  }
318
396
  async function applyDirectorySidecarDrillDown(memoryDir, query, hits, options = {}) {
319
- if (options.enabled !== true) return [...hits];
320
- const matches = await findDirectorySidecarsForQuery(memoryDir, query, {
321
- namespace: options.namespace,
322
- refresh: false
323
- });
397
+ if (options.enabled !== true) return hits;
398
+ const namespaces = options.namespaces;
399
+ if (namespaces !== void 0 && namespaces.length === 0) return hits;
400
+ const scopes = namespaces && namespaces.length > 0 ? namespaces : [options.namespace];
401
+ const matchLists = await Promise.all(
402
+ scopes.map(
403
+ (namespace) => findDirectorySidecarsForQuery(memoryDir, query, { namespace, refresh: false })
404
+ )
405
+ );
406
+ const matches = matchLists.flat();
324
407
  const fresh = matches.filter((match) => match.fresh && match.abstract.length > 0);
325
408
  if (fresh.length === 0) return [...hits];
326
409
  return hits.map((hit) => {
@@ -332,10 +415,22 @@ async function applyDirectorySidecarDrillDown(memoryDir, query, hits, options =
332
415
  }
333
416
 
334
417
  export {
418
+ okfTypeForCategory,
419
+ okfTypeForMemory,
420
+ okfTypeForEntityKind,
421
+ OKF_PROFILE_TYPE,
422
+ OKF_QUESTION_TYPE,
423
+ OKF_DECISION_RECORD_TYPE,
424
+ OKF_ARCHITECTURE_CARD_TYPE,
425
+ OKF_CODE_MODULE_TYPE,
426
+ OKF_RESERVED_BASENAMES,
427
+ assertNotOkfReservedBasename,
335
428
  DIRECTORY_SIDECAR_BASENAME,
336
429
  DIRECTORY_SIDECAR_MARKER,
337
430
  NEIGHBORHOOD_ABSTRACT_LABEL,
338
431
  parseDirectorySidecarsEnabled,
432
+ setDirectorySidecarsEnabledForDir,
433
+ isDirectorySidecarsEnabledForDir,
339
434
  directoryFingerprint,
340
435
  directorySidecarAncestry,
341
436
  runDirectorySidecarMaintenance,
@@ -344,4 +439,4 @@ export {
344
439
  findDirectorySidecarsForQuery,
345
440
  applyDirectorySidecarDrillDown
346
441
  };
347
- //# sourceMappingURL=chunk-U3NBO4IX.js.map
442
+ //# sourceMappingURL=chunk-345MEMRU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/directory-sidecars.ts","../src/okf/type-mapping.ts"],"sourcesContent":["/**\n * @remnic/core — per-directory abstract/overview sidecars (issue #2977).\n *\n * One derived `overview.md` per memory directory (category roots and every\n * directory beneath them, including `namespaces/<ns>/` subtrees), rendered\n * bottom-up from existing memory content:\n *\n * - the ABSTRACT is a single line (<=256 chars) composed from child titles;\n * - the OVERVIEW body lists one preview line per child memory and embeds\n * each child DIRECTORY's abstract, so a parent summarizes its subtree\n * without embedding full child overviews.\n *\n * Determinism: no LLM, no embeddings. Content is assembled with the same\n * preview machinery the OKF index files use (`normalizeProjectionPreview`).\n *\n * Invalidation: each sidecar stores a content-free fingerprint of its subtree\n * (child name|size|mtime for files, recursive fingerprints for child dirs).\n * Any add/edit/delete anywhere below a directory changes its fingerprint, so\n * `loadDirectorySidecar` can detect staleness with `readdir`+`stat` alone and\n * refresh without reading child memory files first. Eager regeneration runs\n * through {@link runDirectorySidecarMaintenance}; lazy refresh on read covers\n * direct-write paths that bypass scheduled maintenance (Gotcha #43).\n *\n * Isolation: sidecars are derived artifacts, excluded from generic recall via\n * `isGenericRecallExcludedPath` (basename match, the same tradeoff OKF makes\n * for `index.md`/`log.md`) while staying full-text searchable. Files at the\n * sidecar path WITHOUT the marker are user content: never overwritten, never\n * removed.\n *\n * Layer 2: {@link refreshDirectorySidecarsAfterWrite} refreshes only the\n * changed directory and its category ancestors. `enabled: false` is a\n * proven no-op (no reads, no writes).\n *\n * Layer 3 (this slice): {@link applyDirectorySidecarDrillDown} scores\n * fresh sidecars and attaches the winning directory's abstract to hits.\n * `enabled` stays a function argument — not a parseConfig key (`config.ts`\n * and `types.ts` are at their file-size ratchets). Retrieval never writes.\n * xray trajectory, storage write-hook, parseConfig wiring, and LLM\n * summarization remain later layers on #2977.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { lstatSync, readFileSync, readdirSync, statSync, unlinkSync } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { coerceBooleanLike } from \"./connectors/coerce.js\";\nimport { writeFileAtomically } from \"./maintenance/atomic-file.js\";\nimport { normalizeProjectionPreview } from \"./memory-projection-format.js\";\nimport { OKF_RESERVED_BASENAMES } from \"./okf/type-mapping.js\";\nimport { RECALL_FALLBACK_DIRS } from \"./utils/category-dir.js\";\n\nexport const DIRECTORY_SIDECAR_BASENAME = \"overview.md\";\nexport const DIRECTORY_SIDECAR_MARKER = \"<!-- remnic-directory-sidecar -->\";\n/** Prefix prepended to a hit snippet when a fresh directory abstract attaches. */\nexport const NEIGHBORHOOD_ABSTRACT_LABEL = \"Neighborhood:\";\n\nconst ABSTRACT_MAX_CHARS = 256;\nconst OVERVIEW_MAX_CHARS = 4000;\nconst DEFAULT_QUERY_LIMIT = 5;\nconst CATEGORY_ROOTS: ReadonlySet<string> = new Set(RECALL_FALLBACK_DIRS);\n\n/** Config fields this slice owns. Mix into `PluginConfig` in a later layer. */\nexport interface DirectorySidecarSettings {\n /** Populate sidecars on memory writes. Default false. */\n directorySidecarsEnabled: boolean;\n}\n\n/** Strict off-default: only an explicit true/\"true\"/1 opts in. */\nexport function parseDirectorySidecarsEnabled(raw: unknown): boolean {\n return coerceBooleanLike(raw, \"directorySidecarsEnabled\") === true;\n}\n\nconst sidecarEnabledByDir = new Map<string, boolean>();\n\nexport function setDirectorySidecarsEnabledForDir(memoryDir: string, enabled: boolean): void {\n sidecarEnabledByDir.set(path.resolve(memoryDir), enabled === true);\n}\n\nexport function isDirectorySidecarsEnabledForDir(memoryDir: string): boolean {\n let dir = path.resolve(memoryDir);\n for (;;) {\n if (sidecarEnabledByDir.has(dir)) return sidecarEnabledByDir.get(dir) === true;\n const parent = path.dirname(dir);\n if (parent === dir) return false;\n dir = parent;\n }\n}\n\n/** Basenames never treated as child memories (ours plus OKF's reserved ones). */\nconst RESERVED_CHILD_BASENAMES: Readonly<Record<string, true>> = Object.freeze({\n ...OKF_RESERVED_BASENAMES,\n [DIRECTORY_SIDECAR_BASENAME]: true,\n});\n\nexport interface DirectorySidecar {\n /** Absolute directory the sidecar describes. */\n readonly dir: string;\n /** Single-line L0 abstract (<=256 chars). */\n readonly abstract: string;\n /** Abstract plus the per-child preview body (<=4000 chars). */\n readonly overview: string;\n /** Number of memory `.md` children in this directory. */\n readonly childCount: number;\n /** False when the stored fingerprint no longer matches the subtree. */\n readonly fresh: boolean;\n}\n\nexport interface DirectorySidecarMatch extends DirectorySidecar {\n readonly score: number;\n}\n\n/** Minimal hit shape drill-down mutates. Extra fields pass through. */\nexport interface DirectorySidecarHit {\n path: string;\n snippet: string;\n score: number;\n}\n\nexport interface DirectorySidecarReport {\n written: string[];\n removed: string[];\n}\n\ninterface ParsedSidecar {\n abstract: string;\n overview: string;\n childCount: number;\n fingerprint: string;\n}\n\nfunction listEntries(dir: string) {\n try {\n return readdirSync(dir, { withFileTypes: true });\n } catch {\n return [];\n }\n}\n\n/** Root check that refuses symlinks (fs-boundary rule, PRs #1938/#1999). */\nfunction isRealDirectory(entryPath: string): boolean {\n try {\n const stats = lstatSync(entryPath);\n return !stats.isSymbolicLink() && stats.isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction memoryChildren(dir: string): string[] {\n // Dirent.isFile() is false for symlinks, so a linked memory never enters the corpus.\n return listEntries(dir)\n .filter((entry) => entry.isFile() && !RESERVED_CHILD_BASENAMES[entry.name] && entry.name.endsWith(\".md\"))\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\nfunction directoryChildren(dir: string): string[] {\n // Dirent.isDirectory() is false for symlinks (fs-boundary rule, PRs #1938/#1999).\n return listEntries(dir)\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Content-free subtree fingerprint: sha256 over sorted child descriptors.\n * Files contribute `name|size|mtimeMs`; directories contribute their own\n * recursive fingerprint, so any change below a directory invalidates every\n * ancestor. Reads no file contents.\n */\nexport function directoryFingerprint(dir: string): string {\n const hash = createHash(\"sha256\");\n for (const name of memoryChildren(dir)) {\n try {\n const stats = statSync(path.join(dir, name));\n hash.update(`f|${name}|${stats.size}|${Math.trunc(stats.mtimeMs)}\\n`);\n } catch {\n hash.update(`f|${name}|missing\\n`);\n }\n }\n for (const name of directoryChildren(dir)) {\n hash.update(`d|${name}|${directoryFingerprint(path.join(dir, name))}\\n`);\n }\n return hash.digest(\"hex\");\n}\n\nfunction readFileOrNull(target: string): string | null {\n try {\n return readFileSync(target, \"utf8\");\n } catch {\n return null;\n }\n}\n\nfunction parseSidecar(content: string): ParsedSidecar | null {\n if (!content.startsWith(DIRECTORY_SIDECAR_MARKER)) return null;\n const fingerprint = /^fingerprint: ([0-9a-f]{64})$/m.exec(content)?.[1];\n if (!fingerprint) return null;\n const abstract = /^## Abstract\\n([^\\n]+)$/m.exec(content)?.[1] ?? \"\";\n const overviewStart = content.indexOf(\"## Abstract\");\n const overview =\n overviewStart === -1 ? \"\" : content.slice(overviewStart, overviewStart + OVERVIEW_MAX_CHARS).trim();\n // The `* name — preview` child bullets are the rendered child count.\n const childCount = (content.match(/^\\* .+$/gm) ?? []).length;\n return { abstract, overview, childCount, fingerprint };\n}\n\nfunction sidecarPath(dir: string): string {\n return path.join(dir, DIRECTORY_SIDECAR_BASENAME);\n}\n\nfunction renderSidecar(dir: string, fingerprint: string, childAbstracts: Map<string, string>): string | null {\n const children = memoryChildren(dir);\n const childDirs = directoryChildren(dir).filter((name) => childAbstracts.has(path.join(dir, name)));\n if (children.length === 0 && childDirs.length === 0) return null;\n\n const previews = children.map((name) => {\n try {\n return normalizeProjectionPreview(readFileSync(path.join(dir, name), \"utf8\"), 120);\n } catch {\n return \"\";\n }\n });\n const titles = children.map(\n (name, index) => previews[index].split(\" \").slice(0, 8).join(\" \") || name.replace(/\\.md$/, \"\"),\n );\n const abstract = normalizeProjectionPreview(\n `${path.basename(dir)}/ — ${children.length} memories: ${titles.slice(0, 5).join(\" · \")}`,\n ABSTRACT_MAX_CHARS,\n );\n\n const lines = [\n DIRECTORY_SIDECAR_MARKER,\n `fingerprint: ${fingerprint}`,\n `# ${path.basename(dir)}/ overview`,\n \"\",\n \"## Abstract\",\n abstract,\n \"\",\n \"## Children\",\n ];\n for (const [index, name] of children.entries()) {\n lines.push(`* ${name} — ${previews[index]}`);\n }\n for (const name of childDirs) {\n lines.push(`### ${name}/`);\n lines.push(childAbstracts.get(path.join(dir, name)) ?? \"\");\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n\n/** Scope roots whose category subtrees carry sidecars: the memory root plus every namespace root. */\nfunction scopeRoots(memoryDir: string): string[] {\n const roots = [memoryDir];\n const namespacesRoot = path.join(memoryDir, \"namespaces\");\n for (const entry of listEntries(namespacesRoot)) {\n if (entry.isDirectory() && isRealDirectory(path.join(namespacesRoot, entry.name))) {\n roots.push(path.join(namespacesRoot, entry.name));\n }\n }\n return roots;\n}\n\n/**\n * Every directory that should carry a sidecar, deepest first (post-order) so\n * parents render after their children and can embed child abstracts.\n */\nfunction collectSidecarDirs(scopeRoot: string): string[] {\n const dirs: string[] = [];\n const walk = (dir: string, isCategoryRoot: boolean): boolean => {\n let carries = memoryChildren(dir).length > 0;\n for (const name of directoryChildren(dir)) {\n carries = walk(path.join(dir, name), false) || carries;\n }\n // A directory that stopped carrying memories must still be visited so its\n // orphaned sidecar can be pruned or rewritten (cache-invalidation completeness).\n const hasSidecar = readFileOrNull(sidecarPath(dir))?.startsWith(DIRECTORY_SIDECAR_MARKER) === true;\n if (isCategoryRoot || carries || hasSidecar) dirs.push(dir);\n return carries;\n };\n for (const category of RECALL_FALLBACK_DIRS) {\n const categoryDir = path.join(scopeRoot, category);\n if (!isRealDirectory(categoryDir)) continue;\n walk(categoryDir, true);\n }\n return dirs;\n}\n\nasync function syncSidecarDir(\n dir: string,\n enabled: boolean,\n childAbstracts: Map<string, string>,\n written: string[],\n removed: string[],\n): Promise<void> {\n const target = sidecarPath(dir);\n const raw = readFileOrNull(target);\n const existing = raw !== null && raw.startsWith(DIRECTORY_SIDECAR_MARKER) ? raw : null;\n if (!enabled) {\n if (existing !== null) {\n unlinkSync(target);\n removed.push(target);\n }\n return;\n }\n const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);\n if (next === null) {\n if (existing !== null) {\n unlinkSync(target);\n removed.push(target);\n }\n return;\n }\n const parsedNext = parseSidecar(next);\n if (parsedNext) childAbstracts.set(dir, parsedNext.abstract);\n if (raw === next) return;\n if (existing === null && raw !== null) return; // user-authored file: hands off\n await writeFileAtomically(target, next);\n written.push(target);\n}\n\nfunction childAbstractsFromDisk(dir: string): Map<string, string> {\n const abstracts = new Map<string, string>();\n for (const name of directoryChildren(dir)) {\n const childDir = path.join(dir, name);\n const parsed = parseSidecar(readFileOrNull(sidecarPath(childDir)) ?? \"\");\n if (parsed) abstracts.set(childDir, parsed.abstract);\n }\n return abstracts;\n}\n\n/**\n * Category-root ancestry of a changed memory path, deepest first.\n * Paths outside a recall category return `[]` so writes to `state/` or\n * `namespaces/<ns>/` itself never mint a sidecar.\n */\nexport function directorySidecarAncestry(memoryDir: string, changedPath: string): string[] {\n const root = path.resolve(memoryDir);\n if (!isRealDirectory(root)) return [];\n const abs = path.isAbsolute(changedPath) ? path.resolve(changedPath) : path.resolve(root, changedPath);\n const rel = path.relative(root, abs);\n if (rel.startsWith(\"..\") || path.isAbsolute(rel)) return [];\n const parts = rel.split(path.sep).filter(Boolean);\n let cursor = root;\n for (let i = 0; i < parts.length; i++) {\n cursor = path.join(cursor, parts[i] ?? \"\");\n try {\n if (lstatSync(cursor).isSymbolicLink()) return [];\n } catch {\n if (i === parts.length - 1) break;\n return [];\n }\n }\n const dirParts = isRealDirectory(abs) ? parts : parts.slice(0, -1);\n let categoryAt = -1;\n if (dirParts[0] === \"namespaces\" && dirParts.length >= 3 && CATEGORY_ROOTS.has(dirParts[2] ?? \"\")) {\n categoryAt = 2;\n } else if (CATEGORY_ROOTS.has(dirParts[0] ?? \"\")) {\n categoryAt = 0;\n }\n if (categoryAt === -1) return [];\n const dirs: string[] = [];\n for (let i = dirParts.length; i > categoryAt; i--) {\n const dir = path.join(root, ...dirParts.slice(0, i));\n if (!isRealDirectory(dir)) return [];\n dirs.push(dir);\n }\n return dirs;\n}\n\n/**\n * Regenerates directory sidecars incrementally. Unchanged sidecars are left\n * untouched; emptied directories lose theirs; user files at the sidecar path\n * (no marker) are never written or removed. With `enabled: false` every\n * generated sidecar is removed — the OKF index-maintenance contract.\n */\nexport async function runDirectorySidecarMaintenance(\n memoryDir: string,\n enabled: boolean,\n): Promise<DirectorySidecarReport> {\n const written: string[] = [];\n const removed: string[] = [];\n for (const scope of scopeRoots(memoryDir)) {\n const childAbstracts = new Map<string, string>();\n for (const dir of collectSidecarDirs(scope)) {\n await syncSidecarDir(dir, enabled, childAbstracts, written, removed);\n }\n }\n return { written, removed };\n}\n\n/**\n * Incremental write-path refresh: only the changed directory and its\n * category ancestors, using the same fingerprint/render path as maintenance.\n * `enabled: false` returns immediately — no readdir, no writes.\n */\nexport async function refreshDirectorySidecarsAfterWrite(\n memoryDir: string,\n changedPath: string,\n enabled: boolean,\n): Promise<DirectorySidecarReport> {\n if (!enabled) return { written: [], removed: [] };\n const written: string[] = [];\n const removed: string[] = [];\n for (const dir of directorySidecarAncestry(memoryDir, changedPath)) {\n await syncSidecarDir(dir, true, childAbstractsFromDisk(dir), written, removed);\n }\n return { written, removed };\n}\n\n/**\n * Read a directory's sidecar for retrieval. By default a stale sidecar is\n * refreshed in place (child directories first), which is what makes direct\n * writes that bypass maintenance still converge. With `{ refresh: false }`\n * the stored sidecar is returned as-is with `fresh: false` so callers can\n * observe staleness without writes.\n */\nexport async function loadDirectorySidecar(\n dir: string,\n options: { refresh?: boolean } = {},\n): Promise<DirectorySidecar | null> {\n const refresh = options.refresh !== false;\n const target = sidecarPath(dir);\n const stored = readFileOrNull(target);\n const generated = stored !== null && stored.startsWith(DIRECTORY_SIDECAR_MARKER);\n const parsed = generated ? parseSidecar(stored) : null;\n const fingerprint = directoryFingerprint(dir);\n if (parsed !== null && (parsed.fingerprint === fingerprint || !refresh)) {\n return {\n dir,\n abstract: parsed.abstract,\n overview: parsed.overview,\n childCount: parsed.childCount,\n fresh: parsed.fingerprint === fingerprint,\n };\n }\n if (!refresh) return null;\n\n // Refresh bottom-up so this directory's body embeds current child abstracts.\n const childAbstracts = new Map<string, string>();\n for (const name of directoryChildren(dir)) {\n const child = await loadDirectorySidecar(path.join(dir, name));\n if (child) childAbstracts.set(path.join(dir, name), child.abstract);\n }\n const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);\n if (next === null) {\n if (generated) unlinkSync(target);\n return null;\n }\n if (readFileOrNull(target) !== next) {\n if (stored !== null && !generated) {\n // User-authored file at the sidecar path: serve nothing rather than clobber it.\n return null;\n }\n await writeFileAtomically(target, next);\n }\n const refreshed = parseSidecar(next);\n return refreshed\n ? {\n dir,\n abstract: refreshed.abstract,\n overview: refreshed.overview,\n childCount: refreshed.childCount,\n fresh: true,\n }\n : null;\n}\n\n/**\n * Overview-query primitive for hierarchical retrieval (layer 1 of #2977):\n * score every sidecar's abstract (+3 per query term) and overview (+1 per\n * term) lexically, then return the most specific matches — when both a\n * directory and its descendant match, only the descendant is kept, matching\n * the drill-down semantics the full retrieval mode will build on.\n */\nexport async function findDirectorySidecarsForQuery(\n memoryDir: string,\n query: string,\n options: { namespace?: string; limit?: number; refresh?: boolean } = {},\n): Promise<DirectorySidecarMatch[]> {\n const scope = options.namespace ? path.join(memoryDir, \"namespaces\", options.namespace) : memoryDir;\n if (!isRealDirectory(scope)) return [];\n const terms = query\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter((term) => term.length >= 2);\n\n const matches: DirectorySidecarMatch[] = [];\n for (const root of scopeRoots(scope)) {\n for (const dir of collectSidecarDirs(root)) {\n const sidecar = await loadDirectorySidecar(dir, { refresh: options.refresh });\n if (!sidecar) continue;\n const abstractLower = sidecar.abstract.toLowerCase();\n const overviewLower = sidecar.overview.toLowerCase();\n let score = 0;\n for (const term of terms) {\n if (abstractLower.includes(term)) score += 3;\n else if (overviewLower.includes(term)) score += 1;\n }\n if (score > 0) matches.push({ ...sidecar, score });\n }\n }\n matches.sort((a, b) => b.score - a.score || a.dir.localeCompare(b.dir));\n\n const limit = options.limit ?? DEFAULT_QUERY_LIMIT;\n return matches\n .filter((candidate) => !matches.some((other) => other.dir.startsWith(`${candidate.dir}${path.sep}`)))\n .slice(0, limit);\n}\n\nfunction attachNeighborhoodAbstract(snippet: string, abstract: string): string {\n const line = `${NEIGHBORHOOD_ABSTRACT_LABEL} ${abstract}`;\n if (snippet === line || snippet.startsWith(`${line}\\n`)) return snippet;\n return snippet.length === 0 ? line : `${line}\\n${snippet}`;\n}\n\nfunction mostSpecificSidecarForHit(\n memoryDir: string,\n hitPath: string,\n matches: readonly DirectorySidecarMatch[],\n): DirectorySidecarMatch | null {\n if (path.basename(hitPath) === DIRECTORY_SIDECAR_BASENAME) return null;\n const abs = path.isAbsolute(hitPath) ? path.resolve(hitPath) : path.resolve(memoryDir, hitPath);\n let best: DirectorySidecarMatch | null = null;\n for (const match of matches) {\n const rel = path.relative(match.dir, abs);\n if (rel === \"\" || rel.startsWith(\"..\") || path.isAbsolute(rel)) continue;\n if (best === null || match.dir.length > best.dir.length) best = match;\n }\n return best;\n}\n\n/**\n * Retrieval drill-down (layer 3 of #2977): score fresh directory sidecars\n * and attach the winning neighborhood abstract to hits under that directory.\n * `enabled: false` (the default) returns hits unchanged with no I/O.\n * Never writes. Does not reorder. parseConfig is not consulted.\n */\nexport async function applyDirectorySidecarDrillDown<T extends DirectorySidecarHit>(\n memoryDir: string,\n query: string,\n hits: readonly T[],\n options: { enabled?: boolean; namespace?: string; namespaces?: readonly string[] } = {},\n): Promise<T[]> {\n if (options.enabled !== true) return hits as T[];\n const namespaces = options.namespaces;\n if (namespaces !== undefined && namespaces.length === 0) return hits as T[];\n const scopes = namespaces && namespaces.length > 0 ? namespaces : [options.namespace];\n const matchLists = await Promise.all(\n scopes.map((namespace) =>\n findDirectorySidecarsForQuery(memoryDir, query, { namespace, refresh: false }),\n ),\n );\n const matches = matchLists.flat();\n const fresh = matches.filter((match) => match.fresh && match.abstract.length > 0);\n if (fresh.length === 0) return [...hits];\n return hits.map((hit) => {\n const match = mostSpecificSidecarForHit(memoryDir, hit.path, fresh);\n if (!match) return hit;\n const snippet = attachNeighborhoodAbstract(hit.snippet, match.abstract);\n return snippet === hit.snippet ? hit : { ...hit, snippet };\n });\n}\n","/**\n * OKF v0.1 `type` mapping (issue #1946) — the single source of truth for\n * the inert `type` metadata emitted alongside Remnic's canonical fields.\n *\n * `category` remains the canonical internal field; `type` is\n * presentation/interop metadata for OKF consumers and NEVER overrides\n * `category` on parse (the parser reads `type` into its own field only).\n */\nimport path from \"node:path\";\n\n/** OKF `type` values derived from Remnic memory categories. */\nexport const OKF_TYPE_BY_CATEGORY: Readonly<Record<string, string>> = Object.freeze({\n fact: \"Memory Fact\",\n decision: \"Decision\",\n preference: \"Preference\",\n commitment: \"Commitment\",\n relationship: \"Relationship\",\n principle: \"Principle\",\n moment: \"Moment\",\n skill: \"Skill\",\n correction: \"Correction\",\n rule: \"Rule\",\n});\n\n/** Fallback for categories not listed above (unknown/future categories). */\nexport const OKF_TYPE_FALLBACK = \"Memory\";\n\n/** Stable domain seam over the category table (single mapping source, AGENTS.md pattern 9). */\nexport function okfTypeForCategory(category: string): string {\n return OKF_TYPE_BY_CATEGORY[category] ?? OKF_TYPE_FALLBACK;\n}\n\n/** Artifact memories report `Artifact` regardless of their storage category. */\nexport function okfTypeForMemory(fm: { category: string; artifactType?: string }): string {\n return fm.artifactType ? \"Artifact\" : okfTypeForCategory(fm.category);\n}\n\n/** OKF types for entity files, derived from the entity kind. */\nexport const OKF_TYPE_BY_ENTITY_KIND: Readonly<Record<string, string>> = Object.freeze({\n person: \"Person\",\n company: \"Company\",\n organization: \"Organization\",\n project: \"Project\",\n topic: \"Topic\",\n technology: \"Technology\",\n place: \"Place\",\n event: \"Event\",\n});\n\n/** Stable domain seam over the entity-kind table (single mapping source). */\nexport function okfTypeForEntityKind(kind: string | undefined): string {\n const normalized = kind?.trim().toLowerCase();\n return (normalized !== undefined && OKF_TYPE_BY_ENTITY_KIND[normalized]) || \"Entity\";\n}\n\n/** Fixed OKF types for non-memory bundle files. */\nexport const OKF_PROFILE_TYPE = \"Profile\";\nexport const OKF_QUESTION_TYPE = \"Question\";\nexport const OKF_DECISION_RECORD_TYPE = \"Decision Record\";\nexport const OKF_ARCHITECTURE_CARD_TYPE = \"Architecture Card\";\nexport const OKF_CODE_MODULE_TYPE = \"Code Module\";\n\n/**\n * OKF §6/§7 reserve `index.md` and `log.md` for bundle-level files with a\n * different contract. Remnic never writes them (separate issue), and writes\n * targeting those basenames are rejected outright so a stray ID can never\n * shadow a reserved bundle file.\n */\nexport const OKF_RESERVED_BASENAMES: Readonly<Record<string, true>> = Object.freeze({\n \"index.md\": true,\n \"log.md\": true,\n});\n\nexport function assertNotOkfReservedBasename(filePath: string): void {\n const basename = path.basename(filePath);\n if (OKF_RESERVED_BASENAMES[basename] === true) {\n throw new Error(\n `OKF reserved basename '${basename}' is not a valid memory file target (${filePath}); OKF §6/§7 reserves it for bundle-level files.`,\n );\n }\n}\n"],"mappings":"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","names":["path","path"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineOperation
3
- } from "./chunk-OB2YI57R.js";
3
+ } from "./chunk-FMT52ROU.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -71,4 +71,4 @@ defineOperation({
71
71
  })
72
72
  })
73
73
  });
74
- //# sourceMappingURL=chunk-6BSPRNFF.js.map
74
+ //# sourceMappingURL=chunk-3AGCSD42.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
3
3
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
4
- } from "./chunk-OB2YI57R.js";
4
+ } from "./chunk-FMT52ROU.js";
5
5
  import {
6
6
  SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
7
7
  } from "./chunk-PWPIERBM.js";
@@ -343,4 +343,4 @@ export {
343
343
  parseSupportPassportModelJob,
344
344
  SupportPassportModelBridge
345
345
  };
346
- //# sourceMappingURL=chunk-IGSVMAPQ.js.map
346
+ //# sourceMappingURL=chunk-3K3PITOE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isGenericRecallExcludedPath
3
- } from "./chunk-SB4ZWVKI.js";
3
+ } from "./chunk-7G6WUOLB.js";
4
4
  import {
5
5
  normalizeProjectionPreview
6
6
  } from "./chunk-SCU65EZI.js";
@@ -209,4 +209,4 @@ export {
209
209
  browsePatternMatches,
210
210
  runMemoryBrowse
211
211
  };
212
- //# sourceMappingURL=chunk-ZUT4FK5W.js.map
212
+ //# sourceMappingURL=chunk-5ELENZTA.js.map
@@ -2,7 +2,7 @@ import {
2
2
  WHO_KNOWS_DEFAULT_LIMIT,
3
3
  WHO_KNOWS_MAX_LIMIT,
4
4
  validateWhoKnowsInput
5
- } from "./chunk-KPSJA45G.js";
5
+ } from "./chunk-QIDMGBUY.js";
6
6
 
7
7
  // src/who-knows-cli.ts
8
8
  function extractWhoKnowsRawArgs(rest) {
@@ -74,4 +74,4 @@ export {
74
74
  renderWhoKnowsText,
75
75
  renderWhoKnows
76
76
  };
77
- //# sourceMappingURL=chunk-NF6LF76X.js.map
77
+ //# sourceMappingURL=chunk-5X7ZTLFS.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  raceRecallAbort,
3
3
  throwIfRecallAborted
4
- } from "./chunk-2VH2JWYN.js";
4
+ } from "./chunk-I4G4UWQA.js";
5
5
  import {
6
6
  classifyOrigin
7
7
  } from "./chunk-23G5P7TA.js";
8
8
  import {
9
9
  tagPersistedMemories
10
- } from "./chunk-IGEZE6QB.js";
10
+ } from "./chunk-BMYZTZ5D.js";
11
11
  import {
12
12
  resolveScopeProfilePlan
13
13
  } from "./chunk-WBYQA3VN.js";
@@ -1081,4 +1081,4 @@ export {
1081
1081
  ExtractionDeadlineError,
1082
1082
  ExtractionRunCoordinator
1083
1083
  };
1084
- //# sourceMappingURL=chunk-S52VKUUW.js.map
1084
+ //# sourceMappingURL=chunk-6DTJBTHL.js.map
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  listMemoryGovernanceRuns,
9
9
  readMemoryGovernanceRunArtifact
10
- } from "./chunk-62AE2EUZ.js";
10
+ } from "./chunk-FVK5NQ3V.js";
11
11
  import {
12
12
  StorageManager
13
- } from "./chunk-ZPED47SP.js";
13
+ } from "./chunk-YUAOU2B2.js";
14
14
  import {
15
15
  normalizeProjectionPreview,
16
16
  normalizeProjectionTags
@@ -1005,4 +1005,4 @@ export {
1005
1005
  verifyMemoryProjection,
1006
1006
  repairMemoryProjection
1007
1007
  };
1008
- //# sourceMappingURL=chunk-LH6UP5SR.js.map
1008
+ //# sourceMappingURL=chunk-6MJGDUC7.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-NVKO5YKP.js";
24
24
  import {
25
25
  compareEntityTimestamps
26
- } from "./chunk-ZPED47SP.js";
26
+ } from "./chunk-YUAOU2B2.js";
27
27
  import {
28
28
  normalizeEntityName
29
29
  } from "./chunk-YXZG5TVN.js";
@@ -918,4 +918,4 @@ export {
918
918
  entityIndexVersion,
919
919
  entityRecentTranscriptLookbackHours
920
920
  };
921
- //# sourceMappingURL=chunk-YYRMOMX3.js.map
921
+ //# sourceMappingURL=chunk-7DZHRPCO.js.map
@@ -1,18 +1,16 @@
1
- import {
2
- DIRECTORY_SIDECAR_BASENAME
3
- } from "./chunk-U3NBO4IX.js";
4
1
  import {
5
2
  isActivityDigestPath,
6
3
  isArtifactMemoryPath,
7
4
  isLocationDayPath,
8
5
  isMeetingRecordPath
9
- } from "./chunk-2VH2JWYN.js";
6
+ } from "./chunk-I4G4UWQA.js";
10
7
  import {
11
8
  isExternalWikiCollectionName
12
9
  } from "./chunk-JV3C2MNQ.js";
13
10
  import {
11
+ DIRECTORY_SIDECAR_BASENAME,
14
12
  OKF_RESERVED_BASENAMES
15
- } from "./chunk-PCEYGOSL.js";
13
+ } from "./chunk-345MEMRU.js";
16
14
  import {
17
15
  isValidActivityDate
18
16
  } from "./chunk-353C5UNV.js";
@@ -213,4 +211,4 @@ export {
213
211
  isGenericRecallExcludedPath,
214
212
  filterRecallCandidates
215
213
  };
216
- //# sourceMappingURL=chunk-SB4ZWVKI.js.map
214
+ //# sourceMappingURL=chunk-7G6WUOLB.js.map