@remnic/core 9.69.74 → 9.69.76

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 (293) hide show
  1. package/dist/access-admin-ops-surface.js +35 -36
  2. package/dist/access-authorization-probe.js +36 -37
  3. package/dist/access-boundary.js +35 -36
  4. package/dist/access-cli.js +94 -94
  5. package/dist/access-extraction-force-flush.js +35 -36
  6. package/dist/access-http-briefing.js +36 -37
  7. package/dist/access-http-query.js +37 -38
  8. package/dist/access-http.js +55 -56
  9. package/dist/access-identity-continuity-surface.js +35 -36
  10. package/dist/access-lcm-surface.js +35 -36
  11. package/dist/access-mcp.js +46 -47
  12. package/dist/access-namespace-preflight.js +35 -36
  13. package/dist/access-observe-write-category.js +7 -7
  14. package/dist/access-observe-write-surface.js +35 -36
  15. package/dist/access-offline-manifest.js +3 -3
  16. package/dist/access-operations-batch.js +37 -38
  17. package/dist/access-operations.js +44 -45
  18. package/dist/access-recall-concurrency.js +35 -36
  19. package/dist/access-recall-diagnostics.js +2 -2
  20. package/dist/access-recall-response.js +35 -36
  21. package/dist/access-recall-surface.js +35 -36
  22. package/dist/access-schema.js +4 -4
  23. package/dist/access-service.js +35 -36
  24. package/dist/access-surface-catalog.js +37 -38
  25. package/dist/access-surface-catalog.js.map +1 -1
  26. package/dist/active-recall.js +9 -8
  27. package/dist/active-recall.js.map +1 -1
  28. package/dist/{auto-sync-QJNIKZHV.js → auto-sync-WEUDMXUW.js} +4 -4
  29. package/dist/briefing.js +8 -7
  30. package/dist/buffer.js +4 -4
  31. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  32. package/dist/causal-consolidation.js +9 -8
  33. package/dist/causal-consolidation.js.map +1 -1
  34. package/dist/{chunk-SYTPPMCM.js → chunk-252U6XYX.js} +2 -2
  35. package/dist/{chunk-IXLHREAB.js → chunk-2MLWQMXH.js} +2 -2
  36. package/dist/{chunk-ZL3Q4OWJ.js → chunk-34R75BVF.js} +2 -2
  37. package/dist/{chunk-3SBDUMPW.js → chunk-364F6EMG.js} +2 -2
  38. package/dist/{chunk-ZMV67JXV.js → chunk-4GPI3GVE.js} +4 -4
  39. package/dist/{chunk-V6ULW25E.js → chunk-4MONIKIY.js} +2 -2
  40. package/dist/{chunk-SIV2ENTD.js → chunk-5D6IMOW6.js} +30 -30
  41. package/dist/{chunk-BRJNNP7R.js → chunk-5ELXQQY7.js} +2 -2
  42. package/dist/{chunk-ZUT4FK5W.js → chunk-5Z574AVZ.js} +2 -2
  43. package/dist/{chunk-NS2SFWKC.js → chunk-6FJCKMSJ.js} +3 -3
  44. package/dist/{chunk-PDY7C73D.js → chunk-6OACG7JV.js} +2 -2
  45. package/dist/{chunk-QOL6OTIK.js → chunk-6OR3AQHP.js} +2 -2
  46. package/dist/{chunk-AG5QWIU7.js → chunk-6RBUAPQT.js} +19 -25
  47. package/dist/chunk-6RBUAPQT.js.map +1 -0
  48. package/dist/{chunk-WQC54W25.js → chunk-6VQFPA3J.js} +2 -2
  49. package/dist/{chunk-GM2UUMWJ.js → chunk-74C5FI4S.js} +5 -5
  50. package/dist/{chunk-A7AI3WDN.js → chunk-AV5K5QH4.js} +4 -4
  51. package/dist/{chunk-BMTR244T.js → chunk-BFDBLAVG.js} +2 -2
  52. package/dist/{chunk-IGEZE6QB.js → chunk-BMYZTZ5D.js} +4 -4
  53. package/dist/{chunk-7JFQI6DQ.js → chunk-BOUFVFV2.js} +2 -2
  54. package/dist/{chunk-CGO3A7SR.js → chunk-BRBB62TS.js} +2 -2
  55. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  56. package/dist/{chunk-GZBNEZIU.js → chunk-DBYAY6UW.js} +3 -3
  57. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  58. package/dist/{chunk-U3NBO4IX.js → chunk-FAT6HY7N.js} +119 -37
  59. package/dist/chunk-FAT6HY7N.js.map +1 -0
  60. package/dist/{chunk-ML64HXAN.js → chunk-FCVPZIHF.js} +2 -2
  61. package/dist/{chunk-B5EZWPSM.js → chunk-FUWW7ED4.js} +2 -2
  62. package/dist/{chunk-HXRZRYHQ.js → chunk-GN7YTM5I.js} +2 -2
  63. package/dist/{chunk-XDOXR3U6.js → chunk-HC4RWJR3.js} +2 -2
  64. package/dist/{chunk-HA5V67N4.js → chunk-HKPGEFIT.js} +2 -2
  65. package/dist/{chunk-MB3HMRXM.js → chunk-I6PZTU3Q.js} +2 -2
  66. package/dist/{chunk-KSJP3AWY.js → chunk-IGJL6JOD.js} +2 -2
  67. package/dist/{chunk-KK6TS7ED.js → chunk-IV2CY3RE.js} +3 -3
  68. package/dist/{chunk-ZIJ5FAI4.js → chunk-J3NN2Q4Z.js} +5 -5
  69. package/dist/{chunk-2JJVJMN6.js → chunk-JBHCTDYF.js} +2 -2
  70. package/dist/{chunk-D4SPMHEW.js → chunk-JLPNONPH.js} +2 -2
  71. package/dist/{chunk-BFUYPEJB.js → chunk-JOAR32R6.js} +2 -2
  72. package/dist/{chunk-FJZUIM5G.js → chunk-JU5MAF2L.js} +2 -2
  73. package/dist/{chunk-AEGQ5PJ7.js → chunk-JX6USXZR.js} +2 -2
  74. package/dist/{chunk-VEBYLZQQ.js → chunk-KN6CIN7I.js} +2 -2
  75. package/dist/{chunk-UJX4I26O.js → chunk-KOXUUJE3.js} +2 -2
  76. package/dist/{chunk-5UBH37SL.js → chunk-LI76ESJL.js} +4 -4
  77. package/dist/chunk-LJLGH2DE.js +65 -0
  78. package/dist/chunk-LJLGH2DE.js.map +1 -0
  79. package/dist/{chunk-B2PGHXTP.js → chunk-LTS2XIU3.js} +2 -2
  80. package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
  81. package/dist/{chunk-WZGSSLYI.js → chunk-MKGIW5W6.js} +2 -2
  82. package/dist/{chunk-5LWVTSF7.js → chunk-MOQPEFLN.js} +4 -4
  83. package/dist/{chunk-4ETSHAIZ.js → chunk-N25RPRSI.js} +8 -8
  84. package/dist/{chunk-5W62ZVC6.js → chunk-N6TUO3O6.js} +2 -2
  85. package/dist/{chunk-2IH2WNM6.js → chunk-NC7OAEYY.js} +3 -3
  86. package/dist/{chunk-GXHRNONR.js → chunk-NQBD3R24.js} +2 -2
  87. package/dist/{chunk-S52VKUUW.js → chunk-NRPLDEFR.js} +2 -2
  88. package/dist/{chunk-VSBY5HAI.js → chunk-OH6AMNSA.js} +2 -2
  89. package/dist/{chunk-NVPE6AJ3.js → chunk-OIKX22FU.js} +1 -1
  90. package/dist/{chunk-T3XDF5RO.js → chunk-OJMAM4RO.js} +2 -2
  91. package/dist/{chunk-NKIK4VFP.js → chunk-OMYCECTS.js} +2 -2
  92. package/dist/{chunk-UHQ5UPAQ.js → chunk-OOWUOWXK.js} +2 -2
  93. package/dist/{chunk-RBAG3VUT.js → chunk-P2FJ2KYJ.js} +17 -17
  94. package/dist/{chunk-F5O6WEDO.js → chunk-PWF4JXKD.js} +1 -1
  95. package/dist/chunk-PWF4JXKD.js.map +1 -0
  96. package/dist/{chunk-A5HBAR5Y.js → chunk-RQIETS2K.js} +2 -2
  97. package/dist/{chunk-RWQXTR35.js → chunk-SFDZ66MD.js} +2 -2
  98. package/dist/{chunk-YR6A6ZK7.js → chunk-SSUDD72S.js} +2 -2
  99. package/dist/{chunk-5TS5QOZS.js → chunk-TWUMZCGA.js} +6 -6
  100. package/dist/{chunk-Y4IQFWGD.js → chunk-TYR4D4GH.js} +2 -2
  101. package/dist/{chunk-VE456O3R.js → chunk-UHKME3I7.js} +2 -2
  102. package/dist/{chunk-IPLYGWQF.js → chunk-VDX2J7OX.js} +6 -6
  103. package/dist/{chunk-542IROS3.js → chunk-VKWMW32Y.js} +2 -2
  104. package/dist/{chunk-YF3JERFZ.js → chunk-VL4X7ZHC.js} +2 -2
  105. package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
  106. package/dist/{chunk-GLX4SU4W.js → chunk-W5VYWOU3.js} +2 -2
  107. package/dist/{chunk-FRD5N3CS.js → chunk-WZ7M2QRP.js} +2 -2
  108. package/dist/{chunk-OMU54WOM.js → chunk-X2PBZOYZ.js} +2 -2
  109. package/dist/{chunk-HVWLZ7ZQ.js → chunk-XC4MDMQE.js} +4 -4
  110. package/dist/{chunk-JLNJ7AGH.js → chunk-XIA4CN3T.js} +7 -7
  111. package/dist/{chunk-JTGL6UX7.js → chunk-XLLRMUMH.js} +8 -7
  112. package/dist/chunk-XLLRMUMH.js.map +1 -0
  113. package/dist/{chunk-SUD76OMV.js → chunk-XNTIX4LA.js} +97 -50
  114. package/dist/chunk-XNTIX4LA.js.map +1 -0
  115. package/dist/{chunk-QNUK4SUE.js → chunk-XQSAPG34.js} +2 -2
  116. package/dist/{chunk-QXDZYPBL.js → chunk-Y37KZVUM.js} +2 -2
  117. package/dist/{chunk-NNPJWVGN.js → chunk-YNNXM6FN.js} +38 -38
  118. package/dist/{chunk-SB4ZWVKI.js → chunk-YPWOZ6ME.js} +3 -5
  119. package/dist/{chunk-SB4ZWVKI.js.map → chunk-YPWOZ6ME.js.map} +1 -1
  120. package/dist/{chunk-47AONXWB.js → chunk-YYI5DZAQ.js} +2 -2
  121. package/dist/{chunk-HZZIH5SW.js → chunk-YZENVZWY.js} +2 -2
  122. package/dist/cli.js +74 -75
  123. package/dist/coding/export-okf-codegraph.js +8 -7
  124. package/dist/coding/export-okf-codegraph.js.map +1 -1
  125. package/dist/compounding/engine.js +8 -7
  126. package/dist/config.d.ts.map +1 -1
  127. package/dist/config.js +9 -8
  128. package/dist/connectors/codex-materialize-runner.js +8 -7
  129. package/dist/connectors/index.js +8 -7
  130. package/dist/convergence-refresh.js +10 -10
  131. package/dist/corpus-watermark.js +10 -9
  132. package/dist/deep-recall-http-glue.js +5 -5
  133. package/dist/directory-sidecars.d.ts +3 -0
  134. package/dist/directory-sidecars.d.ts.map +1 -1
  135. package/dist/directory-sidecars.js +7 -4
  136. package/dist/entity-retrieval.js +8 -7
  137. package/dist/external-wiki-access.js +36 -37
  138. package/dist/extraction.js +12 -12
  139. package/dist/harmonic-retrieval.js +1 -1
  140. package/dist/index.js +102 -102
  141. package/dist/lcm/engine.js +3 -3
  142. package/dist/lcm/index.js +8 -8
  143. package/dist/location/index.js +11 -11
  144. package/dist/maintenance/memory-governance.js +8 -7
  145. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -8
  146. package/dist/maintenance/rebuild-memory-projection.js +9 -9
  147. package/dist/memory-browse-operations.js +36 -37
  148. package/dist/memory-browse.js +3 -4
  149. package/dist/namespaces/migrate.js +9 -8
  150. package/dist/namespaces/search.js +3 -3
  151. package/dist/namespaces/storage.js +8 -7
  152. package/dist/offline-sync-impression-drain.js +2 -2
  153. package/dist/operator-doctor-corpus.js +11 -10
  154. package/dist/operator-toolkit.js +18 -17
  155. package/dist/orchestration/maintenance.js +17 -17
  156. package/dist/orchestration/recall-entry.d.ts.map +1 -1
  157. package/dist/orchestration/recall-search-pipeline.d.ts.map +1 -1
  158. package/dist/orchestrator.d.ts.map +1 -1
  159. package/dist/orchestrator.js +94 -94
  160. package/dist/recall-explain-renderer.js +3 -3
  161. package/dist/recall-navigate-access.js +2 -2
  162. package/dist/recall-navigate-disclosure.js +2 -2
  163. package/dist/recall-navigate.js +2 -2
  164. package/dist/recall-navigation-operations.js +36 -37
  165. package/dist/recall-navigation.js +35 -36
  166. package/dist/recall-state-view-admission.js +3 -4
  167. package/dist/recall-state.js +2 -2
  168. package/dist/recall-why-service.js +3 -4
  169. package/dist/recall-xray-cli.js +4 -4
  170. package/dist/recall-xray-renderer.js +3 -3
  171. package/dist/recall-xray.js +2 -2
  172. package/dist/resume-bundles.js +10 -9
  173. package/dist/search/factory.js +2 -2
  174. package/dist/search/index.js +4 -4
  175. package/dist/semantic-consolidation.js +9 -8
  176. package/dist/semantic-rule-promotion.js +8 -7
  177. package/dist/semantic-rule-verifier.js +8 -7
  178. package/dist/source-agent-qualifier.js +11 -11
  179. package/dist/standing-memory-recall.d.ts +22 -0
  180. package/dist/standing-memory-recall.d.ts.map +1 -0
  181. package/dist/standing-memory-recall.js +16 -0
  182. package/dist/standing-memory-recall.js.map +1 -0
  183. package/dist/standup/build.js +8 -7
  184. package/dist/storage.d.ts +1 -19
  185. package/dist/storage.d.ts.map +1 -1
  186. package/dist/storage.js +7 -6
  187. package/dist/support-passport/index.js +38 -39
  188. package/dist/transfer/autodetect.js +1 -1
  189. package/dist/transfer/backup.js +2 -2
  190. package/dist/transfer/capsule-export.js +3 -3
  191. package/dist/transfer/capsule-import.js +2 -2
  192. package/dist/transfer/export-okf.js +9 -8
  193. package/dist/types.d.ts +3 -3
  194. package/dist/types.d.ts.map +1 -1
  195. package/dist/types.js +1 -1
  196. package/dist/verified-recall.js +8 -7
  197. package/dist/who-knows-cli.js +9 -8
  198. package/dist/who-knows.js +8 -7
  199. package/package.json +2 -2
  200. package/src/config.ts +2 -3
  201. package/src/directory-sidecars-config.test.ts +34 -0
  202. package/src/directory-sidecars.ts +27 -6
  203. package/src/orchestration/recall-entry.ts +54 -13
  204. package/src/orchestration/recall-search-pipeline.ts +4 -6
  205. package/src/orchestrator.ts +8 -0
  206. package/src/standing-memory-block.test.ts +4 -3
  207. package/src/standing-memory-recall.test.ts +30 -0
  208. package/src/standing-memory-recall.ts +87 -0
  209. package/src/storage.ts +13 -22
  210. package/src/types.ts +3 -3
  211. package/dist/chunk-AG5QWIU7.js.map +0 -1
  212. package/dist/chunk-F5O6WEDO.js.map +0 -1
  213. package/dist/chunk-JTGL6UX7.js.map +0 -1
  214. package/dist/chunk-PCEYGOSL.js +0 -66
  215. package/dist/chunk-PCEYGOSL.js.map +0 -1
  216. package/dist/chunk-SUD76OMV.js.map +0 -1
  217. package/dist/chunk-U3NBO4IX.js.map +0 -1
  218. /package/dist/{auto-sync-QJNIKZHV.js.map → auto-sync-WEUDMXUW.js.map} +0 -0
  219. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  220. /package/dist/{chunk-SYTPPMCM.js.map → chunk-252U6XYX.js.map} +0 -0
  221. /package/dist/{chunk-IXLHREAB.js.map → chunk-2MLWQMXH.js.map} +0 -0
  222. /package/dist/{chunk-ZL3Q4OWJ.js.map → chunk-34R75BVF.js.map} +0 -0
  223. /package/dist/{chunk-3SBDUMPW.js.map → chunk-364F6EMG.js.map} +0 -0
  224. /package/dist/{chunk-ZMV67JXV.js.map → chunk-4GPI3GVE.js.map} +0 -0
  225. /package/dist/{chunk-V6ULW25E.js.map → chunk-4MONIKIY.js.map} +0 -0
  226. /package/dist/{chunk-SIV2ENTD.js.map → chunk-5D6IMOW6.js.map} +0 -0
  227. /package/dist/{chunk-BRJNNP7R.js.map → chunk-5ELXQQY7.js.map} +0 -0
  228. /package/dist/{chunk-ZUT4FK5W.js.map → chunk-5Z574AVZ.js.map} +0 -0
  229. /package/dist/{chunk-NS2SFWKC.js.map → chunk-6FJCKMSJ.js.map} +0 -0
  230. /package/dist/{chunk-PDY7C73D.js.map → chunk-6OACG7JV.js.map} +0 -0
  231. /package/dist/{chunk-QOL6OTIK.js.map → chunk-6OR3AQHP.js.map} +0 -0
  232. /package/dist/{chunk-WQC54W25.js.map → chunk-6VQFPA3J.js.map} +0 -0
  233. /package/dist/{chunk-GM2UUMWJ.js.map → chunk-74C5FI4S.js.map} +0 -0
  234. /package/dist/{chunk-A7AI3WDN.js.map → chunk-AV5K5QH4.js.map} +0 -0
  235. /package/dist/{chunk-BMTR244T.js.map → chunk-BFDBLAVG.js.map} +0 -0
  236. /package/dist/{chunk-IGEZE6QB.js.map → chunk-BMYZTZ5D.js.map} +0 -0
  237. /package/dist/{chunk-7JFQI6DQ.js.map → chunk-BOUFVFV2.js.map} +0 -0
  238. /package/dist/{chunk-CGO3A7SR.js.map → chunk-BRBB62TS.js.map} +0 -0
  239. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  240. /package/dist/{chunk-GZBNEZIU.js.map → chunk-DBYAY6UW.js.map} +0 -0
  241. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  242. /package/dist/{chunk-ML64HXAN.js.map → chunk-FCVPZIHF.js.map} +0 -0
  243. /package/dist/{chunk-B5EZWPSM.js.map → chunk-FUWW7ED4.js.map} +0 -0
  244. /package/dist/{chunk-HXRZRYHQ.js.map → chunk-GN7YTM5I.js.map} +0 -0
  245. /package/dist/{chunk-XDOXR3U6.js.map → chunk-HC4RWJR3.js.map} +0 -0
  246. /package/dist/{chunk-HA5V67N4.js.map → chunk-HKPGEFIT.js.map} +0 -0
  247. /package/dist/{chunk-MB3HMRXM.js.map → chunk-I6PZTU3Q.js.map} +0 -0
  248. /package/dist/{chunk-KSJP3AWY.js.map → chunk-IGJL6JOD.js.map} +0 -0
  249. /package/dist/{chunk-KK6TS7ED.js.map → chunk-IV2CY3RE.js.map} +0 -0
  250. /package/dist/{chunk-ZIJ5FAI4.js.map → chunk-J3NN2Q4Z.js.map} +0 -0
  251. /package/dist/{chunk-2JJVJMN6.js.map → chunk-JBHCTDYF.js.map} +0 -0
  252. /package/dist/{chunk-D4SPMHEW.js.map → chunk-JLPNONPH.js.map} +0 -0
  253. /package/dist/{chunk-BFUYPEJB.js.map → chunk-JOAR32R6.js.map} +0 -0
  254. /package/dist/{chunk-FJZUIM5G.js.map → chunk-JU5MAF2L.js.map} +0 -0
  255. /package/dist/{chunk-AEGQ5PJ7.js.map → chunk-JX6USXZR.js.map} +0 -0
  256. /package/dist/{chunk-VEBYLZQQ.js.map → chunk-KN6CIN7I.js.map} +0 -0
  257. /package/dist/{chunk-UJX4I26O.js.map → chunk-KOXUUJE3.js.map} +0 -0
  258. /package/dist/{chunk-5UBH37SL.js.map → chunk-LI76ESJL.js.map} +0 -0
  259. /package/dist/{chunk-B2PGHXTP.js.map → chunk-LTS2XIU3.js.map} +0 -0
  260. /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
  261. /package/dist/{chunk-WZGSSLYI.js.map → chunk-MKGIW5W6.js.map} +0 -0
  262. /package/dist/{chunk-5LWVTSF7.js.map → chunk-MOQPEFLN.js.map} +0 -0
  263. /package/dist/{chunk-4ETSHAIZ.js.map → chunk-N25RPRSI.js.map} +0 -0
  264. /package/dist/{chunk-5W62ZVC6.js.map → chunk-N6TUO3O6.js.map} +0 -0
  265. /package/dist/{chunk-2IH2WNM6.js.map → chunk-NC7OAEYY.js.map} +0 -0
  266. /package/dist/{chunk-GXHRNONR.js.map → chunk-NQBD3R24.js.map} +0 -0
  267. /package/dist/{chunk-S52VKUUW.js.map → chunk-NRPLDEFR.js.map} +0 -0
  268. /package/dist/{chunk-VSBY5HAI.js.map → chunk-OH6AMNSA.js.map} +0 -0
  269. /package/dist/{chunk-NVPE6AJ3.js.map → chunk-OIKX22FU.js.map} +0 -0
  270. /package/dist/{chunk-T3XDF5RO.js.map → chunk-OJMAM4RO.js.map} +0 -0
  271. /package/dist/{chunk-NKIK4VFP.js.map → chunk-OMYCECTS.js.map} +0 -0
  272. /package/dist/{chunk-UHQ5UPAQ.js.map → chunk-OOWUOWXK.js.map} +0 -0
  273. /package/dist/{chunk-RBAG3VUT.js.map → chunk-P2FJ2KYJ.js.map} +0 -0
  274. /package/dist/{chunk-A5HBAR5Y.js.map → chunk-RQIETS2K.js.map} +0 -0
  275. /package/dist/{chunk-RWQXTR35.js.map → chunk-SFDZ66MD.js.map} +0 -0
  276. /package/dist/{chunk-YR6A6ZK7.js.map → chunk-SSUDD72S.js.map} +0 -0
  277. /package/dist/{chunk-5TS5QOZS.js.map → chunk-TWUMZCGA.js.map} +0 -0
  278. /package/dist/{chunk-Y4IQFWGD.js.map → chunk-TYR4D4GH.js.map} +0 -0
  279. /package/dist/{chunk-VE456O3R.js.map → chunk-UHKME3I7.js.map} +0 -0
  280. /package/dist/{chunk-IPLYGWQF.js.map → chunk-VDX2J7OX.js.map} +0 -0
  281. /package/dist/{chunk-542IROS3.js.map → chunk-VKWMW32Y.js.map} +0 -0
  282. /package/dist/{chunk-YF3JERFZ.js.map → chunk-VL4X7ZHC.js.map} +0 -0
  283. /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
  284. /package/dist/{chunk-GLX4SU4W.js.map → chunk-W5VYWOU3.js.map} +0 -0
  285. /package/dist/{chunk-FRD5N3CS.js.map → chunk-WZ7M2QRP.js.map} +0 -0
  286. /package/dist/{chunk-OMU54WOM.js.map → chunk-X2PBZOYZ.js.map} +0 -0
  287. /package/dist/{chunk-HVWLZ7ZQ.js.map → chunk-XC4MDMQE.js.map} +0 -0
  288. /package/dist/{chunk-JLNJ7AGH.js.map → chunk-XIA4CN3T.js.map} +0 -0
  289. /package/dist/{chunk-QNUK4SUE.js.map → chunk-XQSAPG34.js.map} +0 -0
  290. /package/dist/{chunk-QXDZYPBL.js.map → chunk-Y37KZVUM.js.map} +0 -0
  291. /package/dist/{chunk-NNPJWVGN.js.map → chunk-YNNXM6FN.js.map} +0 -0
  292. /package/dist/{chunk-47AONXWB.js.map → chunk-YYI5DZAQ.js.map} +0 -0
  293. /package/dist/{chunk-HZZIH5SW.js.map → chunk-YZENVZWY.js.map} +0 -0
