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