@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.
- package/dist/access-admin-ops-surface.js +35 -36
- package/dist/access-authorization-probe.js +36 -37
- package/dist/access-boundary.js +35 -36
- package/dist/access-cli.js +94 -94
- package/dist/access-extraction-force-flush.js +35 -36
- package/dist/access-http-briefing.js +36 -37
- package/dist/access-http-query.js +37 -38
- package/dist/access-http.js +55 -56
- package/dist/access-identity-continuity-surface.js +35 -36
- package/dist/access-lcm-surface.js +35 -36
- package/dist/access-mcp.js +46 -47
- package/dist/access-namespace-preflight.js +35 -36
- package/dist/access-observe-write-category.js +7 -7
- package/dist/access-observe-write-surface.js +35 -36
- package/dist/access-offline-manifest.js +3 -3
- package/dist/access-operations-batch.js +37 -38
- package/dist/access-operations.js +44 -45
- package/dist/access-recall-concurrency.js +35 -36
- package/dist/access-recall-diagnostics.js +2 -2
- package/dist/access-recall-response.js +35 -36
- package/dist/access-recall-surface.js +35 -36
- package/dist/access-schema.js +4 -4
- package/dist/access-service.js +35 -36
- package/dist/access-surface-catalog.js +37 -38
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +9 -8
- package/dist/active-recall.js.map +1 -1
- package/dist/{auto-sync-QJNIKZHV.js → auto-sync-WEUDMXUW.js} +4 -4
- package/dist/briefing.js +8 -7
- package/dist/buffer.js +4 -4
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
- package/dist/causal-consolidation.js +9 -8
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-SYTPPMCM.js → chunk-252U6XYX.js} +2 -2
- package/dist/{chunk-IXLHREAB.js → chunk-2MLWQMXH.js} +2 -2
- package/dist/{chunk-ZL3Q4OWJ.js → chunk-34R75BVF.js} +2 -2
- package/dist/{chunk-3SBDUMPW.js → chunk-364F6EMG.js} +2 -2
- package/dist/{chunk-ZMV67JXV.js → chunk-4GPI3GVE.js} +4 -4
- package/dist/{chunk-V6ULW25E.js → chunk-4MONIKIY.js} +2 -2
- package/dist/{chunk-SIV2ENTD.js → chunk-5D6IMOW6.js} +30 -30
- package/dist/{chunk-BRJNNP7R.js → chunk-5ELXQQY7.js} +2 -2
- package/dist/{chunk-ZUT4FK5W.js → chunk-5Z574AVZ.js} +2 -2
- package/dist/{chunk-NS2SFWKC.js → chunk-6FJCKMSJ.js} +3 -3
- package/dist/{chunk-PDY7C73D.js → chunk-6OACG7JV.js} +2 -2
- package/dist/{chunk-QOL6OTIK.js → chunk-6OR3AQHP.js} +2 -2
- package/dist/{chunk-AG5QWIU7.js → chunk-6RBUAPQT.js} +19 -25
- package/dist/chunk-6RBUAPQT.js.map +1 -0
- package/dist/{chunk-WQC54W25.js → chunk-6VQFPA3J.js} +2 -2
- package/dist/{chunk-GM2UUMWJ.js → chunk-74C5FI4S.js} +5 -5
- package/dist/{chunk-A7AI3WDN.js → chunk-AV5K5QH4.js} +4 -4
- package/dist/{chunk-BMTR244T.js → chunk-BFDBLAVG.js} +2 -2
- package/dist/{chunk-IGEZE6QB.js → chunk-BMYZTZ5D.js} +4 -4
- package/dist/{chunk-7JFQI6DQ.js → chunk-BOUFVFV2.js} +2 -2
- package/dist/{chunk-CGO3A7SR.js → chunk-BRBB62TS.js} +2 -2
- package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
- package/dist/{chunk-GZBNEZIU.js → chunk-DBYAY6UW.js} +3 -3
- package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
- package/dist/{chunk-U3NBO4IX.js → chunk-FAT6HY7N.js} +119 -37
- package/dist/chunk-FAT6HY7N.js.map +1 -0
- package/dist/{chunk-ML64HXAN.js → chunk-FCVPZIHF.js} +2 -2
- package/dist/{chunk-B5EZWPSM.js → chunk-FUWW7ED4.js} +2 -2
- package/dist/{chunk-HXRZRYHQ.js → chunk-GN7YTM5I.js} +2 -2
- package/dist/{chunk-XDOXR3U6.js → chunk-HC4RWJR3.js} +2 -2
- package/dist/{chunk-HA5V67N4.js → chunk-HKPGEFIT.js} +2 -2
- package/dist/{chunk-MB3HMRXM.js → chunk-I6PZTU3Q.js} +2 -2
- package/dist/{chunk-KSJP3AWY.js → chunk-IGJL6JOD.js} +2 -2
- package/dist/{chunk-KK6TS7ED.js → chunk-IV2CY3RE.js} +3 -3
- package/dist/{chunk-ZIJ5FAI4.js → chunk-J3NN2Q4Z.js} +5 -5
- package/dist/{chunk-2JJVJMN6.js → chunk-JBHCTDYF.js} +2 -2
- package/dist/{chunk-D4SPMHEW.js → chunk-JLPNONPH.js} +2 -2
- package/dist/{chunk-BFUYPEJB.js → chunk-JOAR32R6.js} +2 -2
- package/dist/{chunk-FJZUIM5G.js → chunk-JU5MAF2L.js} +2 -2
- package/dist/{chunk-AEGQ5PJ7.js → chunk-JX6USXZR.js} +2 -2
- package/dist/{chunk-VEBYLZQQ.js → chunk-KN6CIN7I.js} +2 -2
- package/dist/{chunk-UJX4I26O.js → chunk-KOXUUJE3.js} +2 -2
- package/dist/{chunk-5UBH37SL.js → chunk-LI76ESJL.js} +4 -4
- package/dist/chunk-LJLGH2DE.js +65 -0
- package/dist/chunk-LJLGH2DE.js.map +1 -0
- package/dist/{chunk-B2PGHXTP.js → chunk-LTS2XIU3.js} +2 -2
- package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
- package/dist/{chunk-WZGSSLYI.js → chunk-MKGIW5W6.js} +2 -2
- package/dist/{chunk-5LWVTSF7.js → chunk-MOQPEFLN.js} +4 -4
- package/dist/{chunk-4ETSHAIZ.js → chunk-N25RPRSI.js} +8 -8
- package/dist/{chunk-5W62ZVC6.js → chunk-N6TUO3O6.js} +2 -2
- package/dist/{chunk-2IH2WNM6.js → chunk-NC7OAEYY.js} +3 -3
- package/dist/{chunk-GXHRNONR.js → chunk-NQBD3R24.js} +2 -2
- package/dist/{chunk-S52VKUUW.js → chunk-NRPLDEFR.js} +2 -2
- package/dist/{chunk-VSBY5HAI.js → chunk-OH6AMNSA.js} +2 -2
- package/dist/{chunk-NVPE6AJ3.js → chunk-OIKX22FU.js} +1 -1
- package/dist/{chunk-T3XDF5RO.js → chunk-OJMAM4RO.js} +2 -2
- package/dist/{chunk-NKIK4VFP.js → chunk-OMYCECTS.js} +2 -2
- package/dist/{chunk-UHQ5UPAQ.js → chunk-OOWUOWXK.js} +2 -2
- package/dist/{chunk-RBAG3VUT.js → chunk-P2FJ2KYJ.js} +17 -17
- package/dist/{chunk-F5O6WEDO.js → chunk-PWF4JXKD.js} +1 -1
- package/dist/chunk-PWF4JXKD.js.map +1 -0
- package/dist/{chunk-A5HBAR5Y.js → chunk-RQIETS2K.js} +2 -2
- package/dist/{chunk-RWQXTR35.js → chunk-SFDZ66MD.js} +2 -2
- package/dist/{chunk-YR6A6ZK7.js → chunk-SSUDD72S.js} +2 -2
- package/dist/{chunk-5TS5QOZS.js → chunk-TWUMZCGA.js} +6 -6
- package/dist/{chunk-Y4IQFWGD.js → chunk-TYR4D4GH.js} +2 -2
- package/dist/{chunk-VE456O3R.js → chunk-UHKME3I7.js} +2 -2
- package/dist/{chunk-IPLYGWQF.js → chunk-VDX2J7OX.js} +6 -6
- package/dist/{chunk-542IROS3.js → chunk-VKWMW32Y.js} +2 -2
- package/dist/{chunk-YF3JERFZ.js → chunk-VL4X7ZHC.js} +2 -2
- package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
- package/dist/{chunk-GLX4SU4W.js → chunk-W5VYWOU3.js} +2 -2
- package/dist/{chunk-FRD5N3CS.js → chunk-WZ7M2QRP.js} +2 -2
- package/dist/{chunk-OMU54WOM.js → chunk-X2PBZOYZ.js} +2 -2
- package/dist/{chunk-HVWLZ7ZQ.js → chunk-XC4MDMQE.js} +4 -4
- package/dist/{chunk-JLNJ7AGH.js → chunk-XIA4CN3T.js} +7 -7
- package/dist/{chunk-JTGL6UX7.js → chunk-XLLRMUMH.js} +8 -7
- package/dist/chunk-XLLRMUMH.js.map +1 -0
- package/dist/{chunk-SUD76OMV.js → chunk-XNTIX4LA.js} +97 -50
- package/dist/chunk-XNTIX4LA.js.map +1 -0
- package/dist/{chunk-QNUK4SUE.js → chunk-XQSAPG34.js} +2 -2
- package/dist/{chunk-QXDZYPBL.js → chunk-Y37KZVUM.js} +2 -2
- package/dist/{chunk-NNPJWVGN.js → chunk-YNNXM6FN.js} +38 -38
- package/dist/{chunk-SB4ZWVKI.js → chunk-YPWOZ6ME.js} +3 -5
- package/dist/{chunk-SB4ZWVKI.js.map → chunk-YPWOZ6ME.js.map} +1 -1
- package/dist/{chunk-47AONXWB.js → chunk-YYI5DZAQ.js} +2 -2
- package/dist/{chunk-HZZIH5SW.js → chunk-YZENVZWY.js} +2 -2
- package/dist/cli.js +74 -75
- package/dist/coding/export-okf-codegraph.js +8 -7
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +8 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -8
- package/dist/connectors/codex-materialize-runner.js +8 -7
- package/dist/connectors/index.js +8 -7
- package/dist/convergence-refresh.js +10 -10
- package/dist/corpus-watermark.js +10 -9
- package/dist/deep-recall-http-glue.js +5 -5
- package/dist/directory-sidecars.d.ts +3 -0
- package/dist/directory-sidecars.d.ts.map +1 -1
- package/dist/directory-sidecars.js +7 -4
- package/dist/entity-retrieval.js +8 -7
- package/dist/external-wiki-access.js +36 -37
- package/dist/extraction.js +12 -12
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.js +102 -102
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.js +8 -8
- package/dist/location/index.js +11 -11
- package/dist/maintenance/memory-governance.js +8 -7
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -8
- package/dist/maintenance/rebuild-memory-projection.js +9 -9
- package/dist/memory-browse-operations.js +36 -37
- package/dist/memory-browse.js +3 -4
- package/dist/namespaces/migrate.js +9 -8
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.js +8 -7
- package/dist/offline-sync-impression-drain.js +2 -2
- package/dist/operator-doctor-corpus.js +11 -10
- package/dist/operator-toolkit.js +18 -17
- package/dist/orchestration/maintenance.js +17 -17
- package/dist/orchestration/recall-entry.d.ts.map +1 -1
- package/dist/orchestration/recall-search-pipeline.d.ts.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +94 -94
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.js +2 -2
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-navigation-operations.js +36 -37
- package/dist/recall-navigation.js +35 -36
- package/dist/recall-state-view-admission.js +3 -4
- package/dist/recall-state.js +2 -2
- package/dist/recall-why-service.js +3 -4
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.js +2 -2
- package/dist/resume-bundles.js +10 -9
- package/dist/search/factory.js +2 -2
- package/dist/search/index.js +4 -4
- package/dist/semantic-consolidation.js +9 -8
- package/dist/semantic-rule-promotion.js +8 -7
- package/dist/semantic-rule-verifier.js +8 -7
- package/dist/source-agent-qualifier.js +11 -11
- package/dist/standing-memory-recall.d.ts +22 -0
- package/dist/standing-memory-recall.d.ts.map +1 -0
- package/dist/standing-memory-recall.js +16 -0
- package/dist/standing-memory-recall.js.map +1 -0
- package/dist/standup/build.js +8 -7
- package/dist/storage.d.ts +1 -19
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +7 -6
- package/dist/support-passport/index.js +38 -39
- package/dist/transfer/autodetect.js +1 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +3 -3
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +9 -8
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +8 -7
- package/dist/who-knows-cli.js +9 -8
- package/dist/who-knows.js +8 -7
- package/package.json +2 -2
- package/src/config.ts +2 -3
- package/src/directory-sidecars-config.test.ts +34 -0
- package/src/directory-sidecars.ts +27 -6
- package/src/orchestration/recall-entry.ts +54 -13
- package/src/orchestration/recall-search-pipeline.ts +4 -6
- package/src/orchestrator.ts +8 -0
- package/src/standing-memory-block.test.ts +4 -3
- package/src/standing-memory-recall.test.ts +30 -0
- package/src/standing-memory-recall.ts +87 -0
- package/src/storage.ts +13 -22
- package/src/types.ts +3 -3
- package/dist/chunk-AG5QWIU7.js.map +0 -1
- package/dist/chunk-F5O6WEDO.js.map +0 -1
- package/dist/chunk-JTGL6UX7.js.map +0 -1
- package/dist/chunk-PCEYGOSL.js +0 -66
- package/dist/chunk-PCEYGOSL.js.map +0 -1
- package/dist/chunk-SUD76OMV.js.map +0 -1
- package/dist/chunk-U3NBO4IX.js.map +0 -1
- /package/dist/{auto-sync-QJNIKZHV.js.map → auto-sync-WEUDMXUW.js.map} +0 -0
- /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
- /package/dist/{chunk-SYTPPMCM.js.map → chunk-252U6XYX.js.map} +0 -0
- /package/dist/{chunk-IXLHREAB.js.map → chunk-2MLWQMXH.js.map} +0 -0
- /package/dist/{chunk-ZL3Q4OWJ.js.map → chunk-34R75BVF.js.map} +0 -0
- /package/dist/{chunk-3SBDUMPW.js.map → chunk-364F6EMG.js.map} +0 -0
- /package/dist/{chunk-ZMV67JXV.js.map → chunk-4GPI3GVE.js.map} +0 -0
- /package/dist/{chunk-V6ULW25E.js.map → chunk-4MONIKIY.js.map} +0 -0
- /package/dist/{chunk-SIV2ENTD.js.map → chunk-5D6IMOW6.js.map} +0 -0
- /package/dist/{chunk-BRJNNP7R.js.map → chunk-5ELXQQY7.js.map} +0 -0
- /package/dist/{chunk-ZUT4FK5W.js.map → chunk-5Z574AVZ.js.map} +0 -0
- /package/dist/{chunk-NS2SFWKC.js.map → chunk-6FJCKMSJ.js.map} +0 -0
- /package/dist/{chunk-PDY7C73D.js.map → chunk-6OACG7JV.js.map} +0 -0
- /package/dist/{chunk-QOL6OTIK.js.map → chunk-6OR3AQHP.js.map} +0 -0
- /package/dist/{chunk-WQC54W25.js.map → chunk-6VQFPA3J.js.map} +0 -0
- /package/dist/{chunk-GM2UUMWJ.js.map → chunk-74C5FI4S.js.map} +0 -0
- /package/dist/{chunk-A7AI3WDN.js.map → chunk-AV5K5QH4.js.map} +0 -0
- /package/dist/{chunk-BMTR244T.js.map → chunk-BFDBLAVG.js.map} +0 -0
- /package/dist/{chunk-IGEZE6QB.js.map → chunk-BMYZTZ5D.js.map} +0 -0
- /package/dist/{chunk-7JFQI6DQ.js.map → chunk-BOUFVFV2.js.map} +0 -0
- /package/dist/{chunk-CGO3A7SR.js.map → chunk-BRBB62TS.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
- /package/dist/{chunk-GZBNEZIU.js.map → chunk-DBYAY6UW.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
- /package/dist/{chunk-ML64HXAN.js.map → chunk-FCVPZIHF.js.map} +0 -0
- /package/dist/{chunk-B5EZWPSM.js.map → chunk-FUWW7ED4.js.map} +0 -0
- /package/dist/{chunk-HXRZRYHQ.js.map → chunk-GN7YTM5I.js.map} +0 -0
- /package/dist/{chunk-XDOXR3U6.js.map → chunk-HC4RWJR3.js.map} +0 -0
- /package/dist/{chunk-HA5V67N4.js.map → chunk-HKPGEFIT.js.map} +0 -0
- /package/dist/{chunk-MB3HMRXM.js.map → chunk-I6PZTU3Q.js.map} +0 -0
- /package/dist/{chunk-KSJP3AWY.js.map → chunk-IGJL6JOD.js.map} +0 -0
- /package/dist/{chunk-KK6TS7ED.js.map → chunk-IV2CY3RE.js.map} +0 -0
- /package/dist/{chunk-ZIJ5FAI4.js.map → chunk-J3NN2Q4Z.js.map} +0 -0
- /package/dist/{chunk-2JJVJMN6.js.map → chunk-JBHCTDYF.js.map} +0 -0
- /package/dist/{chunk-D4SPMHEW.js.map → chunk-JLPNONPH.js.map} +0 -0
- /package/dist/{chunk-BFUYPEJB.js.map → chunk-JOAR32R6.js.map} +0 -0
- /package/dist/{chunk-FJZUIM5G.js.map → chunk-JU5MAF2L.js.map} +0 -0
- /package/dist/{chunk-AEGQ5PJ7.js.map → chunk-JX6USXZR.js.map} +0 -0
- /package/dist/{chunk-VEBYLZQQ.js.map → chunk-KN6CIN7I.js.map} +0 -0
- /package/dist/{chunk-UJX4I26O.js.map → chunk-KOXUUJE3.js.map} +0 -0
- /package/dist/{chunk-5UBH37SL.js.map → chunk-LI76ESJL.js.map} +0 -0
- /package/dist/{chunk-B2PGHXTP.js.map → chunk-LTS2XIU3.js.map} +0 -0
- /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
- /package/dist/{chunk-WZGSSLYI.js.map → chunk-MKGIW5W6.js.map} +0 -0
- /package/dist/{chunk-5LWVTSF7.js.map → chunk-MOQPEFLN.js.map} +0 -0
- /package/dist/{chunk-4ETSHAIZ.js.map → chunk-N25RPRSI.js.map} +0 -0
- /package/dist/{chunk-5W62ZVC6.js.map → chunk-N6TUO3O6.js.map} +0 -0
- /package/dist/{chunk-2IH2WNM6.js.map → chunk-NC7OAEYY.js.map} +0 -0
- /package/dist/{chunk-GXHRNONR.js.map → chunk-NQBD3R24.js.map} +0 -0
- /package/dist/{chunk-S52VKUUW.js.map → chunk-NRPLDEFR.js.map} +0 -0
- /package/dist/{chunk-VSBY5HAI.js.map → chunk-OH6AMNSA.js.map} +0 -0
- /package/dist/{chunk-NVPE6AJ3.js.map → chunk-OIKX22FU.js.map} +0 -0
- /package/dist/{chunk-T3XDF5RO.js.map → chunk-OJMAM4RO.js.map} +0 -0
- /package/dist/{chunk-NKIK4VFP.js.map → chunk-OMYCECTS.js.map} +0 -0
- /package/dist/{chunk-UHQ5UPAQ.js.map → chunk-OOWUOWXK.js.map} +0 -0
- /package/dist/{chunk-RBAG3VUT.js.map → chunk-P2FJ2KYJ.js.map} +0 -0
- /package/dist/{chunk-A5HBAR5Y.js.map → chunk-RQIETS2K.js.map} +0 -0
- /package/dist/{chunk-RWQXTR35.js.map → chunk-SFDZ66MD.js.map} +0 -0
- /package/dist/{chunk-YR6A6ZK7.js.map → chunk-SSUDD72S.js.map} +0 -0
- /package/dist/{chunk-5TS5QOZS.js.map → chunk-TWUMZCGA.js.map} +0 -0
- /package/dist/{chunk-Y4IQFWGD.js.map → chunk-TYR4D4GH.js.map} +0 -0
- /package/dist/{chunk-VE456O3R.js.map → chunk-UHKME3I7.js.map} +0 -0
- /package/dist/{chunk-IPLYGWQF.js.map → chunk-VDX2J7OX.js.map} +0 -0
- /package/dist/{chunk-542IROS3.js.map → chunk-VKWMW32Y.js.map} +0 -0
- /package/dist/{chunk-YF3JERFZ.js.map → chunk-VL4X7ZHC.js.map} +0 -0
- /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
- /package/dist/{chunk-GLX4SU4W.js.map → chunk-W5VYWOU3.js.map} +0 -0
- /package/dist/{chunk-FRD5N3CS.js.map → chunk-WZ7M2QRP.js.map} +0 -0
- /package/dist/{chunk-OMU54WOM.js.map → chunk-X2PBZOYZ.js.map} +0 -0
- /package/dist/{chunk-HVWLZ7ZQ.js.map → chunk-XC4MDMQE.js.map} +0 -0
- /package/dist/{chunk-JLNJ7AGH.js.map → chunk-XIA4CN3T.js.map} +0 -0
- /package/dist/{chunk-QNUK4SUE.js.map → chunk-XQSAPG34.js.map} +0 -0
- /package/dist/{chunk-QXDZYPBL.js.map → chunk-Y37KZVUM.js.map} +0 -0
- /package/dist/{chunk-NNPJWVGN.js.map → chunk-YNNXM6FN.js.map} +0 -0
- /package/dist/{chunk-47AONXWB.js.map → chunk-YYI5DZAQ.js.map} +0 -0
- /package/dist/{chunk-HZZIH5SW.js.map → chunk-YZENVZWY.js.map} +0 -0
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-5JMAGU26.js";
|
|
6
6
|
import {
|
|
7
7
|
runPostConsolidationMaterialize
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-W5VYWOU3.js";
|
|
9
9
|
import {
|
|
10
10
|
isSemanticConsolidationLlmOperator
|
|
11
11
|
} from "./chunk-G7D6GZ5J.js";
|
|
@@ -220,4 +220,4 @@ export {
|
|
|
220
220
|
buildExtensionsBlockForConsolidation,
|
|
221
221
|
materializeAfterSemanticConsolidation
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-XQSAPG34.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
listNamespaces
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NC7OAEYY.js";
|
|
4
4
|
import {
|
|
5
5
|
capabilityAllowsNamespace
|
|
6
6
|
} from "./chunk-IG747LRN.js";
|
|
@@ -282,4 +282,4 @@ export {
|
|
|
282
282
|
computeServiceCorpusWatermarks,
|
|
283
283
|
computeServiceCorpusCensus
|
|
284
284
|
};
|
|
285
|
-
//# sourceMappingURL=chunk-
|
|
285
|
+
//# sourceMappingURL=chunk-Y37KZVUM.js.map
|
|
@@ -7,6 +7,9 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
openclawReplayNormalizer
|
|
9
9
|
} from "./chunk-H4CKS5B2.js";
|
|
10
|
+
import {
|
|
11
|
+
importMarkdownBundle
|
|
12
|
+
} from "./chunk-HDDRVXX4.js";
|
|
10
13
|
import {
|
|
11
14
|
importSqlite
|
|
12
15
|
} from "./chunk-PYHOAXTI.js";
|
|
@@ -16,13 +19,10 @@ import {
|
|
|
16
19
|
import {
|
|
17
20
|
exportOkfBundle,
|
|
18
21
|
parseIncludeStatus
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-AV5K5QH4.js";
|
|
20
23
|
import {
|
|
21
24
|
exportSqlite
|
|
22
25
|
} from "./chunk-BV2TIZ4F.js";
|
|
23
|
-
import {
|
|
24
|
-
importMarkdownBundle
|
|
25
|
-
} from "./chunk-HDDRVXX4.js";
|
|
26
26
|
import {
|
|
27
27
|
detectImportFormat
|
|
28
28
|
} from "./chunk-OZKVVUJB.js";
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
} from "./chunk-2DL3OFLD.js";
|
|
32
32
|
import {
|
|
33
33
|
backupMemoryDir
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-BXLOS5AJ.js";
|
|
35
35
|
import {
|
|
36
36
|
exportMarkdownBundle
|
|
37
37
|
} from "./chunk-765K3SAT.js";
|
|
@@ -53,18 +53,18 @@ import {
|
|
|
53
53
|
import {
|
|
54
54
|
WebDavServer
|
|
55
55
|
} from "./chunk-PYIFUBRK.js";
|
|
56
|
+
import {
|
|
57
|
+
migrateObservations
|
|
58
|
+
} from "./chunk-IIFFC3RL.js";
|
|
56
59
|
import {
|
|
57
60
|
rebuildMemoryLifecycleLedger
|
|
58
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-RQIETS2K.js";
|
|
59
62
|
import {
|
|
60
63
|
rebuildObservations
|
|
61
64
|
} from "./chunk-DQTCGVFK.js";
|
|
62
65
|
import {
|
|
63
66
|
archiveObservations
|
|
64
67
|
} from "./chunk-YLBE6PLR.js";
|
|
65
|
-
import {
|
|
66
|
-
migrateObservations
|
|
67
|
-
} from "./chunk-IIFFC3RL.js";
|
|
68
68
|
import {
|
|
69
69
|
getBulkImportSource,
|
|
70
70
|
listBulkImportSources,
|
|
@@ -73,10 +73,13 @@ import {
|
|
|
73
73
|
} from "./chunk-HSSERO3E.js";
|
|
74
74
|
import {
|
|
75
75
|
lintOkfDir
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-KOXUUJE3.js";
|
|
77
77
|
import {
|
|
78
78
|
runCompatChecks
|
|
79
79
|
} from "./chunk-2524MOWK.js";
|
|
80
|
+
import {
|
|
81
|
+
searchVerifiedEpisodes
|
|
82
|
+
} from "./chunk-GN7YTM5I.js";
|
|
80
83
|
import {
|
|
81
84
|
getUtilityLearningStatus,
|
|
82
85
|
learnUtilityPromotionWeights
|
|
@@ -85,23 +88,20 @@ import {
|
|
|
85
88
|
getUtilityTelemetryStatus,
|
|
86
89
|
recordUtilityTelemetryEvent
|
|
87
90
|
} from "./chunk-EBA5DA77.js";
|
|
88
|
-
import {
|
|
89
|
-
searchVerifiedEpisodes
|
|
90
|
-
} from "./chunk-HXRZRYHQ.js";
|
|
91
91
|
import {
|
|
92
92
|
ThreadingManager
|
|
93
93
|
} from "./chunk-OJP3N7UK.js";
|
|
94
94
|
import {
|
|
95
95
|
promoteSemanticRuleFromMemory
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-UHKME3I7.js";
|
|
97
97
|
import {
|
|
98
98
|
searchVerifiedSemanticRules
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-TYR4D4GH.js";
|
|
100
100
|
import {
|
|
101
101
|
buildResumeBundleFromState,
|
|
102
102
|
getResumeBundleStatus,
|
|
103
103
|
recordResumeBundle
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-N6TUO3O6.js";
|
|
105
105
|
import {
|
|
106
106
|
getWorkProductLedgerStatus,
|
|
107
107
|
recordWorkProductLedgerEntry,
|
|
@@ -112,7 +112,7 @@ import {
|
|
|
112
112
|
} from "./chunk-AM4T6CHX.js";
|
|
113
113
|
import {
|
|
114
114
|
parseXrayCliOptions
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-DBYAY6UW.js";
|
|
116
116
|
import {
|
|
117
117
|
collectPatternMemories,
|
|
118
118
|
explainPatternMemory,
|
|
@@ -134,7 +134,7 @@ import {
|
|
|
134
134
|
runOperatorInventory,
|
|
135
135
|
runOperatorRepair,
|
|
136
136
|
runOperatorSetup
|
|
137
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-N25RPRSI.js";
|
|
138
138
|
import {
|
|
139
139
|
analyzeSessionIntegrity,
|
|
140
140
|
applySessionRepair,
|
|
@@ -176,7 +176,7 @@ import {
|
|
|
176
176
|
rebuildMemoryProjection,
|
|
177
177
|
repairMemoryProjection,
|
|
178
178
|
verifyMemoryProjection
|
|
179
|
-
} from "./chunk-
|
|
179
|
+
} from "./chunk-IV2CY3RE.js";
|
|
180
180
|
import {
|
|
181
181
|
buildConnectorRowsFromDefinitions,
|
|
182
182
|
parseConnectorsListOptions,
|
|
@@ -197,7 +197,7 @@ import {
|
|
|
197
197
|
} from "./chunk-6TBIWIAG.js";
|
|
198
198
|
import {
|
|
199
199
|
parseConfig
|
|
200
|
-
} from "./chunk-
|
|
200
|
+
} from "./chunk-XLLRMUMH.js";
|
|
201
201
|
import {
|
|
202
202
|
applyManagedRegion,
|
|
203
203
|
expandVaultTemplateTokens,
|
|
@@ -210,7 +210,7 @@ import {
|
|
|
210
210
|
import {
|
|
211
211
|
EngramAccessHttpServer,
|
|
212
212
|
MeetingsInputError
|
|
213
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-P2FJ2KYJ.js";
|
|
214
214
|
import {
|
|
215
215
|
WearablesInputError
|
|
216
216
|
} from "./chunk-V7IZKJI3.js";
|
|
@@ -220,10 +220,10 @@ import {
|
|
|
220
220
|
loadChatSession,
|
|
221
221
|
processChatMessage,
|
|
222
222
|
sessionBelongsToPrincipal
|
|
223
|
-
} from "./chunk-
|
|
223
|
+
} from "./chunk-J3NN2Q4Z.js";
|
|
224
224
|
import {
|
|
225
225
|
EngramAccessService
|
|
226
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-5D6IMOW6.js";
|
|
227
227
|
import {
|
|
228
228
|
WorkStorage
|
|
229
229
|
} from "./chunk-MPC7TYTZ.js";
|
|
@@ -240,30 +240,30 @@ import {
|
|
|
240
240
|
parseRecallExplainFormat,
|
|
241
241
|
renderRecallExplain,
|
|
242
242
|
renderXray
|
|
243
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-KN6CIN7I.js";
|
|
244
244
|
import {
|
|
245
245
|
readAggregateExtractionWatermark
|
|
246
|
-
} from "./chunk-
|
|
246
|
+
} from "./chunk-34R75BVF.js";
|
|
247
247
|
import {
|
|
248
248
|
getObjectiveStateStoreStatus
|
|
249
249
|
} from "./chunk-HM7RHKS4.js";
|
|
250
250
|
import {
|
|
251
251
|
journalPath
|
|
252
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-YPWOZ6ME.js";
|
|
253
253
|
import {
|
|
254
254
|
searchHarmonicRetrieval
|
|
255
|
-
} from "./chunk-
|
|
255
|
+
} from "./chunk-OIKX22FU.js";
|
|
256
256
|
import {
|
|
257
257
|
listMemoryGovernanceRuns,
|
|
258
258
|
readMemoryGovernanceRunArtifact,
|
|
259
259
|
restoreMemoryGovernanceRun,
|
|
260
260
|
runMemoryGovernance
|
|
261
|
-
} from "./chunk-
|
|
261
|
+
} from "./chunk-JOAR32R6.js";
|
|
262
262
|
import {
|
|
263
263
|
listNamespaces,
|
|
264
264
|
runNamespaceMigration,
|
|
265
265
|
verifyNamespaces
|
|
266
|
-
} from "./chunk-
|
|
266
|
+
} from "./chunk-NC7OAEYY.js";
|
|
267
267
|
import {
|
|
268
268
|
getCueAnchorStoreStatus
|
|
269
269
|
} from "./chunk-BMWN7B3Y.js";
|
|
@@ -303,14 +303,14 @@ import {
|
|
|
303
303
|
} from "./chunk-VZBW6CDG.js";
|
|
304
304
|
import {
|
|
305
305
|
meetingIdDate
|
|
306
|
-
} from "./chunk-
|
|
306
|
+
} from "./chunk-6RBUAPQT.js";
|
|
307
307
|
import {
|
|
308
308
|
isValidTranscriptDate
|
|
309
309
|
} from "./chunk-UHVXE24Y.js";
|
|
310
310
|
import {
|
|
311
311
|
OKF_RESERVED_BASENAMES,
|
|
312
312
|
okfTypeForCategory
|
|
313
|
-
} from "./chunk-
|
|
313
|
+
} from "./chunk-FAT6HY7N.js";
|
|
314
314
|
import {
|
|
315
315
|
normalizeProjectionPreview
|
|
316
316
|
} from "./chunk-SCU65EZI.js";
|
|
@@ -344,17 +344,17 @@ import {
|
|
|
344
344
|
isArchivedMemoryPath,
|
|
345
345
|
toMemoryPathRel
|
|
346
346
|
} from "./chunk-7RJUVTVF.js";
|
|
347
|
-
import {
|
|
348
|
-
writeFileAtomically
|
|
349
|
-
} from "./chunk-AW4QUFQF.js";
|
|
350
347
|
import {
|
|
351
348
|
assertPathInsideRoot,
|
|
352
349
|
pathIsInside
|
|
353
350
|
} from "./chunk-C7HJ3NEI.js";
|
|
351
|
+
import {
|
|
352
|
+
writeFileAtomically
|
|
353
|
+
} from "./chunk-AW4QUFQF.js";
|
|
354
354
|
import {
|
|
355
355
|
RECALL_DISCLOSURE_LEVELS,
|
|
356
356
|
isRecallDisclosure
|
|
357
|
-
} from "./chunk-
|
|
357
|
+
} from "./chunk-PWF4JXKD.js";
|
|
358
358
|
import {
|
|
359
359
|
isSupportPassportPrivateMemory
|
|
360
360
|
} from "./chunk-PWPIERBM.js";
|
|
@@ -6693,7 +6693,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
|
|
|
6693
6693
|
}
|
|
6694
6694
|
}
|
|
6695
6695
|
if (sourceArchive.endsWith(".enc")) {
|
|
6696
|
-
const { isEncryptedCapsuleFile } = await import("./capsule-crypto-
|
|
6696
|
+
const { isEncryptedCapsuleFile } = await import("./capsule-crypto-YO5QJ6L3.js");
|
|
6697
6697
|
const encDetected = await isEncryptedCapsuleFile(sourceArchive).catch(() => true);
|
|
6698
6698
|
if (encDetected) {
|
|
6699
6699
|
throw new Error(
|
|
@@ -6856,7 +6856,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
|
|
|
6856
6856
|
const { parseExportBundle } = await import("./transfer/types.js");
|
|
6857
6857
|
let decryptedBuf;
|
|
6858
6858
|
try {
|
|
6859
|
-
const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-
|
|
6859
|
+
const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-YO5QJ6L3.js");
|
|
6860
6860
|
decryptedBuf = await decryptCapsuleFileInMemory(archivePath, memoryDir);
|
|
6861
6861
|
} catch (decErr) {
|
|
6862
6862
|
const msg = decErr instanceof Error ? decErr.message : String(decErr);
|
|
@@ -10131,4 +10131,4 @@ export {
|
|
|
10131
10131
|
listMemoryMarkdownFilePaths,
|
|
10132
10132
|
registerCli
|
|
10133
10133
|
};
|
|
10134
|
-
//# sourceMappingURL=chunk-
|
|
10134
|
+
//# sourceMappingURL=chunk-YNNXM6FN.js.map
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DIRECTORY_SIDECAR_BASENAME
|
|
3
|
-
} from "./chunk-U3NBO4IX.js";
|
|
4
1
|
import {
|
|
5
2
|
isActivityDigestPath,
|
|
6
3
|
isArtifactMemoryPath,
|
|
@@ -11,8 +8,9 @@ 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-
|
|
13
|
+
} from "./chunk-FAT6HY7N.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-
|
|
214
|
+
//# sourceMappingURL=chunk-YPWOZ6ME.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/activity/journal.ts","../src/orchestration/generic-recall-paths.ts"],"sourcesContent":["/**\n * User-owned daily journal (issue #1984 PR1).\n *\n * Files live at `<memoryDir>/journal/<YYYY-MM-DD>.md` — inside the memory\n * directory but outside scan roots, same placement as activity digests.\n * Once written, Remnic never rewrites the file except `seed` with force.\n * All writes go through writeJournalFile, which stats first.\n */\nimport { mkdirSync, statSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { isValidActivityDate } from \"./digest.js\";\n\nexport const JOURNAL_DIR_NAME = \"journal\";\n\n/** Minimal card shape the seed renderer needs. TimelineCard is assignable. */\nexport interface JournalSeedCard {\n title: string;\n startUtc: string;\n endUtc: string;\n}\n\nexport interface SeedJournalInput {\n memoryDir: string;\n date: string;\n cards?: readonly JournalSeedCard[];\n force?: boolean;\n}\n\nexport interface SeedJournalResult {\n path: string;\n wrote: boolean;\n}\n\nconst JOURNAL_DAY_TOPLEVEL = /^journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\nconst JOURNAL_DAY_ANYWHERE = /(?:^|[\\\\/])journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\n\nexport function journalPath(memoryDir: string, date: string): string {\n if (!isValidActivityDate(date)) {\n throw new RangeError(`Invalid journal date \"${date}\"; expected YYYY-MM-DD.`);\n }\n return path.join(memoryDir, JOURNAL_DIR_NAME, `${date}.md`);\n}\n\n/**\n * Root-aware journal day-file check. With a memory root, only the top-level\n * `journal/<date>.md` matches so a nested `facts/journal/<date>.md` stays\n * recallable. Without a root, fall back to the day-file shape anywhere.\n */\nexport function isJournalDayPath(filePath: string, memoryRoot?: string): boolean {\n if (memoryRoot !== undefined && memoryRoot.length > 0) {\n const relative = path.relative(memoryRoot, path.resolve(memoryRoot, filePath));\n return JOURNAL_DAY_TOPLEVEL.test(relative);\n }\n return JOURNAL_DAY_ANYWHERE.test(filePath);\n}\n\nexport function todayJournalDate(now: Date = new Date()): string {\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, \"0\");\n const day = String(now.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nfunction formatCardDuration(card: JournalSeedCard): string {\n const start = Date.parse(card.startUtc);\n const end = Date.parse(card.endUtc);\n const minutes =\n Number.isFinite(start) && Number.isFinite(end) && end > start\n ? Math.round((end - start) / 60_000)\n : 0;\n return `${minutes}m`;\n}\n\nfunction renderJournalSeed(date: string, cards: readonly JournalSeedCard[]): string {\n const ordered = [...cards].sort((left, right) => {\n const byStart = left.startUtc.localeCompare(right.startUtc);\n return byStart !== 0 ? byStart : left.title.localeCompare(right.title);\n });\n const glance =\n ordered.length === 0\n ? [\"_No cards._\"]\n : ordered.map((card) => `- ${formatCardDuration(card)} ${card.title}`);\n return [`# Journal — ${date}`, \"\", \"## Day at a glance\", \"\", ...glance, \"\", \"## Notes\", \"\", \"\"].join(\n \"\\n\",\n );\n}\n\n/** The only journal write. Stats first; existing files are a no-op unless force. */\nexport function writeJournalFile(filePath: string, content: string, force: boolean): boolean {\n let exists = false;\n try {\n statSync(filePath);\n exists = true;\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") throw err;\n }\n if (exists && !force) return false;\n mkdirSync(path.dirname(filePath), { recursive: true });\n writeFileSync(filePath, content);\n return true;\n}\n\nexport function seedJournal(input: SeedJournalInput): SeedJournalResult {\n const filePath = journalPath(input.memoryDir, input.date);\n const wrote = writeJournalFile(\n filePath,\n renderJournalSeed(input.date, input.cards ?? []),\n input.force === true,\n );\n return { path: filePath, wrote };\n}\n","import path from \"node:path\";\nimport type { QmdSearchResult } from \"../types.js\";\nimport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nexport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nimport { ALL_CATEGORY_DIRS } from \"../utils/category-dir.js\";\nimport {\n isActivityDigestPath,\n isArtifactMemoryPath,\n isLocationDayPath,\n isMeetingRecordPath,\n} from \"./orchestrator-helpers.js\";\nimport { isJournalDayPath } from \"../activity/journal.js\";\nimport { DIRECTORY_SIDECAR_BASENAME } from \"../directory-sidecars.js\";\nimport { OKF_RESERVED_BASENAMES } from \"../okf/type-mapping.js\";\n\n\nexport interface GenericRecallPathPolicy {\n readonly memoryDir?: string;\n readonly qmdCollection?: string;\n readonly qmdColdCollection?: string;\n /**\n * The collection THIS request named, when it named one. A caller may select\n * a custom collection whose name is also a memory category, which the\n * configured names alone cannot disambiguate.\n */\n readonly requestedCollection?: string;\n}\n\ntype GenericRecallPathSource = \"filesystem\" | \"qmd\";\n\nconst CATEGORY_MEMORY_ROOTS: Record<string, true> = Object.fromEntries(\n ALL_CATEGORY_DIRS.map((directory) => [directory, true]),\n);\nconst RESERVED_ARCHIVE_ROOTS: Record<string, true> = { archive: true, namespaces: true };\n\nfunction isQmdCollectionPrefix(\n prefix: string,\n collection: string | undefined,\n source: GenericRecallPathSource,\n): boolean {\n if (typeof collection !== \"string\" || collection.length === 0) return false;\n if (prefix.startsWith(`${collection}--`)) return true;\n if (prefix !== collection) return false;\n if (source === \"qmd\") return true;\n return (\n !Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) &&\n !Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix)\n );\n}\n\nfunction normalizeQmdUriPath(relativePath: string, source: GenericRecallPathSource): string {\n if (source !== \"qmd\" || !relativePath.startsWith(\"qmd://\")) return relativePath;\n try {\n const parsed = new URL(relativePath);\n if (parsed.protocol !== \"qmd:\" || !parsed.hostname) return relativePath;\n const collection = decodeURIComponent(parsed.hostname);\n const pathname = decodeURIComponent(parsed.pathname.replace(/^\\/+/, \"\"));\n return pathname ? `${collection}/${pathname}` : collection;\n } catch {\n return relativePath;\n }\n}\n\nfunction stripQmdCollectionPrefix(\n relativePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string {\n const normalized = path.posix.normalize(normalizeQmdUriPath(relativePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= normalized.length - 1) return normalized;\n\n const prefix = normalized.slice(0, slashIndex);\n const matchesHotCollection = isQmdCollectionPrefix(prefix, policy.qmdCollection, source);\n const matchesColdCollection = isQmdCollectionPrefix(prefix, policy.qmdColdCollection, source);\n return matchesHotCollection || matchesColdCollection\n ? normalized.slice(slashIndex + 1)\n : normalized;\n}\n\nexport function isTopLevelArchivePath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n const isAbsolutePath = path.isAbsolute(filePath);\n const relative =\n policy.memoryDir && isAbsolutePath\n ? path.relative(policy.memoryDir, path.resolve(filePath))\n : filePath;\n const normalized = !isAbsolutePath\n ? stripQmdCollectionPrefix(relative, policy, source)\n : relative;\n return /^(?:archive|namespaces[\\\\/][^\\\\/]+[\\\\/]archive)(?:[\\\\/]|$)/i.test(normalized);\n}\n\nfunction isExternalWikiQmdPath(\n filePath: string,\n source: GenericRecallPathSource,\n): boolean {\n if (source !== \"qmd\") return false;\n const normalized = normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\");\n const slashIndex = normalized.indexOf(\"/\");\n const collection = slashIndex === -1 ? normalized : normalized.slice(0, slashIndex);\n return isExternalWikiCollectionName(collection);\n}\n\n/**\n * Paths an EXPLICIT ranked search must not return.\n *\n * Narrower than {@link isGenericRecallExcludedPath} on purpose. Recall\n * injection also drops archived memories because they are cold by definition,\n * but archive is explicitly reserved for \"explicit read or search surfaces\"\n * (docs/architecture/memory-lifecycle.md) — hiding it from `memory_search`\n * would remove the only way to find it. Everything else stays excluded: those\n * paths flow through their own dedicated surfaces, never a generic search.\n */\nexport function isSearchExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n if (isExternalWikiQmdPath(filePath, source)) return true;\n // A QMD transport hands back collection-qualified paths\n // (`qmd://<collection>/activity/<date>.md`, or `<collection>/activity/…`),\n // and the collection is not always one this policy knows: a caller may name\n // a custom one, and global search spans every collection. The activity\n // predicate is ROOT-AWARE — it matches only the top-level\n // `activity/<date>.md` so a nested ordinary memory stays recallable — so an\n // un-stripped prefix reads as a nested path and the digest would be served.\n //\n // Both spellings are therefore tested. Widening is safe in this direction\n // and only here: a leading segment is dropped ONLY to re-test the dedicated\n // surface shapes, never to decide anything else, and a segment that names a\n // memory CATEGORY (`facts/proj/activity/…`) is never treated as a\n // collection, so ordinary nested memories stay searchable.\n for (const candidate of collectionSpellings(filePath, policy, source)) {\n if (\n isArtifactMemoryPath(candidate) ||\n isNamespacedActivityDigestPath(candidate, policy.memoryDir) ||\n isNamespacedLocationDayPath(candidate, policy.memoryDir) ||\n isNamespacedJournalDayPath(candidate, policy.memoryDir) ||\n isMeetingRecordPath(candidate)\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The activity check, applied against the NAMESPACE root a hit came from.\n *\n * `isActivityDigestPath` is root-aware — the digest must sit directly under\n * the root it is given — but a namespaced search rewrites hits to absolute\n * paths beneath `…/namespaces/<ns>/`, and only the global `memoryDir` is\n * available here. Measured against that root, a real digest at\n * `<memoryDir>/namespaces/team/activity/<date>.md` reads as nested and is\n * served. Re-measuring against the namespace's own root closes that.\n */\nfunction isNamespacedActivityDigestPath(candidate: string, memoryDir?: string): boolean {\n if (isActivityDigestPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isActivityDigestPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/**\n * The location day-file check, applied against the NAMESPACE root a hit came\n * from — same rationale as `isNamespacedActivityDigestPath`: a namespaced\n * search rewrites hits to absolute paths beneath `…/namespaces/<ns>/`, so the\n * root-aware predicate is re-measured against the namespace's own root.\n */\nfunction isNamespacedLocationDayPath(candidate: string, memoryDir?: string): boolean {\n if (isLocationDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isLocationDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\nfunction isNamespacedJournalDayPath(candidate: string, memoryDir?: string): boolean {\n if (isJournalDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isJournalDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/** A path as given, plus its form with a leading COLLECTION segment removed. */\nfunction collectionSpellings(\n filePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string[] {\n if (path.isAbsolute(filePath)) return [filePath];\n // A `qmd://<collection>/<path>` URI states its collection UNAMBIGUOUSLY in\n // the authority, so the leading segment of its normalized form is never a\n // memory category — strip it outright rather than guessing.\n if (source === \"qmd\" && filePath.startsWith(\"qmd://\")) {\n const normalized = path.posix.normalize(normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n return slashIndex <= 0 || slashIndex >= normalized.length - 1\n ? [normalized]\n : [normalized, normalized.slice(slashIndex + 1)];\n }\n const normalized = path.posix.normalize(\n normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"),\n );\n const stripped = stripQmdCollectionPrefix(filePath, policy, source);\n const spellings = [stripped];\n // If the AUTHORITATIVE strip already fired — the prefix matched a configured\n // collection — stop. Removing a second segment would take a real directory\n // with it: `memories/projects/activity/<date>.md` would become\n // `activity/<date>.md` and an ordinary nested memory would read as a\n // top-level digest, vanishing from search AND recall.\n if (stripped !== normalized) return spellings;\n const slashIndex = stripped.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= stripped.length - 1) return spellings;\n const prefix = stripped.slice(0, slashIndex);\n // The CALLER's own collection is authoritative: a request for\n // `collection: \"facts\"` means that segment is the collection, whatever it is\n // also the name of. Otherwise a category-shaped prefix stays part of the\n // path, so an ordinary `facts/proj/activity/<date>.md` memory is searchable.\n const requested = policy.requestedCollection;\n if (\n prefix !== requested &&\n (Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) || Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix))\n ) {\n return spellings;\n }\n spellings.push(stripped.slice(slashIndex + 1));\n return spellings;\n}\n\nexport function isGenericRecallExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n return (\n isSearchExcludedPath(filePath, policy, source) ||\n isTopLevelArchivePath(filePath, policy, source) ||\n OKF_RESERVED_BASENAMES[path.basename(filePath)] === true ||\n // Derived per-directory sidecars (#2977): recall-excluded like OKF index\n // files, still searchable. Basename-only, the same accepted tradeoff.\n path.basename(filePath) === DIRECTORY_SIDECAR_BASENAME\n );\n}\n\nexport function filterRecallCandidates(\n candidates: QmdSearchResult[],\n options: {\n namespacesEnabled: boolean;\n recallNamespaces: string[];\n resolveNamespace: (path: string) => string;\n limit: number;\n pathPolicy?: GenericRecallPathPolicy;\n memoryRoot?: string;\n },\n): QmdSearchResult[] {\n const pathPolicy =\n options.pathPolicy ??\n (options.memoryRoot === undefined ? undefined : { memoryDir: options.memoryRoot });\n const scopedByNamespace = options.namespacesEnabled\n ? candidates.filter((r) =>\n options.recallNamespaces.includes(r.namespace ?? options.resolveNamespace(r.path)),\n )\n : candidates;\n return scopedByNamespace\n .filter((r) => !isGenericRecallExcludedPath(r.path, pathPolicy, \"qmd\"))\n .slice(0, Math.max(0, options.limit));\n}\n"],"mappings":"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","names":["path","path","normalized","slashIndex"]}
|
|
1
|
+
{"version":3,"sources":["../src/activity/journal.ts","../src/orchestration/generic-recall-paths.ts"],"sourcesContent":["/**\n * User-owned daily journal (issue #1984 PR1).\n *\n * Files live at `<memoryDir>/journal/<YYYY-MM-DD>.md` — inside the memory\n * directory but outside scan roots, same placement as activity digests.\n * Once written, Remnic never rewrites the file except `seed` with force.\n * All writes go through writeJournalFile, which stats first.\n */\nimport { mkdirSync, statSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { isValidActivityDate } from \"./digest.js\";\n\nexport const JOURNAL_DIR_NAME = \"journal\";\n\n/** Minimal card shape the seed renderer needs. TimelineCard is assignable. */\nexport interface JournalSeedCard {\n title: string;\n startUtc: string;\n endUtc: string;\n}\n\nexport interface SeedJournalInput {\n memoryDir: string;\n date: string;\n cards?: readonly JournalSeedCard[];\n force?: boolean;\n}\n\nexport interface SeedJournalResult {\n path: string;\n wrote: boolean;\n}\n\nconst JOURNAL_DAY_TOPLEVEL = /^journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\nconst JOURNAL_DAY_ANYWHERE = /(?:^|[\\\\/])journal[\\\\/]\\d{4}-\\d{2}-\\d{2}\\.md$/i;\n\nexport function journalPath(memoryDir: string, date: string): string {\n if (!isValidActivityDate(date)) {\n throw new RangeError(`Invalid journal date \"${date}\"; expected YYYY-MM-DD.`);\n }\n return path.join(memoryDir, JOURNAL_DIR_NAME, `${date}.md`);\n}\n\n/**\n * Root-aware journal day-file check. With a memory root, only the top-level\n * `journal/<date>.md` matches so a nested `facts/journal/<date>.md` stays\n * recallable. Without a root, fall back to the day-file shape anywhere.\n */\nexport function isJournalDayPath(filePath: string, memoryRoot?: string): boolean {\n if (memoryRoot !== undefined && memoryRoot.length > 0) {\n const relative = path.relative(memoryRoot, path.resolve(memoryRoot, filePath));\n return JOURNAL_DAY_TOPLEVEL.test(relative);\n }\n return JOURNAL_DAY_ANYWHERE.test(filePath);\n}\n\nexport function todayJournalDate(now: Date = new Date()): string {\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, \"0\");\n const day = String(now.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nfunction formatCardDuration(card: JournalSeedCard): string {\n const start = Date.parse(card.startUtc);\n const end = Date.parse(card.endUtc);\n const minutes =\n Number.isFinite(start) && Number.isFinite(end) && end > start\n ? Math.round((end - start) / 60_000)\n : 0;\n return `${minutes}m`;\n}\n\nfunction renderJournalSeed(date: string, cards: readonly JournalSeedCard[]): string {\n const ordered = [...cards].sort((left, right) => {\n const byStart = left.startUtc.localeCompare(right.startUtc);\n return byStart !== 0 ? byStart : left.title.localeCompare(right.title);\n });\n const glance =\n ordered.length === 0\n ? [\"_No cards._\"]\n : ordered.map((card) => `- ${formatCardDuration(card)} ${card.title}`);\n return [`# Journal — ${date}`, \"\", \"## Day at a glance\", \"\", ...glance, \"\", \"## Notes\", \"\", \"\"].join(\n \"\\n\",\n );\n}\n\n/** The only journal write. Stats first; existing files are a no-op unless force. */\nexport function writeJournalFile(filePath: string, content: string, force: boolean): boolean {\n let exists = false;\n try {\n statSync(filePath);\n exists = true;\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") throw err;\n }\n if (exists && !force) return false;\n mkdirSync(path.dirname(filePath), { recursive: true });\n writeFileSync(filePath, content);\n return true;\n}\n\nexport function seedJournal(input: SeedJournalInput): SeedJournalResult {\n const filePath = journalPath(input.memoryDir, input.date);\n const wrote = writeJournalFile(\n filePath,\n renderJournalSeed(input.date, input.cards ?? []),\n input.force === true,\n );\n return { path: filePath, wrote };\n}\n","import path from \"node:path\";\nimport type { QmdSearchResult } from \"../types.js\";\nimport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nexport { isExternalWikiCollectionName } from \"../external-wiki-guard.js\";\nimport { ALL_CATEGORY_DIRS } from \"../utils/category-dir.js\";\nimport {\n isActivityDigestPath,\n isArtifactMemoryPath,\n isLocationDayPath,\n isMeetingRecordPath,\n} from \"./orchestrator-helpers.js\";\nimport { isJournalDayPath } from \"../activity/journal.js\";\nimport { DIRECTORY_SIDECAR_BASENAME } from \"../directory-sidecars.js\";\nimport { OKF_RESERVED_BASENAMES } from \"../okf/type-mapping.js\";\n\n\nexport interface GenericRecallPathPolicy {\n readonly memoryDir?: string;\n readonly qmdCollection?: string;\n readonly qmdColdCollection?: string;\n /**\n * The collection THIS request named, when it named one. A caller may select\n * a custom collection whose name is also a memory category, which the\n * configured names alone cannot disambiguate.\n */\n readonly requestedCollection?: string;\n}\n\ntype GenericRecallPathSource = \"filesystem\" | \"qmd\";\n\nconst CATEGORY_MEMORY_ROOTS: Record<string, true> = Object.fromEntries(\n ALL_CATEGORY_DIRS.map((directory) => [directory, true]),\n);\nconst RESERVED_ARCHIVE_ROOTS: Record<string, true> = { archive: true, namespaces: true };\n\nfunction isQmdCollectionPrefix(\n prefix: string,\n collection: string | undefined,\n source: GenericRecallPathSource,\n): boolean {\n if (typeof collection !== \"string\" || collection.length === 0) return false;\n if (prefix.startsWith(`${collection}--`)) return true;\n if (prefix !== collection) return false;\n if (source === \"qmd\") return true;\n return (\n !Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) &&\n !Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix)\n );\n}\n\nfunction normalizeQmdUriPath(relativePath: string, source: GenericRecallPathSource): string {\n if (source !== \"qmd\" || !relativePath.startsWith(\"qmd://\")) return relativePath;\n try {\n const parsed = new URL(relativePath);\n if (parsed.protocol !== \"qmd:\" || !parsed.hostname) return relativePath;\n const collection = decodeURIComponent(parsed.hostname);\n const pathname = decodeURIComponent(parsed.pathname.replace(/^\\/+/, \"\"));\n return pathname ? `${collection}/${pathname}` : collection;\n } catch {\n return relativePath;\n }\n}\n\nfunction stripQmdCollectionPrefix(\n relativePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string {\n const normalized = path.posix.normalize(normalizeQmdUriPath(relativePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= normalized.length - 1) return normalized;\n\n const prefix = normalized.slice(0, slashIndex);\n const matchesHotCollection = isQmdCollectionPrefix(prefix, policy.qmdCollection, source);\n const matchesColdCollection = isQmdCollectionPrefix(prefix, policy.qmdColdCollection, source);\n return matchesHotCollection || matchesColdCollection\n ? normalized.slice(slashIndex + 1)\n : normalized;\n}\n\nexport function isTopLevelArchivePath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n const isAbsolutePath = path.isAbsolute(filePath);\n const relative =\n policy.memoryDir && isAbsolutePath\n ? path.relative(policy.memoryDir, path.resolve(filePath))\n : filePath;\n const normalized = !isAbsolutePath\n ? stripQmdCollectionPrefix(relative, policy, source)\n : relative;\n return /^(?:archive|namespaces[\\\\/][^\\\\/]+[\\\\/]archive)(?:[\\\\/]|$)/i.test(normalized);\n}\n\nfunction isExternalWikiQmdPath(\n filePath: string,\n source: GenericRecallPathSource,\n): boolean {\n if (source !== \"qmd\") return false;\n const normalized = normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\");\n const slashIndex = normalized.indexOf(\"/\");\n const collection = slashIndex === -1 ? normalized : normalized.slice(0, slashIndex);\n return isExternalWikiCollectionName(collection);\n}\n\n/**\n * Paths an EXPLICIT ranked search must not return.\n *\n * Narrower than {@link isGenericRecallExcludedPath} on purpose. Recall\n * injection also drops archived memories because they are cold by definition,\n * but archive is explicitly reserved for \"explicit read or search surfaces\"\n * (docs/architecture/memory-lifecycle.md) — hiding it from `memory_search`\n * would remove the only way to find it. Everything else stays excluded: those\n * paths flow through their own dedicated surfaces, never a generic search.\n */\nexport function isSearchExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n if (isExternalWikiQmdPath(filePath, source)) return true;\n // A QMD transport hands back collection-qualified paths\n // (`qmd://<collection>/activity/<date>.md`, or `<collection>/activity/…`),\n // and the collection is not always one this policy knows: a caller may name\n // a custom one, and global search spans every collection. The activity\n // predicate is ROOT-AWARE — it matches only the top-level\n // `activity/<date>.md` so a nested ordinary memory stays recallable — so an\n // un-stripped prefix reads as a nested path and the digest would be served.\n //\n // Both spellings are therefore tested. Widening is safe in this direction\n // and only here: a leading segment is dropped ONLY to re-test the dedicated\n // surface shapes, never to decide anything else, and a segment that names a\n // memory CATEGORY (`facts/proj/activity/…`) is never treated as a\n // collection, so ordinary nested memories stay searchable.\n for (const candidate of collectionSpellings(filePath, policy, source)) {\n if (\n isArtifactMemoryPath(candidate) ||\n isNamespacedActivityDigestPath(candidate, policy.memoryDir) ||\n isNamespacedLocationDayPath(candidate, policy.memoryDir) ||\n isNamespacedJournalDayPath(candidate, policy.memoryDir) ||\n isMeetingRecordPath(candidate)\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The activity check, applied against the NAMESPACE root a hit came from.\n *\n * `isActivityDigestPath` is root-aware — the digest must sit directly under\n * the root it is given — but a namespaced search rewrites hits to absolute\n * paths beneath `…/namespaces/<ns>/`, and only the global `memoryDir` is\n * available here. Measured against that root, a real digest at\n * `<memoryDir>/namespaces/team/activity/<date>.md` reads as nested and is\n * served. Re-measuring against the namespace's own root closes that.\n */\nfunction isNamespacedActivityDigestPath(candidate: string, memoryDir?: string): boolean {\n if (isActivityDigestPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isActivityDigestPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/**\n * The location day-file check, applied against the NAMESPACE root a hit came\n * from — same rationale as `isNamespacedActivityDigestPath`: a namespaced\n * search rewrites hits to absolute paths beneath `…/namespaces/<ns>/`, so the\n * root-aware predicate is re-measured against the namespace's own root.\n */\nfunction isNamespacedLocationDayPath(candidate: string, memoryDir?: string): boolean {\n if (isLocationDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isLocationDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\nfunction isNamespacedJournalDayPath(candidate: string, memoryDir?: string): boolean {\n if (isJournalDayPath(candidate, memoryDir)) return true;\n if (memoryDir === undefined || memoryDir.length === 0) return false;\n const relative = path.relative(memoryDir, path.resolve(memoryDir, candidate));\n const namespaced = /^namespaces[\\\\/]([^\\\\/]+)[\\\\/](.*)$/.exec(relative);\n if (namespaced === null) return false;\n return isJournalDayPath(namespaced[2] ?? \"\", memoryDir);\n}\n\n/** A path as given, plus its form with a leading COLLECTION segment removed. */\nfunction collectionSpellings(\n filePath: string,\n policy: GenericRecallPathPolicy,\n source: GenericRecallPathSource,\n): string[] {\n if (path.isAbsolute(filePath)) return [filePath];\n // A `qmd://<collection>/<path>` URI states its collection UNAMBIGUOUSLY in\n // the authority, so the leading segment of its normalized form is never a\n // memory category — strip it outright rather than guessing.\n if (source === \"qmd\" && filePath.startsWith(\"qmd://\")) {\n const normalized = path.posix.normalize(normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"));\n const slashIndex = normalized.indexOf(\"/\");\n return slashIndex <= 0 || slashIndex >= normalized.length - 1\n ? [normalized]\n : [normalized, normalized.slice(slashIndex + 1)];\n }\n const normalized = path.posix.normalize(\n normalizeQmdUriPath(filePath, source).replace(/\\\\/g, \"/\"),\n );\n const stripped = stripQmdCollectionPrefix(filePath, policy, source);\n const spellings = [stripped];\n // If the AUTHORITATIVE strip already fired — the prefix matched a configured\n // collection — stop. Removing a second segment would take a real directory\n // with it: `memories/projects/activity/<date>.md` would become\n // `activity/<date>.md` and an ordinary nested memory would read as a\n // top-level digest, vanishing from search AND recall.\n if (stripped !== normalized) return spellings;\n const slashIndex = stripped.indexOf(\"/\");\n if (slashIndex <= 0 || slashIndex >= stripped.length - 1) return spellings;\n const prefix = stripped.slice(0, slashIndex);\n // The CALLER's own collection is authoritative: a request for\n // `collection: \"facts\"` means that segment is the collection, whatever it is\n // also the name of. Otherwise a category-shaped prefix stays part of the\n // path, so an ordinary `facts/proj/activity/<date>.md` memory is searchable.\n const requested = policy.requestedCollection;\n if (\n prefix !== requested &&\n (Object.hasOwn(CATEGORY_MEMORY_ROOTS, prefix) || Object.hasOwn(RESERVED_ARCHIVE_ROOTS, prefix))\n ) {\n return spellings;\n }\n spellings.push(stripped.slice(slashIndex + 1));\n return spellings;\n}\n\nexport function isGenericRecallExcludedPath(\n filePath: string,\n policy: GenericRecallPathPolicy = {},\n source: GenericRecallPathSource = \"filesystem\",\n): boolean {\n return (\n isSearchExcludedPath(filePath, policy, source) ||\n isTopLevelArchivePath(filePath, policy, source) ||\n OKF_RESERVED_BASENAMES[path.basename(filePath)] === true ||\n // Derived per-directory sidecars (#2977): recall-excluded like OKF index\n // files, still searchable. Basename-only, the same accepted tradeoff.\n path.basename(filePath) === DIRECTORY_SIDECAR_BASENAME\n );\n}\n\nexport function filterRecallCandidates(\n candidates: QmdSearchResult[],\n options: {\n namespacesEnabled: boolean;\n recallNamespaces: string[];\n resolveNamespace: (path: string) => string;\n limit: number;\n pathPolicy?: GenericRecallPathPolicy;\n memoryRoot?: string;\n },\n): QmdSearchResult[] {\n const pathPolicy =\n options.pathPolicy ??\n (options.memoryRoot === undefined ? undefined : { memoryDir: options.memoryRoot });\n const scopedByNamespace = options.namespacesEnabled\n ? candidates.filter((r) =>\n options.recallNamespaces.includes(r.namespace ?? options.resolveNamespace(r.path)),\n )\n : candidates;\n return scopedByNamespace\n .filter((r) => !isGenericRecallExcludedPath(r.path, pathPolicy, \"qmd\"))\n .slice(0, Math.max(0, options.limit));\n}\n"],"mappings":"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","names":["path","path","normalized","slashIndex"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseEntityFile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6RBUAPQT.js";
|
|
4
4
|
import {
|
|
5
5
|
inferMemoryStatus
|
|
6
6
|
} from "./chunk-7RJUVTVF.js";
|
|
@@ -253,4 +253,4 @@ export {
|
|
|
253
253
|
WHO_KNOWS_MCP_TOOLS,
|
|
254
254
|
handleWhoKnowsHttpQuery
|
|
255
255
|
};
|
|
256
|
-
//# sourceMappingURL=chunk-
|
|
256
|
+
//# sourceMappingURL=chunk-YYI5DZAQ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
canonicalCategoryForAlias,
|
|
3
3
|
categoryAliasCoercion
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6OACG7JV.js";
|
|
5
5
|
|
|
6
6
|
// src/access-observe-write-category.ts
|
|
7
7
|
function splitCanonicalWriteRequest(request) {
|
|
@@ -22,4 +22,4 @@ function splitCanonicalWriteRequest(request) {
|
|
|
22
22
|
export {
|
|
23
23
|
splitCanonicalWriteRequest
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-YZENVZWY.js.map
|