@@ -23,7 +23,12 @@ import type { IdentityInjectionMode, PluginConfig, QmdSearchResult } from "../ty
23
23
  import { stateViewPacketActive } from "../recall-state-view-anchors.js";
24
24
  import { resultStateViewKey, stateViewPacketKeys } from "../recall-state-view.js";
25
25
  import { applyRecallStateViews } from "../recall-state-view-wire.js";
26
- import { composeRecallContext } from "../recall-context-composition.js";
26
+ import { composeRecallContext, type RecallContextComposition } from "../recall-context-composition.js";
27
+ import {
28
+ memoriesToStandingEntries,
29
+ prefixStandingMemoryBlock,
30
+ renderStandingMemoryBlock,
31
+ } from "../standing-memory-recall.js";
27
32
  import {
28
33
  notifyContextComposition,
29
34
  recallFailureComposition,
@@ -151,16 +156,53 @@ export class RecallEntryCoordinator {
151
156
  return lockedMsg;
152
157
  }
153
158
 
154
- // Keep outer recall timeout above worst-case serialized hybrid search:
155
- // QMD subprocess BM25 (30s) + vector (30s) can consume ~60s under contention.
159
+ let standingText = "";
160
+ const standingBudget =
161
+ typeof options.budgetCharsOverride === "number" &&
162
+ Number.isInteger(options.budgetCharsOverride) &&
163
+ options.budgetCharsOverride >= 0
164
+ ? options.budgetCharsOverride
165
+ : this.deps.config.recallBudgetChars;
166
+ if (this.deps.config.recallStandingBlock && !namespacesEnabled && standingBudget !== 0 && !options.asOf) {
167
+ try {
168
+ const memories = await this.deps.storage.readAllMemories({
169
+ abortSignal: abortController.signal,
170
+ });
171
+ standingText = renderStandingMemoryBlock(
172
+ this.deps.config,
173
+ memoriesToStandingEntries(memories, { requestingConnector: options.sourceConnector }),
174
+ );
175
+ } catch (err) {
176
+ log.warn(`standing memory block skipped: ${err}`);
177
+ }
178
+ }
179
+ const innerObserver = options.onContextComposition;
180
+ const innerBudget =
181
+ standingText.length > 0 && standingBudget && standingBudget > 0
182
+ ? Math.max(0, standingBudget - standingText.length - 2)
183
+ : options.budgetCharsOverride;
184
+ const recallOptions = {
185
+ ...options,
186
+ abortSignal: abortController.signal,
187
+ budgetCharsOverride: innerBudget,
188
+ onContextComposition:
189
+ standingText.length > 0
190
+ ? (composition: RecallContextComposition) =>
191
+ innerObserver?.({
192
+ ...composition,
193
+ context: prefixStandingMemoryBlock(
194
+ composition.context ?? "",
195
+ standingText,
196
+ standingBudget,
197
+ ),
198
+ })
199
+ : innerObserver,
200
+ };
156
201
  try {
157
- const recallPromise = this.deps.recallInternal(prompt, sessionKey, {
158
- ...options,
159
- abortSignal: abortController.signal,
160
- }, caps, graphCaps);
202
+ const recallPromise = this.deps.recallInternal(prompt, sessionKey, recallOptions, caps, graphCaps);
161
203
  const RECALL_TIMEOUT_MS = this.deps.config.recallOuterTimeoutMs ?? 75_000;
162
204
  if (RECALL_TIMEOUT_MS <= 0) {
163
- return await recallPromise;
205
+ return prefixStandingMemoryBlock(await recallPromise, standingText, standingBudget);
164
206
  }
165
207
 
166
208
  let timeoutHandle: NodeJS.Timeout | null = null;
@@ -196,18 +238,17 @@ export class RecallEntryCoordinator {
196
238
  }
197
239
  }
198
240
 
199
- return recallResult;
241
+ return prefixStandingMemoryBlock(recallResult, standingText, standingBudget);
200
242
  } catch (err) {
201
243
  this.deps.logRecallFailure(err);
202
- // endTrace() is safe here: if no trace is active (disabled or already
203
- // closed by recallInternal's try/finally), it returns null immediately.
204
244
  this.deps.profiler.endTrace();
205
- // Caller-cancelled recalls stay quiet: the failure was the caller's
206
- // abort, not a recall degradation (issue #2972 contract).
207
245
  const missing = options.abortSignal?.aborted
208
246
  ? null
209
247
  : recallFailureComposition(err);
210
248
  if (!missing) return "";
249
+ if (standingText.length > 0) {
250
+ missing.context = prefixStandingMemoryBlock(missing.context ?? "", standingText, standingBudget);
251
+ }
211
252
  notifyContextComposition(options.onContextComposition, missing, (observerErr) => {
212
253
  log.warn("recall: context composition observer failed open", observerErr);
213
254
  });
@@ -22,6 +22,7 @@ import { abortError } from "../abort-error.js";
22
22
  import { type CapabilitySet, type GraphConstructionCapabilitySet, resolveCapabilities, resolveConversationContextCapabilities, resolveGraphConstructionCapabilities, resolveIndexingCapabilities, resolveMemoryLifecycleCapabilities, resolveNamespaceCapabilities, resolvePipelineProcessingCapabilities, resolveQmdCapabilities, resolveRecallEnhancementCapabilities } from "../capabilities.js";
23
23
  import { EmbeddingFallback } from "../embedding-fallback.js";
24
24
  import { StorageManager } from "../index.js";
25
+ import { applyDirectorySidecarDrillDown, isDirectorySidecarsEnabledForDir } from "../directory-sidecars.js";
25
26
  import { inferIntentFromText, intentCompatibilityScore } from "../intent.js";
26
27
  import { log } from "../logger.js";
27
28
  import { NamespaceStorageRouter } from "../namespaces/storage.js";
@@ -342,9 +343,6 @@ export class RecallSearchPipelineCoordinator {
342
343
  const debugSearchOptions = backendHonorsQmdSearchSignals
343
344
  ? resolvedSearchOptions
344
345
  : undefined;
345
- // Cross-lingual recall (#2197): lexical tiers cannot match a query whose
346
- // dominant script differs from the corpus's, whatever the page fill.
347
- // Supplement with the embedding-fallback tier ONCE, before widening.
348
346
  const crossScriptVectorHits = options.crossScript
349
347
  ? await this.searchEmbeddingFallback(prompt, fetchLimit)
350
348
  : [];
@@ -517,7 +515,7 @@ export class RecallSearchPipelineCoordinator {
517
515
  if (filteredResults.length >= qmdFetchLimit) {
518
516
  const capped = filteredResults.slice(0, qmdFetchLimit);
519
517
  await emitDebugSnapshot(capped, fetchLimit);
520
- return capped;
518
+ return await applyDirectorySidecarDrillDown(this.deps.storage?.dir ?? "", prompt, capped, { enabled: Boolean(this.deps.storage?.dir) && isDirectorySidecarsEnabledForDir(this.deps.storage.dir), namespaces: options.namespacesEnabled ? options.recallNamespaces ?? [] : undefined });
521
519
  }
522
520
  if (filteredResults.length > bestFiltered.length) {
523
521
  bestFiltered = filteredResults;
@@ -526,7 +524,7 @@ export class RecallSearchPipelineCoordinator {
526
524
  // hits). Keep widening until the backend itself underfills the page.
527
525
  if (primaryResults.length < fetchLimit) {
528
526
  await emitDebugSnapshot(filteredResults, fetchLimit);
529
- return filteredResults;
527
+ return await applyDirectorySidecarDrillDown(this.deps.storage?.dir ?? "", prompt, filteredResults, { enabled: Boolean(this.deps.storage?.dir) && isDirectorySidecarsEnabledForDir(this.deps.storage.dir), namespaces: options.namespacesEnabled ? options.recallNamespaces ?? [] : undefined });
530
528
  }
531
529
  if (fetchLimit >= maxFetchLimit) {
532
530
  break;
@@ -538,7 +536,7 @@ export class RecallSearchPipelineCoordinator {
538
536
 
539
537
  const capped = bestFiltered.slice(0, qmdFetchLimit);
540
538
  await emitDebugSnapshot(capped, fetchLimit);
541
- return capped;
539
+ return await applyDirectorySidecarDrillDown(this.deps.storage?.dir ?? "", prompt, capped, { enabled: Boolean(this.deps.storage?.dir) && isDirectorySidecarsEnabledForDir(this.deps.storage.dir), namespaces: options.namespacesEnabled ? options.recallNamespaces ?? [] : undefined });
542
540
  }
543
541
 
544
542
  async searchEmbeddingFallback(
@@ -143,6 +143,7 @@ import { WorkspaceOpsCoordinator } from "./orchestration/workspace-ops.js";
143
143
  import { NamespaceReadFanoutCoordinator } from "./orchestration/namespace-read-fanout.js";
144
144
  import { selfDeps } from "./orchestration/self-deps.js";
145
145
  import { RecallEntryCoordinator } from "./orchestration/recall-entry.js";
146
+ import { setDirectorySidecarsEnabledForDir } from "./directory-sidecars.js";
146
147
  import { SessionContextCoordinator, type SessionFlushOptions } from "./orchestration/session-context.js";
147
148
  import { drainRecallWrites, trackRecallWrite } from "./orchestration/recall-background-writes.js";
148
149
  import { XrayCaptureQueue } from "./orchestration/xray-capture-queue.js";
@@ -1971,6 +1972,13 @@ export class Orchestrator {
1971
1972
  async initialize(): Promise<void> {
1972
1973
  this.extractionQueueCoordinator.resumeAccepting();
1973
1974
  await this.orchestratorInitCoordinator.initialize();
1975
+ {
1976
+ const memoryDir = this.storage?.dir;
1977
+ if (typeof memoryDir === "string" && memoryDir.length > 0) {
1978
+ const { directorySidecarsEnabled } = this.config;
1979
+ setDirectorySidecarsEnabledForDir(memoryDir, directorySidecarsEnabled);
1980
+ }
1981
+ }
1974
1982
  if (isDependencyPropagationEnabled(this.config)) {
1975
1983
  this._dependencyPropagationRecovery = this.dependencyPropagationDelivery
1976
1984
  .recover()
@@ -230,6 +230,7 @@ async function writeFact(memoryDir: string): Promise<void> {
230
230
  `created: ${now}`,
231
231
  `updated: ${now}`,
232
232
  "source: extraction",
233
+ "origin: user",
233
234
  "confidence: 0.8",
234
235
  "confidenceTier: high",
235
236
  "tags: []",
@@ -242,7 +243,7 @@ async function writeFact(memoryDir: string): Promise<void> {
242
243
  await writeFile(path.join(factsDir, "standing-fact.md"), `${fact.join("\n")}\n`, "utf-8");
243
244
  }
244
245
 
245
- test("zero-diff: recall output is byte-identical with the flag off vs on (pre-wiring)", async () => {
246
+ test("recall injects the standing memory block when the flag is on", async () => {
246
247
  const off = await makeOrchestrator();
247
248
  const on = await makeOrchestrator({ recallStandingBlock: true });
248
249
  try {
@@ -250,8 +251,8 @@ test("zero-diff: recall output is byte-identical with the flag off vs on (pre-wi
250
251
  await writeFact(on.memoryDir);
251
252
  const outOff = await off.orchestrator.recall("how do deploys go out", "sess-standing-off");
252
253
  const outOn = await on.orchestrator.recall("how do deploys go out", "sess-standing-on");
253
- assert.equal(outOn, outOff, "recall must not change until the wiring slice lands");
254
- assert.ok(!outOn.includes("## Standing Memory (Remnic)"), "no standing block in recall output");
254
+ assert.ok(!outOff.includes("## Standing Memory (Remnic)"), "flag off keeps recall unchanged");
255
+ assert.ok(outOn.includes("## Standing Memory (Remnic)"), "flag on injects the standing block");
255
256
  assert.ok(outOn.includes("blue pipeline"), "sanity: the fact is recalled");
256
257
  } finally {
257
258
  await off.orchestrator.destroy();
@@ -0,0 +1,30 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import { parseConfig } from "./config.js";
5
+ import {
6
+ memoriesToStandingEntries,
7
+ prefixStandingMemoryBlock,
8
+ renderStandingMemoryBlock,
9
+ } from "./standing-memory-recall.js";
10
+
11
+ test("#3089 standing block is omitted when recallStandingBlock is off", () => {
12
+ const off = parseConfig({});
13
+ const on = parseConfig({ recallStandingBlock: true });
14
+ const entries = memoriesToStandingEntries([
15
+ {
16
+ id: "fact-1",
17
+ content: "The blue pipeline is the only deploy path.",
18
+ frontmatter: { id: "fact-1", pinned: true, origin: "user" },
19
+ },
20
+ ]);
21
+ const recall = "per-turn recall";
22
+ assert.equal(renderStandingMemoryBlock(off, entries), "");
23
+ assert.equal(prefixStandingMemoryBlock(recall, renderStandingMemoryBlock(off, entries)), recall);
24
+ const standing = renderStandingMemoryBlock(on, entries);
25
+ assert.ok(standing.includes("## Standing Memory (Remnic)"));
26
+ assert.ok(standing.includes("blue pipeline"));
27
+ const prefixed = prefixStandingMemoryBlock(recall, standing);
28
+ assert.ok(prefixed.startsWith(standing));
29
+ assert.ok(prefixed.includes("per-turn recall"));
30
+ });
@@ -0,0 +1,87 @@
1
+ import {
2
+ DEFAULT_UNTRUSTED_ORIGINS,
3
+ isUntrustedOrigin,
4
+ parseOriginClass,
5
+ } from "./security/origin-authority.js";
6
+ import type { PluginConfig } from "./types.js";
7
+ import {
8
+ buildStandingMemoryBlock,
9
+ lintStandingBlockVolatility,
10
+ type StandingMemoryEntry,
11
+ } from "./standing-memory-block.js";
12
+
13
+ export interface StandingMemorySource {
14
+ id?: string;
15
+ path?: string;
16
+ content: string;
17
+ frontmatter: {
18
+ id?: unknown;
19
+ pinned?: unknown;
20
+ updated?: unknown;
21
+ origin?: unknown;
22
+ status?: unknown;
23
+ toolScoped?: unknown;
24
+ sourceConnector?: unknown;
25
+ };
26
+ }
27
+
28
+ export function memoriesToStandingEntries(
29
+ memories: readonly StandingMemorySource[],
30
+ opts: { requestingConnector?: string } = {},
31
+ ): StandingMemoryEntry[] {
32
+ const entries: StandingMemoryEntry[] = [];
33
+ for (const memory of memories) {
34
+ const id = String(memory.frontmatter.id ?? memory.id ?? memory.path ?? "");
35
+ if (!id) continue;
36
+ if (isUntrustedOrigin(parseOriginClass(memory.frontmatter.origin), DEFAULT_UNTRUSTED_ORIGINS)) {
37
+ continue;
38
+ }
39
+ if (typeof memory.frontmatter.status === "string" && memory.frontmatter.status !== "active") {
40
+ continue;
41
+ }
42
+ const requestingConnector = opts.requestingConnector?.trim();
43
+ const memoryConnector =
44
+ typeof memory.frontmatter.sourceConnector === "string" ? memory.frontmatter.sourceConnector.trim() : "";
45
+ if (memory.frontmatter.toolScoped === true && memoryConnector && requestingConnector && memoryConnector !== requestingConnector) {
46
+ continue;
47
+ }
48
+ const description =
49
+ memory.content
50
+ .split("\n")
51
+ .map((line) => line.trim())
52
+ .find((line) => line.length > 0 && !line.startsWith("#") && !line.startsWith("---")) ?? "";
53
+ if (description.length < 8) continue;
54
+ if (lintStandingBlockVolatility(description).length > 0) continue;
55
+ const pinned = memory.frontmatter.pinned === true;
56
+ const lastChangedAt =
57
+ typeof memory.frontmatter.updated === "string" ? memory.frontmatter.updated : undefined;
58
+ entries.push({ id, description: description.slice(0, 200), pinned, lastChangedAt });
59
+ }
60
+ return entries;
61
+ }
62
+
63
+ export function renderStandingMemoryBlock(config: PluginConfig, entries: StandingMemoryEntry[]): string {
64
+ if (!config.recallStandingBlock || entries.length === 0) return "";
65
+ try {
66
+ return buildStandingMemoryBlock({
67
+ entries,
68
+ nowMs: Date.now(),
69
+ maxChars: config.standingBlockMaxChars,
70
+ freshDays: config.standingBlockFreshDays,
71
+ }).text;
72
+ } catch {
73
+ return "";
74
+ }
75
+ }
76
+
77
+ export function prefixStandingMemoryBlock(
78
+ recallResult: string,
79
+ standingText: string,
80
+ budgetChars?: number,
81
+ ): string {
82
+ if (standingText.length === 0) return recallResult;
83
+ if (budgetChars === 0) return recallResult;
84
+ const combined = `${standingText}\n\n${recallResult}`;
85
+ if (!budgetChars || combined.length <= budgetChars) return combined;
86
+ return combined.slice(0, budgetChars);
87
+ }
package/src/storage.ts CHANGED
@@ -248,8 +248,7 @@ import {
248
248
  sealedWriteToLegacyArgs,
249
249
  type SealedMemoryEnvelope,
250
250
  } from "./write-envelope.js";
251
- // stripCitation import removed: legacy rebuild fallback was replaced by a
252
- // skip-with-warning strategy (Finding 1 — Uhol). See ensureFactHashIndexAuthoritative.
251
+ import { isDirectorySidecarsEnabledForDir, refreshDirectorySidecarsAfterWrite } from "./directory-sidecars.js";
253
252
  type SharedVersionKind = "memory-status" | "artifact-write" | "cold-write" | "memory-corpus" | "entity-mutation";
254
253
 
255
254
  type OfflineSyncDigestCacheEntry = {
@@ -3973,25 +3972,7 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
3973
3972
  return { id, tombstoneBlocked, ...(fm.blockedBy ? { blockedBy: fm.blockedBy } : {}), memory: { path: filePath, frontmatter: fm, content: sanitized.text } };
3974
3973
  }
3975
3974
 
3976
- /**
3977
- * Sealed-envelope write entry point (issue #1989 PR2).
3978
- *
3979
- * Byte-identity with `writeMemory` is BY DELEGATION: the envelope-owned
3980
- * fields are unpacked into the exact `writeMemory` arguments a legacy
3981
- * caller would have passed, so the persisted output is produced by the
3982
- * same code path. The composer's `persistedBody` was assembled with the
3983
- * same `assemblePersistedBody` helper `writeMemory` uses, so fingerprints
3984
- * derived from the envelope match the stored body (§13).
3985
- *
3986
- * Differences from a raw `writeMemory` call are REJECTIONS, not silent
3987
- * changes: the composer enforces tag/attribute caps, strict validAt, and
3988
- * plain-object attributes that the legacy path never validated.
3989
- *
3990
- * `envelope.ttl` maps to `expiresAt` verbatim; converting duration
3991
- * expressions (`"90d"`) to instants remains the access layer's job (PR3).
3992
- * `envelope.sourceReason` is access-layer metadata with no frontmatter
3993
- * field and is deliberately not persisted here.
3994
- */
3975
+ /** Sealed-envelope write entry point (issue #1989 PR2). */
3995
3976
  async writeSealedMemory(envelope: SealedMemoryEnvelope, extras: SealedWriteExtras = {}) {
3996
3977
  if (!isSealedMemoryEnvelope(envelope)) {
3997
3978
  throw new Error(
@@ -3999,7 +3980,17 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
3999
3980
  );
4000
3981
  }
4001
3982
  const { category, content, options } = sealedWriteToLegacyArgs(envelope, extras);
4002
- return this.writeMemory(category, content, options as WriteMemoryOptions);
3983
+ const result = await this.writeMemory(category, content, options as WriteMemoryOptions);
3984
+ try {
3985
+ await refreshDirectorySidecarsAfterWrite(
3986
+ this.dir,
3987
+ result.memory?.path ?? "",
3988
+ isDirectorySidecarsEnabledForDir(this.dir),
3989
+ );
3990
+ } catch (err) {
3991
+ log.warn(`directory sidecar refresh failed after write: ${err}`);
3992
+ }
3993
+ return result;
4003
3994
  }
4004
3995
 
4005
3996
  async hasFactContentHash(content: string): Promise<boolean> {
package/src/types.ts CHANGED
@@ -996,12 +996,12 @@ export interface PluginConfig
996
996
  recallDirectAnswerEnabled: boolean;
997
997
  /** Recall state views (issue #1952): label current/historical/transition on change-intent queries. Default false. */
998
998
  recallStateViews: boolean;
999
- /** Standing memory block (issue #2971): byte-stable pinned-memory index injected before per-turn recall; parsed now, injection lands in a later slice. Default false. */
999
+ /** Standing memory block (issue #2971). Default false. */
1000
1000
  recallStandingBlock: boolean;
1001
- /** Days a memory stays in the standing block's full-text fresh band. Default 14. */
1002
1001
  standingBlockFreshDays: number;
1003
- /** Hard character budget for the standing memory block. Default 2048. */
1004
1002
  standingBlockMaxChars: number;
1003
+ /** Directory sidecars (issue #3088). Default false. */
1004
+ directorySidecarsEnabled: boolean;
1005
1005
  /**
1006
1006
  * Disclosure auto-escalation policy (issue #677 PR 4/4). `"auto"`
1007
1007
  * escalates chunk → section when top-K confidence falls below