@remnic/core 9.45.2 → 9.45.4
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/abort-error.d.ts +2 -1
- package/dist/abort-error.js +3 -1
- package/dist/access-admin-ops-surface.d.ts +14 -10
- package/dist/access-admin-ops-surface.js +84 -76
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +14 -10
- package/dist/access-authorization-probe.js +85 -77
- package/dist/access-boundary.d.ts +15 -11
- package/dist/access-boundary.js +84 -76
- package/dist/access-citation-namespace.js +2 -2
- package/dist/access-cli.js +193 -181
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +16 -0
- package/dist/access-coding-context-resolution.js +13 -0
- package/dist/access-coding-context-resolution.js.map +1 -0
- package/dist/access-extraction-force-flush.d.ts +14 -10
- package/dist/access-extraction-force-flush.js +84 -76
- package/dist/access-health-types.d.ts +2 -1
- package/dist/access-http-lcm-compaction.d.ts +16 -12
- package/dist/access-http-lcm-compaction.js +3 -3
- package/dist/access-http-lifecycle-flush.d.ts +14 -10
- package/dist/access-http-lifecycle-flush.js +2 -2
- package/dist/access-http-offline-stream.d.ts +123 -0
- package/dist/access-http-offline-stream.js +10 -0
- package/dist/access-http-offline-stream.js.map +1 -0
- package/dist/access-http-query.js +84 -76
- package/dist/access-http.d.ts +15 -10
- package/dist/access-http.js +105 -92
- package/dist/access-identity-continuity-surface.d.ts +9 -8
- package/dist/access-identity-continuity-surface.js +84 -76
- package/dist/access-lcm-surface.d.ts +14 -10
- package/dist/access-lcm-surface.js +84 -76
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +14 -10
- package/dist/access-mcp.js +95 -83
- package/dist/access-memory-search-fanout.d.ts +3 -2
- package/dist/{access-namespace-preflight-5yZ4g6F8.d.ts → access-namespace-preflight-CWUDwB4M.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -3
- package/dist/access-namespace-preflight.js +84 -76
- package/dist/access-observe-helpers.d.ts +1 -0
- package/dist/access-observe-helpers.js +1 -1
- package/dist/access-observe-write-surface.d.ts +16 -10
- package/dist/access-observe-write-surface.js +84 -76
- package/dist/access-offline-manifest.d.ts +104 -0
- package/dist/access-offline-manifest.js +45 -0
- package/dist/access-offline-manifest.js.map +1 -0
- package/dist/access-operations-batch.js +86 -78
- package/dist/access-operations.d.ts +18 -14
- package/dist/access-operations.js +91 -80
- package/dist/access-recall-concurrency.d.ts +16 -26
- package/dist/access-recall-concurrency.js +86 -77
- package/dist/access-recall-response.d.ts +18 -14
- package/dist/access-recall-response.js +84 -76
- package/dist/access-recall-surface.d.ts +29 -24
- package/dist/access-recall-surface.js +84 -76
- package/dist/access-schema.d.ts +84 -84
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-CiJRsgAB.d.ts → access-service-CsU-ljFD.d.ts} +25 -16
- package/dist/access-service-helpers.d.ts +14 -10
- package/dist/access-service.d.ts +14 -10
- package/dist/access-service.js +84 -76
- package/dist/access-surface-catalog.d.ts +14 -10
- package/dist/access-surface-catalog.js +4 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +4 -3
- package/dist/action-confidence.d.ts +2 -1
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-recall.d.ts +2 -1
- package/dist/active-recall.js +10 -8
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/{auto-sync-5OE5QOZB.js → auto-sync-UPTUVE4X.js} +6 -6
- package/dist/behavior-learner.d.ts +2 -1
- package/dist/behavior-learner.js +1 -1
- package/dist/behavior-signals.d.ts +2 -1
- package/dist/bootstrap.d.ts +9 -8
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +23 -22
- package/dist/buffer-surprise-report.d.ts +2 -1
- package/dist/buffer-turn-helpers.d.ts +2 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/buffer.js +12 -11
- package/dist/bulk-import/index.d.ts +4 -3
- package/dist/calibration.d.ts +2 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/{capsule-merge-IDWJPCWK.js → capsule-merge-Q6AR3XL7.js} +67 -54
- package/dist/capsule-merge-Q6AR3XL7.js.map +1 -0
- package/dist/{catalog-scBmy0sO.d.ts → catalog-bctMURhN.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +2 -1
- package/dist/causal-consolidation.js +27 -26
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +2 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-VUPTKTDV.js → chunk-2MRHJNWL.js} +3 -3
- package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
- package/dist/{chunk-5IVLTFOV.js → chunk-44N6ESJ4.js} +2 -2
- package/dist/{chunk-WOCNN776.js → chunk-4POAMKV6.js} +100 -41
- package/dist/chunk-4POAMKV6.js.map +1 -0
- package/dist/{chunk-HO3QBJEY.js → chunk-5546W5SI.js} +2 -2
- package/dist/{chunk-U7GW7NE7.js → chunk-5CEECY6P.js} +10 -10
- package/dist/{chunk-4UH4BTGK.js → chunk-5SNZSWWR.js} +82 -82
- package/dist/{chunk-6CZPDBJS.js → chunk-5U7ID3EZ.js} +3 -3
- package/dist/{chunk-GF22HWS2.js → chunk-6NNNURLK.js} +7 -7
- package/dist/chunk-773TRRGT.js +36 -0
- package/dist/chunk-773TRRGT.js.map +1 -0
- package/dist/chunk-7CITSYSH.js +242 -0
- package/dist/chunk-7CITSYSH.js.map +1 -0
- package/dist/{chunk-227UFSEQ.js → chunk-7RZJWZ46.js} +5 -5
- package/dist/{chunk-E5UK4VPE.js → chunk-7SHJHPTY.js} +5 -5
- package/dist/{chunk-UVIKWC7M.js → chunk-7YERSTN7.js} +17 -17
- package/dist/{chunk-DLVPUX7U.js → chunk-7YKVM5H3.js} +8 -6
- package/dist/chunk-7YKVM5H3.js.map +1 -0
- package/dist/{chunk-3CE77VAP.js → chunk-A4JMGKCD.js} +87 -74
- package/dist/chunk-A4JMGKCD.js.map +1 -0
- package/dist/chunk-A5KNZSNA.js +26 -0
- package/dist/chunk-A5KNZSNA.js.map +1 -0
- package/dist/{chunk-S2NCTZGJ.js → chunk-AJQ57VV3.js} +15 -15
- package/dist/chunk-AJQ57VV3.js.map +1 -0
- package/dist/{chunk-CUM2BBPN.js → chunk-AUMWZSE7.js} +19 -10
- package/dist/chunk-AUMWZSE7.js.map +1 -0
- package/dist/{chunk-XYTOI63Z.js → chunk-BGHFOD5A.js} +19 -11
- package/dist/chunk-BGHFOD5A.js.map +1 -0
- package/dist/{chunk-BUE5E2HL.js → chunk-BGLY7EEM.js} +5 -314
- package/dist/chunk-BGLY7EEM.js.map +1 -0
- package/dist/chunk-BIPBQQFI.js +44 -0
- package/dist/chunk-BIPBQQFI.js.map +1 -0
- package/dist/{chunk-S5SLVSVY.js → chunk-BQIFZ2MP.js} +5 -5
- package/dist/chunk-BTTPKDIL.js +34 -0
- package/dist/{chunk-PVGDJXVK.js.map → chunk-BTTPKDIL.js.map} +1 -1
- package/dist/{chunk-E53DSZEN.js → chunk-C26TE27X.js} +3 -3
- package/dist/{chunk-LZ4LDKHZ.js → chunk-CLB32OHM.js} +6 -6
- package/dist/{chunk-Q6IP2ARR.js → chunk-CSOYVTRX.js} +2 -2
- package/dist/{chunk-XOQSEF7X.js → chunk-CVILPI77.js} +6 -6
- package/dist/chunk-D3I2MCN7.js +29 -0
- package/dist/chunk-D3I2MCN7.js.map +1 -0
- package/dist/{chunk-A5OJCXZL.js → chunk-DSUAAZZX.js} +15 -4
- package/dist/chunk-DSUAAZZX.js.map +1 -0
- package/dist/{chunk-HREE4JHI.js → chunk-DYVMXPCF.js} +486 -287
- package/dist/chunk-DYVMXPCF.js.map +1 -0
- package/dist/{chunk-J7VGGECD.js → chunk-DZPFMQZ7.js} +1 -1
- package/dist/chunk-DZPFMQZ7.js.map +1 -0
- package/dist/{chunk-PDLBLTOK.js → chunk-EITZHSX6.js} +9 -9
- package/dist/{chunk-D3J5SLQK.js → chunk-EJHEWCGQ.js} +81 -20
- package/dist/chunk-EJHEWCGQ.js.map +1 -0
- package/dist/{chunk-WUNIWKY4.js → chunk-ELIL2A37.js} +6 -6
- package/dist/{chunk-E6PNLPGJ.js → chunk-FZP32336.js} +806 -470
- package/dist/chunk-FZP32336.js.map +1 -0
- package/dist/{chunk-4L6HUREQ.js → chunk-G7A5HLUS.js} +23 -17
- package/dist/chunk-G7A5HLUS.js.map +1 -0
- package/dist/{chunk-CINZGPSJ.js → chunk-GUMZC2BO.js} +2 -2
- package/dist/{chunk-H24WNPA2.js → chunk-GWFSVJ4P.js} +3 -3
- package/dist/{chunk-7XC2HX75.js → chunk-GYPQL6XN.js} +157 -16
- package/dist/chunk-GYPQL6XN.js.map +1 -0
- package/dist/{chunk-TSH56VPU.js → chunk-HAYSYUAB.js} +2 -2
- package/dist/{chunk-TDHTVMPG.js → chunk-HFPASSFV.js} +7 -2
- package/dist/chunk-HFPASSFV.js.map +1 -0
- package/dist/chunk-J2WC5LF4.js +395 -0
- package/dist/chunk-J2WC5LF4.js.map +1 -0
- package/dist/{chunk-PKNLM44P.js → chunk-JH6BPLOP.js} +9 -9
- package/dist/{chunk-KXB4VXHY.js → chunk-JIYDRBVZ.js} +2 -2
- package/dist/chunk-JV3C2MNQ.js +74 -0
- package/dist/chunk-JV3C2MNQ.js.map +1 -0
- package/dist/{chunk-AV5ZEH4M.js → chunk-KVJRXN2E.js} +2 -2
- package/dist/{chunk-JVLCVFQ4.js → chunk-KXEFRMCF.js} +3 -3
- package/dist/{chunk-WFTIGIIS.js → chunk-L6CQ7WIW.js} +5 -5
- package/dist/{chunk-EJUEXZHX.js → chunk-LLJMAULE.js} +2 -2
- package/dist/{chunk-N5Z4EVOR.js → chunk-LNEWDF2A.js} +36 -11
- package/dist/chunk-LNEWDF2A.js.map +1 -0
- package/dist/{chunk-AS7YMSL6.js → chunk-M23RF3LJ.js} +4 -4
- package/dist/{chunk-UYLMNVY6.js → chunk-MDISBSYA.js} +16 -9
- package/dist/chunk-MDISBSYA.js.map +1 -0
- package/dist/{chunk-3F2LKUMU.js → chunk-NIS256NW.js} +2 -2
- package/dist/{chunk-YIAA2X3D.js → chunk-NK5RGJ65.js} +3 -3
- package/dist/chunk-NLDVVWCL.js +84 -0
- package/dist/chunk-NLDVVWCL.js.map +1 -0
- package/dist/{chunk-OQ5PRDDS.js → chunk-NTOIP2E6.js} +6 -6
- package/dist/{chunk-HLPD7B7P.js → chunk-NUEQKLNB.js} +2 -2
- package/dist/{chunk-4J7G5SY4.js → chunk-NZBZ7IS2.js} +72 -24
- package/dist/chunk-NZBZ7IS2.js.map +1 -0
- package/dist/{chunk-3TBLDMJA.js → chunk-O4KMGRXE.js} +5 -2
- package/dist/chunk-O4KMGRXE.js.map +1 -0
- package/dist/{chunk-33PLLLL7.js → chunk-P7NGM24P.js} +6 -6
- package/dist/{chunk-7TWUCYER.js → chunk-PNRA7FAD.js} +7 -7
- package/dist/{chunk-5I4M26Q7.js → chunk-QBSFOKY6.js} +4 -4
- package/dist/{chunk-QJAQNXWI.js → chunk-QCECHYZL.js} +76 -79
- package/dist/chunk-QCECHYZL.js.map +1 -0
- package/dist/{chunk-P4DRWEYC.js → chunk-QVSBTCVP.js} +2 -2
- package/dist/{chunk-AAIUERNB.js → chunk-R5RFK3CB.js} +6 -6
- package/dist/{chunk-WDISJRMG.js → chunk-RMMVQQA6.js} +2 -2
- package/dist/{chunk-KWMXR7XS.js → chunk-S2V7RUCL.js} +8 -1
- package/dist/{chunk-KWMXR7XS.js.map → chunk-S2V7RUCL.js.map} +1 -1
- package/dist/{chunk-5SM35XZR.js → chunk-S5NZBKKQ.js} +2 -2
- package/dist/{chunk-VNA7W7QF.js → chunk-SVH57F5Z.js} +12 -4
- package/dist/chunk-SVH57F5Z.js.map +1 -0
- package/dist/{chunk-WIPEXG6R.js → chunk-SXIMQLGV.js} +2 -2
- package/dist/{chunk-RVLJEII5.js → chunk-SYUBB3WM.js} +256 -187
- package/dist/chunk-SYUBB3WM.js.map +1 -0
- package/dist/{chunk-OAEQLRCY.js → chunk-TN76AKO3.js} +5 -5
- package/dist/{chunk-QN25OCUF.js → chunk-TQ4GD737.js} +5 -5
- package/dist/{chunk-VCD4PSK2.js → chunk-TQZ4DVBC.js} +7 -4
- package/dist/chunk-TQZ4DVBC.js.map +1 -0
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-DNWXFTLD.js → chunk-TYISDI6B.js} +2 -2
- package/dist/{chunk-4LMA77JH.js → chunk-U2VLVBBH.js} +3 -3
- package/dist/{chunk-5ZE7QHTK.js → chunk-ULVR5KG7.js} +5 -5
- package/dist/{chunk-NVRYW264.js → chunk-UQWIKLQK.js} +18 -15
- package/dist/chunk-UQWIKLQK.js.map +1 -0
- package/dist/{chunk-YV32N67O.js → chunk-URS5GSM7.js} +1 -1
- package/dist/chunk-URS5GSM7.js.map +1 -0
- package/dist/{chunk-4B77XSG5.js → chunk-UV72DEZD.js} +5 -5
- package/dist/{chunk-S2BBISHU.js → chunk-VANZKHTN.js} +3 -3
- package/dist/chunk-VHFXP27N.js +250 -0
- package/dist/chunk-VHFXP27N.js.map +1 -0
- package/dist/{chunk-3Y224NYC.js → chunk-VYISFWVX.js} +2 -2
- package/dist/{chunk-TIHMZFIV.js → chunk-W3IC7QOY.js} +3 -3
- package/dist/{chunk-NRV4Y3PM.js → chunk-W4FBGYGK.js} +1 -1
- package/dist/{chunk-P2BM76KT.js → chunk-WAS4HV46.js} +174 -43
- package/dist/chunk-WAS4HV46.js.map +1 -0
- package/dist/{chunk-57QKLRBV.js → chunk-WB7JSQCP.js} +2 -1
- package/dist/chunk-WB7JSQCP.js.map +1 -0
- package/dist/chunk-WGP57SR3.js +68 -0
- package/dist/chunk-WGP57SR3.js.map +1 -0
- package/dist/{chunk-ECK75GDJ.js → chunk-WQIHRA5F.js} +43 -24
- package/dist/chunk-WQIHRA5F.js.map +1 -0
- package/dist/{chunk-MU7ZHSZE.js → chunk-WZFAPHIK.js} +2 -2
- package/dist/{chunk-T2TTP3KU.js → chunk-X4IDNPOS.js} +2 -2
- package/dist/{chunk-BLAKS3CP.js → chunk-XL3TATMJ.js} +3 -3
- package/dist/{chunk-W4XJFLAL.js → chunk-XPRJSHNI.js} +2 -2
- package/dist/{chunk-5TFP4CUL.js → chunk-XQ3HXAQH.js} +14 -11
- package/dist/chunk-XQ3HXAQH.js.map +1 -0
- package/dist/{chunk-VWAXN2BN.js → chunk-XSFHWBQO.js} +93 -31
- package/dist/chunk-XSFHWBQO.js.map +1 -0
- package/dist/{chunk-DL7ZD3JH.js → chunk-XTAUXTDO.js} +14 -9
- package/dist/chunk-XTAUXTDO.js.map +1 -0
- package/dist/{chunk-JE7EK33X.js → chunk-Y7HRYCNW.js} +2 -2
- package/dist/{chunk-E6EE5B67.js → chunk-YK6BDDHP.js} +4 -4
- package/dist/{chunk-ES36HTSC.js → chunk-YLHM5BQQ.js} +3 -3
- package/dist/{chunk-RN7DY3FC.js → chunk-YMAQDHQM.js} +31 -12
- package/dist/chunk-YMAQDHQM.js.map +1 -0
- package/dist/{chunk-ULARSG5Z.js → chunk-YN6ASZUG.js} +10 -8
- package/dist/{chunk-ULARSG5Z.js.map → chunk-YN6ASZUG.js.map} +1 -1
- package/dist/{chunk-IKKWIPYN.js → chunk-YYQAKIDJ.js} +37 -1
- package/dist/chunk-YYQAKIDJ.js.map +1 -0
- package/dist/{chunk-BJKPPZ6Z.js → chunk-ZFGZ6PZ2.js} +2 -2
- package/dist/{chunk-CJ2ZR7UA.js → chunk-ZI32MKDW.js} +267 -214
- package/dist/chunk-ZI32MKDW.js.map +1 -0
- package/dist/{chunk-64UDOIMI.js → chunk-ZLQ37WJX.js} +2 -2
- package/dist/chunk-ZMAYKGPN.js +351 -0
- package/dist/chunk-ZMAYKGPN.js.map +1 -0
- package/dist/{cli-BUGN3d6_.d.ts → cli-BBHDtG36.d.ts} +5 -5
- package/dist/cli.d.ts +16 -12
- package/dist/cli.js +138 -124
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +24 -23
- package/dist/compounding/preference-consolidator.d.ts +2 -1
- package/dist/compression-optimizer.d.ts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.js +10 -8
- package/dist/connectors/codex-materialize-runner.d.ts +2 -1
- package/dist/connectors/codex-materialize-runner.js +23 -22
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +26 -25
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/consolidation-undo.js +10 -7
- package/dist/consolidation-undo.js.map +1 -1
- package/dist/contradiction/index.d.ts +3 -2
- package/dist/converge-config.d.ts +2 -1
- package/dist/convergence-refresh.d.ts +4 -3
- package/dist/convergence-refresh.js +27 -26
- package/dist/conversation-index/backend.d.ts +2 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +2 -1
- package/dist/conversation-index/faiss-adapter.d.ts +2 -1
- package/dist/conversation-index/indexer.d.ts +2 -1
- package/dist/conversation-index/search.d.ts +2 -1
- package/dist/corpus-watermark.d.ts +2 -1
- package/dist/corpus-watermark.js +42 -41
- package/dist/day-summary.d.ts +2 -1
- package/dist/delinearize.d.ts +2 -1
- package/dist/direct-answer-wiring.d.ts +2 -1
- package/dist/direct-answer-wiring.js +2 -2
- package/dist/direct-answer.d.ts +2 -1
- package/dist/embedding-fallback.d.ts +2 -1
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +2 -1
- package/dist/entity-retrieval-boundaries.js +1 -1
- package/dist/entity-retrieval.d.ts +3 -2
- package/dist/entity-retrieval.js +24 -23
- package/dist/entity-schema.d.ts +2 -1
- package/dist/explicit-capture.d.ts +9 -8
- package/dist/explicit-capture.js +11 -9
- package/dist/external-wiki-access.d.ts +127 -0
- package/dist/external-wiki-access.js +186 -0
- package/dist/external-wiki-access.js.map +1 -0
- package/dist/external-wiki-cli.d.ts +13 -0
- package/dist/external-wiki-cli.js +96 -0
- package/dist/external-wiki-cli.js.map +1 -0
- package/dist/external-wiki-collection-registration.d.ts +39 -0
- package/dist/external-wiki-collection-registration.js +79 -0
- package/dist/external-wiki-collection-registration.js.map +1 -0
- package/dist/external-wiki-collection.d.ts +50 -0
- package/dist/external-wiki-collection.js +387 -0
- package/dist/external-wiki-collection.js.map +1 -0
- package/dist/external-wiki-config.d.ts +13 -0
- package/dist/external-wiki-config.js +13 -0
- package/dist/external-wiki-config.js.map +1 -0
- package/dist/external-wiki-guard.d.ts +11 -0
- package/dist/external-wiki-guard.js +18 -0
- package/dist/external-wiki-guard.js.map +1 -0
- package/dist/external-wiki-mcp-tools.d.ts +123 -0
- package/dist/external-wiki-mcp-tools.js +8 -0
- package/dist/external-wiki-mcp-tools.js.map +1 -0
- package/dist/external-wiki-search.d.ts +42 -0
- package/dist/external-wiki-search.js +11 -0
- package/dist/external-wiki-search.js.map +1 -0
- package/dist/external-wiki.d.ts +43 -0
- package/dist/external-wiki.js +16 -0
- package/dist/external-wiki.js.map +1 -0
- package/dist/extraction-error-classification.d.ts +2 -1
- package/dist/extraction-faithfulness.d.ts +2 -1
- package/dist/extraction-judge-telemetry.d.ts +2 -1
- package/dist/extraction-judge-training.d.ts +2 -1
- package/dist/extraction-judge.d.ts +2 -1
- package/dist/extraction-liveness.d.ts +2 -1
- package/dist/extraction-source-grounding-helpers.d.ts +5 -3
- package/dist/extraction-source-grounding-helpers.js +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +2 -1
- package/dist/extraction-source-grounding-rules.js +2 -2
- package/dist/extraction-source-grounding.d.ts +2 -1
- package/dist/extraction-source-grounding.js +5 -5
- package/dist/extraction.d.ts +2 -1
- package/dist/extraction.js +45 -43
- package/dist/fallback-llm.d.ts +2 -1
- package/dist/graph-dashboard-diff.d.ts +2 -1
- package/dist/graph-dashboard-key.d.ts +2 -1
- package/dist/graph-dashboard-parser.d.ts +2 -1
- package/dist/graph-edge-reinforcement.d.ts +2 -1
- package/dist/graph-snapshot.d.ts +2 -1
- package/dist/graph.d.ts +2 -1
- package/dist/harmonic-retrieval.js +2 -2
- package/dist/importance.d.ts +2 -1
- package/dist/importers/index.d.ts +2 -1
- package/dist/in-flight-reads.d.ts +2 -1
- package/dist/index.d.ts +732 -720
- package/dist/index.js +291 -259
- package/dist/intent.d.ts +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/index.js +8 -8
- package/dist/lcm/tools.d.ts +2 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/live-connectors-runner.d.ts +2 -1
- package/dist/local-llm.d.ts +2 -1
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +2 -1
- package/dist/maintenance/memory-governance.d.ts +2 -1
- package/dist/maintenance/memory-governance.js +24 -23
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +24 -23
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +26 -25
- package/dist/{maintenance-LbuS2rUA.d.ts → maintenance-D2mveyCd.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +14 -10
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +2 -1
- package/dist/memory-cache.d.ts +2 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/memory-projection-store.d.ts +2 -1
- package/dist/memory-provenance.d.ts +2 -1
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +2 -1
- package/dist/namespaces/migrate.d.ts +4 -3
- package/dist/namespaces/migrate.js +40 -39
- package/dist/namespaces/principal.d.ts +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +18 -18
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +23 -22
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/offline-sync-impression-drain.d.ts +2 -1
- package/dist/offline-sync-impression-drain.js +11 -9
- package/dist/offline-sync.d.ts +29 -3
- package/dist/offline-sync.js +6 -2
- package/dist/operator-doctor-corpus.d.ts +2 -1
- package/dist/operator-doctor-corpus.js +45 -44
- package/dist/operator-doctor-replica.d.ts +2 -1
- package/dist/operator-doctor-replica.js +3 -3
- package/dist/operator-toolkit.d.ts +4 -3
- package/dist/operator-toolkit.js +59 -55
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +36 -33
- package/dist/{orchestrator-rHiWt32X.d.ts → orchestrator-DJYlwiUv.d.ts} +14 -7
- package/dist/orchestrator.d.ts +9 -8
- package/dist/orchestrator.js +201 -189
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/{pipeline-W_97O8BV.d.ts → pipeline-CNjY4wk3.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +2 -1
- package/dist/policy-runtime.js +1 -1
- package/dist/proactive-contention.d.ts +2 -1
- package/dist/provenance.d.ts +2 -1
- package/dist/provenance.js +2 -2
- package/dist/{qmd-LWtMofAf.d.ts → qmd-C0UDZidt.d.ts} +9 -7
- package/dist/qmd-preflight.d.ts +5 -4
- package/dist/qmd-preflight.js +2 -2
- package/dist/qmd-recall-cache.d.ts +2 -1
- package/dist/qmd.d.ts +4 -3
- package/dist/qmd.js +5 -5
- package/dist/recall-concurrency-config.d.ts +2 -1
- package/dist/recall-disclosure-escalation.d.ts +2 -1
- package/dist/recall-explain-renderer.d.ts +2 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +2 -1
- package/dist/recall-planner-llm.d.ts +2 -1
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-tag-filter.d.ts +2 -1
- package/dist/recall-timings.d.ts +2 -1
- package/dist/recall-xray-cli.d.ts +2 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +8 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +12 -2
- package/dist/reconcile/cursor.js +46 -7
- package/dist/reconcile/cursor.js.map +1 -1
- package/dist/reconcile/manifest.d.ts +9 -2
- package/dist/reconcile/manifest.js +15 -268
- package/dist/reconcile/manifest.js.map +1 -1
- package/dist/reconcile/plan.d.ts +6 -2
- package/dist/reconcile/plan.js +4 -4
- package/dist/replay/normalizers/chatgpt.d.ts +2 -1
- package/dist/replay/normalizers/claude.d.ts +2 -1
- package/dist/replay/normalizers/openclaw.d.ts +2 -1
- package/dist/replay/normalizers/shared.d.ts +2 -1
- package/dist/replay/runner.d.ts +2 -1
- package/dist/replay/types.d.ts +2 -1
- package/dist/replica-divergence.d.ts +2 -1
- package/dist/replica-divergence.js +2 -2
- package/dist/replica-peers-config.d.ts +2 -1
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resume-bundles.js +12 -10
- package/dist/retrieval-agents.d.ts +4 -3
- package/dist/retrieval-agents.js +2 -2
- package/dist/retrieval-tiers.d.ts +2 -1
- package/dist/routing/engine.d.ts +2 -1
- package/dist/routing/store.d.ts +2 -1
- package/dist/salvage-envelope.d.ts +2 -1
- package/dist/schemas.d.ts +76 -76
- package/dist/{scope-profiles-BiQKOE-p.d.ts → scope-profiles-BJzp2F5A.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +2 -1
- package/dist/search/embed-helper.js +3 -3
- package/dist/search/factory.d.ts +4 -2
- package/dist/search/factory.js +20 -18
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +22 -22
- package/dist/search/lancedb-backend.d.ts +2 -1
- package/dist/search/lancedb-backend.js +4 -4
- package/dist/search/meilisearch-backend.d.ts +2 -1
- package/dist/search/meilisearch-backend.js +4 -4
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/orama-backend.d.ts +2 -1
- package/dist/search/orama-backend.js +4 -4
- package/dist/search/port.d.ts +18 -1
- package/dist/search/port.js +1 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/search/remote-backend.js +2 -2
- package/dist/secure-store/index.js +2 -2
- package/dist/{semantic-consolidation-dHYCyqgh.d.ts → semantic-consolidation-D4KAZO2G.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -2
- package/dist/semantic-consolidation.js +25 -24
- package/dist/semantic-rule-promotion.js +23 -22
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +24 -23
- package/dist/{service-DJG3KCQ4.d.ts → service-BeDxSqE-.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +2 -1
- package/dist/session-observer-state.d.ts +2 -1
- package/dist/shared-context/manager.d.ts +10 -9
- package/dist/shared-context/manager.js +2 -2
- package/dist/signal.d.ts +2 -1
- package/dist/source-agent-qualifier.d.ts +2 -1
- package/dist/source-agent-qualifier.js +42 -40
- package/dist/{storage-F9FVh-w9.d.ts → storage-DfjxusTE.d.ts} +24 -12
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +25 -24
- package/dist/summarizer.d.ts +2 -1
- package/dist/summarizer.js +5 -5
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/temporal-supersession.d.ts +3 -2
- package/dist/temporal-timeline-recall.d.ts +2 -1
- package/dist/temporal-validity.d.ts +2 -1
- package/dist/threading.d.ts +2 -1
- package/dist/tier-migration.d.ts +3 -2
- package/dist/tier-routing.d.ts +2 -1
- package/dist/tool-scoped-memory.d.ts +5 -1
- package/dist/tool-scoped-memory.js +3 -1
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/transfer/capsule-import.js +4 -4
- package/dist/transfer/types.d.ts +66 -66
- package/dist/trust-score-stage.d.ts +2 -1
- package/dist/trust-score.d.ts +2 -1
- package/dist/{types-rEwubvim.d.ts → types-yX_FwERf.d.ts} +8 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/verified-recall.js +24 -23
- package/dist/write-envelope.d.ts +2 -1
- package/package.json +2 -2
- package/src/abort-error.ts +17 -0
- package/src/access-admin-ops-surface.ts +1 -0
- package/src/access-boundary.ts +1 -0
- package/src/access-coding-context-resolution.ts +42 -0
- package/src/access-extraction-force-flush.ts +38 -2
- package/src/access-http-lcm-compaction.ts +5 -2
- package/src/access-http-offline-stream.ts +79 -0
- package/src/access-http.test.ts +310 -3
- package/src/access-http.ts +85 -21
- package/src/access-mcp-output-schemas.ts +36 -0
- package/src/access-mcp.test.ts +95 -1
- package/src/access-mcp.ts +7 -9
- package/src/access-observe-helpers.ts +64 -22
- package/src/access-observe-write-surface.ts +8 -0
- package/src/access-offline-manifest.ts +54 -0
- package/src/access-operations-batch.ts +3 -3
- package/src/access-operations.ts +13 -7
- package/src/access-recall-concurrency.ts +3 -27
- package/src/access-recall-surface.ts +3 -0
- package/src/access-service-health.test.ts +32 -7
- package/src/access-service-namespace.test.ts +55 -0
- package/src/access-service-observe-idempotency.test.ts +34 -2
- package/src/access-service-observe-lcm-parity.test.ts +138 -3
- package/src/access-service-observe-scope.test.ts +160 -1
- package/src/access-service-offline-file-content.test.ts +345 -1
- package/src/access-service.ts +86 -59
- package/src/access-surface-catalog.ts +4 -0
- package/src/admin/admin-surfaces.ts +2 -0
- package/src/binary-lifecycle/pipeline.test.ts +106 -1
- package/src/binary-lifecycle/pipeline.ts +3 -0
- package/src/coding/git-context.test.ts +47 -0
- package/src/coding/git-context.ts +129 -27
- package/src/config.test.ts +24 -0
- package/src/config.ts +9 -12
- package/src/connector-provenance.test.ts +101 -0
- package/src/consolidation-undo.ts +3 -0
- package/src/converge-conflict-policy-type.test.ts +15 -0
- package/src/convergence-refresh.ts +14 -2
- package/src/correction/correction-access-wiring.ts +9 -7
- package/src/correction/correction-executor.test.ts +206 -2
- package/src/correction/correction-executor.ts +29 -20
- package/src/correction/correction-planner.test.ts +36 -0
- package/src/correction/correction-planner.ts +9 -15
- package/src/correction/correction-service.ts +3 -1
- package/src/correction/correction-storage-integration.test.ts +77 -0
- package/src/correction/correction-surfaces.test.ts +41 -28
- package/src/correction/passive-capture.test.ts +59 -0
- package/src/correction/passive-capture.ts +4 -1
- package/src/entity-retrieval-boundaries.ts +17 -4
- package/src/entity-retrieval.ts +27 -6
- package/src/external-wiki-access.test.ts +65 -0
- package/src/external-wiki-access.ts +31 -0
- package/src/external-wiki-cli.ts +92 -0
- package/src/external-wiki-collection-registration.test.ts +163 -0
- package/src/external-wiki-collection-registration.ts +101 -0
- package/src/external-wiki-collection.test.ts +502 -0
- package/src/external-wiki-collection.ts +503 -0
- package/src/external-wiki-config.test.ts +135 -0
- package/src/external-wiki-config.ts +100 -0
- package/src/external-wiki-guard.ts +83 -0
- package/src/external-wiki-mcp-tools.ts +23 -0
- package/src/external-wiki-search.test.ts +301 -0
- package/src/external-wiki-search.ts +362 -0
- package/src/external-wiki.test.ts +240 -0
- package/src/external-wiki.ts +453 -0
- package/src/extraction-scope-source-agent.test.ts +21 -0
- package/src/extraction-source-grounding-helpers.ts +243 -53
- package/src/extraction-source-grounding-rules.ts +133 -39
- package/src/extraction-source-grounding.test.ts +363 -33
- package/src/extraction-timeout.test.ts +1 -0
- package/src/extraction-watermark.test.ts +150 -7
- package/src/extraction.ts +8 -1
- package/src/index.ts +8 -0
- package/src/mcp-read-only-tools.ts +1 -0
- package/src/offline-sync.test.ts +194 -0
- package/src/offline-sync.ts +217 -13
- package/src/orchestration/external-wiki-recall-guard.test.ts +94 -0
- package/src/orchestration/extraction-persist.ts +19 -2
- package/src/orchestration/extraction-run-helpers.ts +37 -19
- package/src/orchestration/extraction-run.test.ts +171 -2
- package/src/orchestration/extraction-run.ts +11 -13
- package/src/orchestration/extraction-watermark.ts +106 -17
- package/src/orchestration/generic-recall-paths.ts +14 -0
- package/src/orchestration/orchestrator-helpers.ts +2 -0
- package/src/orchestration/orchestrator-init.ts +9 -0
- package/src/orchestration/recall-internal-deps.ts +6 -0
- package/src/orchestration/recall-internal.ts +154 -33
- package/src/orchestration/recall-rerank-coordinator.ts +60 -25
- package/src/orchestration/recall-search-pipeline.test.ts +75 -1
- package/src/orchestration/recall-search-pipeline.ts +50 -10
- package/src/orchestrator-convergence-refresh.test.ts +36 -2
- package/src/orchestrator.ts +13 -3
- package/src/page-versioning.ts +5 -19
- package/src/procedural/procedure-recall.ts +5 -1
- package/src/provenance-surfaces.test.ts +3 -0
- package/src/qmd-client.test.ts +78 -17
- package/src/qmd.test.ts +24 -0
- package/src/qmd.ts +224 -315
- package/src/recall-explain-renderer.ts +3 -0
- package/src/recall-rerank-coordinator.test.ts +61 -0
- package/src/recall-xray-renderer.test.ts +6 -0
- package/src/recall-xray.test.ts +88 -1
- package/src/recall-xray.ts +15 -0
- package/src/reconcile/cursor.test.ts +48 -0
- package/src/reconcile/cursor.ts +58 -11
- package/src/reconcile/manifest.test.ts +4 -0
- package/src/reconcile/manifest.ts +41 -51
- package/src/reconcile/plan.test.ts +4 -0
- package/src/reconcile/plan.ts +29 -16
- package/src/search/factory.ts +6 -6
- package/src/search/port.ts +25 -9
- package/src/secure-store/secure-fs.ts +20 -12
- package/src/secure-store/secure-store.test.ts +41 -2
- package/src/spaces/index.test.ts +61 -2
- package/src/spaces/index.ts +44 -18
- package/src/storage/entity-alias-config.ts +97 -0
- package/src/storage/entity-canonical-id-lock.ts +53 -23
- package/src/storage/entity-canonical-id-migration.ts +53 -22
- package/src/storage/entity-canonical-id-references.ts +3 -0
- package/src/storage/entity-id-safety.ts +7 -0
- package/src/storage/entity-store.ts +6 -2
- package/src/storage/memory-frontmatter-metadata.ts +4 -9
- package/src/storage/memory-migration-serialization.ts +10 -15
- package/src/storage/tombstone-blocked-capture-mutation.ts +52 -64
- package/src/storage/tombstone-blocked-capture-sync.ts +244 -199
- package/src/storage-deletion-revisions.test.ts +91 -0
- package/src/storage-fact-hash-index-defer.test.ts +446 -163
- package/src/storage.ts +534 -245
- package/src/tool-scoped-memory.ts +10 -0
- package/src/transfer/capsule-import.ts +13 -0
- package/src/transfer/capsule-merge.ts +13 -0
- package/src/trust-score-recall-paths.test.ts +75 -1
- package/src/types.ts +7 -3
- package/dist/capsule-merge-IDWJPCWK.js.map +0 -1
- package/dist/chunk-3CE77VAP.js.map +0 -1
- package/dist/chunk-3TBLDMJA.js.map +0 -1
- package/dist/chunk-4J7G5SY4.js.map +0 -1
- package/dist/chunk-4L6HUREQ.js.map +0 -1
- package/dist/chunk-57QKLRBV.js.map +0 -1
- package/dist/chunk-5TFP4CUL.js.map +0 -1
- package/dist/chunk-7XC2HX75.js.map +0 -1
- package/dist/chunk-A5OJCXZL.js.map +0 -1
- package/dist/chunk-BUE5E2HL.js.map +0 -1
- package/dist/chunk-CJ2ZR7UA.js.map +0 -1
- package/dist/chunk-CUM2BBPN.js.map +0 -1
- package/dist/chunk-D3J5SLQK.js.map +0 -1
- package/dist/chunk-DL7ZD3JH.js.map +0 -1
- package/dist/chunk-DLVPUX7U.js.map +0 -1
- package/dist/chunk-E6PNLPGJ.js.map +0 -1
- package/dist/chunk-ECK75GDJ.js.map +0 -1
- package/dist/chunk-HREE4JHI.js.map +0 -1
- package/dist/chunk-IKKWIPYN.js.map +0 -1
- package/dist/chunk-J7VGGECD.js.map +0 -1
- package/dist/chunk-N5Z4EVOR.js.map +0 -1
- package/dist/chunk-NVRYW264.js.map +0 -1
- package/dist/chunk-P2BM76KT.js.map +0 -1
- package/dist/chunk-PVGDJXVK.js +0 -21
- package/dist/chunk-QJAQNXWI.js.map +0 -1
- package/dist/chunk-RN7DY3FC.js.map +0 -1
- package/dist/chunk-RVLJEII5.js.map +0 -1
- package/dist/chunk-S2NCTZGJ.js.map +0 -1
- package/dist/chunk-TDHTVMPG.js.map +0 -1
- package/dist/chunk-UYLMNVY6.js.map +0 -1
- package/dist/chunk-VCD4PSK2.js.map +0 -1
- package/dist/chunk-VNA7W7QF.js.map +0 -1
- package/dist/chunk-VWAXN2BN.js.map +0 -1
- package/dist/chunk-WOCNN776.js.map +0 -1
- package/dist/chunk-XYTOI63Z.js.map +0 -1
- package/dist/chunk-YV32N67O.js.map +0 -1
- /package/dist/{auto-sync-5OE5QOZB.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
- /package/dist/{chunk-VUPTKTDV.js.map → chunk-2MRHJNWL.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-5IVLTFOV.js.map → chunk-44N6ESJ4.js.map} +0 -0
- /package/dist/{chunk-HO3QBJEY.js.map → chunk-5546W5SI.js.map} +0 -0
- /package/dist/{chunk-U7GW7NE7.js.map → chunk-5CEECY6P.js.map} +0 -0
- /package/dist/{chunk-4UH4BTGK.js.map → chunk-5SNZSWWR.js.map} +0 -0
- /package/dist/{chunk-6CZPDBJS.js.map → chunk-5U7ID3EZ.js.map} +0 -0
- /package/dist/{chunk-GF22HWS2.js.map → chunk-6NNNURLK.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-7RZJWZ46.js.map} +0 -0
- /package/dist/{chunk-E5UK4VPE.js.map → chunk-7SHJHPTY.js.map} +0 -0
- /package/dist/{chunk-UVIKWC7M.js.map → chunk-7YERSTN7.js.map} +0 -0
- /package/dist/{chunk-S5SLVSVY.js.map → chunk-BQIFZ2MP.js.map} +0 -0
- /package/dist/{chunk-E53DSZEN.js.map → chunk-C26TE27X.js.map} +0 -0
- /package/dist/{chunk-LZ4LDKHZ.js.map → chunk-CLB32OHM.js.map} +0 -0
- /package/dist/{chunk-Q6IP2ARR.js.map → chunk-CSOYVTRX.js.map} +0 -0
- /package/dist/{chunk-XOQSEF7X.js.map → chunk-CVILPI77.js.map} +0 -0
- /package/dist/{chunk-PDLBLTOK.js.map → chunk-EITZHSX6.js.map} +0 -0
- /package/dist/{chunk-WUNIWKY4.js.map → chunk-ELIL2A37.js.map} +0 -0
- /package/dist/{chunk-CINZGPSJ.js.map → chunk-GUMZC2BO.js.map} +0 -0
- /package/dist/{chunk-H24WNPA2.js.map → chunk-GWFSVJ4P.js.map} +0 -0
- /package/dist/{chunk-TSH56VPU.js.map → chunk-HAYSYUAB.js.map} +0 -0
- /package/dist/{chunk-PKNLM44P.js.map → chunk-JH6BPLOP.js.map} +0 -0
- /package/dist/{chunk-KXB4VXHY.js.map → chunk-JIYDRBVZ.js.map} +0 -0
- /package/dist/{chunk-AV5ZEH4M.js.map → chunk-KVJRXN2E.js.map} +0 -0
- /package/dist/{chunk-JVLCVFQ4.js.map → chunk-KXEFRMCF.js.map} +0 -0
- /package/dist/{chunk-WFTIGIIS.js.map → chunk-L6CQ7WIW.js.map} +0 -0
- /package/dist/{chunk-EJUEXZHX.js.map → chunk-LLJMAULE.js.map} +0 -0
- /package/dist/{chunk-AS7YMSL6.js.map → chunk-M23RF3LJ.js.map} +0 -0
- /package/dist/{chunk-3F2LKUMU.js.map → chunk-NIS256NW.js.map} +0 -0
- /package/dist/{chunk-YIAA2X3D.js.map → chunk-NK5RGJ65.js.map} +0 -0
- /package/dist/{chunk-OQ5PRDDS.js.map → chunk-NTOIP2E6.js.map} +0 -0
- /package/dist/{chunk-HLPD7B7P.js.map → chunk-NUEQKLNB.js.map} +0 -0
- /package/dist/{chunk-33PLLLL7.js.map → chunk-P7NGM24P.js.map} +0 -0
- /package/dist/{chunk-7TWUCYER.js.map → chunk-PNRA7FAD.js.map} +0 -0
- /package/dist/{chunk-5I4M26Q7.js.map → chunk-QBSFOKY6.js.map} +0 -0
- /package/dist/{chunk-P4DRWEYC.js.map → chunk-QVSBTCVP.js.map} +0 -0
- /package/dist/{chunk-AAIUERNB.js.map → chunk-R5RFK3CB.js.map} +0 -0
- /package/dist/{chunk-WDISJRMG.js.map → chunk-RMMVQQA6.js.map} +0 -0
- /package/dist/{chunk-5SM35XZR.js.map → chunk-S5NZBKKQ.js.map} +0 -0
- /package/dist/{chunk-WIPEXG6R.js.map → chunk-SXIMQLGV.js.map} +0 -0
- /package/dist/{chunk-OAEQLRCY.js.map → chunk-TN76AKO3.js.map} +0 -0
- /package/dist/{chunk-QN25OCUF.js.map → chunk-TQ4GD737.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-DNWXFTLD.js.map → chunk-TYISDI6B.js.map} +0 -0
- /package/dist/{chunk-4LMA77JH.js.map → chunk-U2VLVBBH.js.map} +0 -0
- /package/dist/{chunk-5ZE7QHTK.js.map → chunk-ULVR5KG7.js.map} +0 -0
- /package/dist/{chunk-4B77XSG5.js.map → chunk-UV72DEZD.js.map} +0 -0
- /package/dist/{chunk-S2BBISHU.js.map → chunk-VANZKHTN.js.map} +0 -0
- /package/dist/{chunk-3Y224NYC.js.map → chunk-VYISFWVX.js.map} +0 -0
- /package/dist/{chunk-TIHMZFIV.js.map → chunk-W3IC7QOY.js.map} +0 -0
- /package/dist/{chunk-NRV4Y3PM.js.map → chunk-W4FBGYGK.js.map} +0 -0
- /package/dist/{chunk-MU7ZHSZE.js.map → chunk-WZFAPHIK.js.map} +0 -0
- /package/dist/{chunk-T2TTP3KU.js.map → chunk-X4IDNPOS.js.map} +0 -0
- /package/dist/{chunk-BLAKS3CP.js.map → chunk-XL3TATMJ.js.map} +0 -0
- /package/dist/{chunk-W4XJFLAL.js.map → chunk-XPRJSHNI.js.map} +0 -0
- /package/dist/{chunk-JE7EK33X.js.map → chunk-Y7HRYCNW.js.map} +0 -0
- /package/dist/{chunk-E6EE5B67.js.map → chunk-YK6BDDHP.js.map} +0 -0
- /package/dist/{chunk-ES36HTSC.js.map → chunk-YLHM5BQQ.js.map} +0 -0
- /package/dist/{chunk-BJKPPZ6Z.js.map → chunk-ZFGZ6PZ2.js.map} +0 -0
- /package/dist/{chunk-64UDOIMI.js.map → chunk-ZLQ37WJX.js.map} +0 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loadExternalWikiCatalog,
|
|
3
|
+
readExternalWikiPage
|
|
4
|
+
} from "./chunk-ZMAYKGPN.js";
|
|
5
|
+
|
|
6
|
+
// src/external-wiki-search.ts
|
|
7
|
+
import path from "path";
|
|
8
|
+
var DEFAULT_LIMIT = 6;
|
|
9
|
+
var MAX_LIMIT = 20;
|
|
10
|
+
var DEFAULT_MAX_CHARS_PER_HIT = 1e3;
|
|
11
|
+
var MAX_CHARS_PER_HIT = 8e3;
|
|
12
|
+
var DEFAULT_MAX_CANDIDATE_FILES = 100;
|
|
13
|
+
var MAX_CANDIDATE_FILES = 100;
|
|
14
|
+
var ExternalWikiSearchError = class extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = "ExternalWikiSearchError";
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
async function searchExternalWikis(roots, input, options = {}) {
|
|
21
|
+
const query = requireQuery(input.query);
|
|
22
|
+
const limit = boundedInteger(input.limit, DEFAULT_LIMIT, 1, MAX_LIMIT, "limit");
|
|
23
|
+
const maxCharsPerHit = boundedInteger(
|
|
24
|
+
input.maxCharsPerHit,
|
|
25
|
+
DEFAULT_MAX_CHARS_PER_HIT,
|
|
26
|
+
1,
|
|
27
|
+
MAX_CHARS_PER_HIT,
|
|
28
|
+
"maxCharsPerHit"
|
|
29
|
+
);
|
|
30
|
+
const maxCandidateFiles = boundedInteger(
|
|
31
|
+
options.maxCandidateFiles,
|
|
32
|
+
DEFAULT_MAX_CANDIDATE_FILES,
|
|
33
|
+
1,
|
|
34
|
+
MAX_CANDIDATE_FILES,
|
|
35
|
+
"maxCandidateFiles"
|
|
36
|
+
);
|
|
37
|
+
const selectedRoots = selectRoots(roots, input.wikiId);
|
|
38
|
+
const queryTokens = tokenize(query);
|
|
39
|
+
const degradedWikiIds = /* @__PURE__ */ new Set();
|
|
40
|
+
const perRootHits = await Promise.all(
|
|
41
|
+
selectedRoots.map(async (root) => {
|
|
42
|
+
try {
|
|
43
|
+
const catalog = await loadExternalWikiCatalog(root, { maxEntries: maxCandidateFiles });
|
|
44
|
+
if (!catalog.indexPresent) degradedWikiIds.add(root.id);
|
|
45
|
+
const candidates = await rankCandidates(
|
|
46
|
+
root,
|
|
47
|
+
catalog.entries,
|
|
48
|
+
query,
|
|
49
|
+
queryTokens,
|
|
50
|
+
maxCandidateFiles,
|
|
51
|
+
options.candidateProvider
|
|
52
|
+
);
|
|
53
|
+
return await readCandidateHits(root, candidates, query, queryTokens, maxCharsPerHit);
|
|
54
|
+
} catch {
|
|
55
|
+
degradedWikiIds.add(root.id);
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
const hits = perRootHits.flat().sort(compareHits).slice(0, limit).map((hit, index) => ({ ...hit, rank: index + 1 }));
|
|
61
|
+
return {
|
|
62
|
+
query,
|
|
63
|
+
hits,
|
|
64
|
+
count: hits.length,
|
|
65
|
+
degradedWikiIds: [...degradedWikiIds].sort()
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function requireQuery(value) {
|
|
69
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
70
|
+
throw new ExternalWikiSearchError("external wiki search query is required");
|
|
71
|
+
}
|
|
72
|
+
return value.trim();
|
|
73
|
+
}
|
|
74
|
+
function boundedInteger(value, fallback, minimum, maximum, field) {
|
|
75
|
+
const resolved = value ?? fallback;
|
|
76
|
+
if (!Number.isInteger(resolved) || resolved < minimum || resolved > maximum) {
|
|
77
|
+
throw new ExternalWikiSearchError(`${field} must be an integer from ${minimum} to ${maximum}`);
|
|
78
|
+
}
|
|
79
|
+
return resolved;
|
|
80
|
+
}
|
|
81
|
+
function selectRoots(roots, wikiId) {
|
|
82
|
+
const enabled = roots.filter((root) => root.enabled);
|
|
83
|
+
if (enabled.length === 0) {
|
|
84
|
+
throw new ExternalWikiSearchError("no enabled external wiki roots are configured");
|
|
85
|
+
}
|
|
86
|
+
if (wikiId === void 0) return enabled;
|
|
87
|
+
const normalizedWikiId = wikiId.trim();
|
|
88
|
+
const selected = enabled.find((root) => root.id === normalizedWikiId);
|
|
89
|
+
if (!selected) {
|
|
90
|
+
throw new ExternalWikiSearchError(`unknown external wiki: ${normalizedWikiId || "(empty)"}`);
|
|
91
|
+
}
|
|
92
|
+
return [selected];
|
|
93
|
+
}
|
|
94
|
+
async function rankCandidates(root, entries, query, queryTokens, maxCandidateFiles, provider) {
|
|
95
|
+
let provided = [];
|
|
96
|
+
if (provider) {
|
|
97
|
+
try {
|
|
98
|
+
provided = await provider.search(root, query, maxCandidateFiles);
|
|
99
|
+
} catch {
|
|
100
|
+
provided = [];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const providerByPath = /* @__PURE__ */ new Map();
|
|
104
|
+
for (const [index, candidate] of provided.slice(0, maxCandidateFiles).entries()) {
|
|
105
|
+
if (!providerByPath.has(candidate.path)) {
|
|
106
|
+
providerByPath.set(candidate.path, { score: finiteScore(candidate.score), rank: index });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return entries.map((entry) => {
|
|
110
|
+
const providerCandidate = providerByPath.get(entry.path);
|
|
111
|
+
return {
|
|
112
|
+
entry,
|
|
113
|
+
catalogScore: scoreCatalogEntry(entry, query, queryTokens),
|
|
114
|
+
providerScore: providerCandidate?.score ?? 0,
|
|
115
|
+
...providerCandidate ? { providerRank: providerCandidate.rank } : {}
|
|
116
|
+
};
|
|
117
|
+
}).sort((left, right) => {
|
|
118
|
+
const leftProvided = left.providerRank !== void 0;
|
|
119
|
+
const rightProvided = right.providerRank !== void 0;
|
|
120
|
+
if (leftProvided !== rightProvided) return leftProvided ? -1 : 1;
|
|
121
|
+
if (left.providerRank !== right.providerRank) {
|
|
122
|
+
return (left.providerRank ?? Number.MAX_SAFE_INTEGER) - (right.providerRank ?? Number.MAX_SAFE_INTEGER);
|
|
123
|
+
}
|
|
124
|
+
if (right.catalogScore !== left.catalogScore) return right.catalogScore - left.catalogScore;
|
|
125
|
+
return left.entry.path.localeCompare(right.entry.path);
|
|
126
|
+
}).slice(0, maxCandidateFiles);
|
|
127
|
+
}
|
|
128
|
+
async function readCandidateHits(root, candidates, query, queryTokens, maxCharsPerHit) {
|
|
129
|
+
const results = await Promise.all(
|
|
130
|
+
candidates.map(async (candidate) => {
|
|
131
|
+
try {
|
|
132
|
+
const page = await readExternalWikiPage(root, candidate.entry.path);
|
|
133
|
+
const pageScore = scorePage(page.title, page.content, query, queryTokens);
|
|
134
|
+
const score = candidate.catalogScore + candidate.providerScore + pageScore;
|
|
135
|
+
if (score <= 0) return void 0;
|
|
136
|
+
const snippet = extractSnippet(page.content, queryTokens, maxCharsPerHit);
|
|
137
|
+
const rootRelativePath = path.posix.join(root.pagesDir.replaceAll("\\", "/"), page.path);
|
|
138
|
+
const citation = {
|
|
139
|
+
path: rootRelativePath,
|
|
140
|
+
lineStart: snippet.lineStart,
|
|
141
|
+
lineEnd: snippet.lineEnd,
|
|
142
|
+
note: page.title
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
wikiId: root.id,
|
|
146
|
+
title: page.title,
|
|
147
|
+
path: rootRelativePath,
|
|
148
|
+
snippet: snippet.text,
|
|
149
|
+
score: roundScore(score),
|
|
150
|
+
citations: [citation],
|
|
151
|
+
...candidate.entry.indexBlurb === void 0 ? {} : { indexBlurb: candidate.entry.indexBlurb }
|
|
152
|
+
};
|
|
153
|
+
} catch {
|
|
154
|
+
return void 0;
|
|
155
|
+
}
|
|
156
|
+
})
|
|
157
|
+
);
|
|
158
|
+
return results.filter((result) => result !== void 0);
|
|
159
|
+
}
|
|
160
|
+
function scoreCatalogEntry(entry, query, queryTokens) {
|
|
161
|
+
return scoreText(entry.title, query, queryTokens, 16, 20) + scoreText(entry.path, query, queryTokens, 8, 8) + scoreText(entry.indexBlurb ?? "", query, queryTokens, 4, 6);
|
|
162
|
+
}
|
|
163
|
+
function scorePage(title, content, query, queryTokens) {
|
|
164
|
+
const titleScore = scoreText(title, query, queryTokens, 12, 16);
|
|
165
|
+
const lines = content.split(/\r?\n/u);
|
|
166
|
+
let bestLineScore = 0;
|
|
167
|
+
const matchedTokens = /* @__PURE__ */ new Set();
|
|
168
|
+
for (const line of lines) {
|
|
169
|
+
const normalizedLine = line.toLocaleLowerCase();
|
|
170
|
+
let lineScore = 0;
|
|
171
|
+
for (const token of queryTokens) {
|
|
172
|
+
if (!normalizedLine.includes(token)) continue;
|
|
173
|
+
matchedTokens.add(token);
|
|
174
|
+
lineScore += line.startsWith("#") ? 6 : 3;
|
|
175
|
+
}
|
|
176
|
+
if (normalizedLine.includes(query.toLocaleLowerCase())) lineScore += 10;
|
|
177
|
+
bestLineScore = Math.max(bestLineScore, lineScore);
|
|
178
|
+
}
|
|
179
|
+
return titleScore + bestLineScore + matchedTokens.size * 2;
|
|
180
|
+
}
|
|
181
|
+
function scoreText(value, query, queryTokens, tokenWeight, phraseWeight) {
|
|
182
|
+
const normalized = value.toLocaleLowerCase();
|
|
183
|
+
let score = normalized.includes(query.toLocaleLowerCase()) ? phraseWeight : 0;
|
|
184
|
+
for (const token of queryTokens) {
|
|
185
|
+
if (normalized.includes(token)) score += tokenWeight;
|
|
186
|
+
}
|
|
187
|
+
return score;
|
|
188
|
+
}
|
|
189
|
+
function tokenize(value) {
|
|
190
|
+
const tokens = value.toLocaleLowerCase().match(/[\p{L}\p{N}]+/gu) ?? [];
|
|
191
|
+
return [...new Set(tokens)];
|
|
192
|
+
}
|
|
193
|
+
function extractSnippet(content, queryTokens, maxChars) {
|
|
194
|
+
const lines = content.split(/\r?\n/u);
|
|
195
|
+
if (lines.length === 0) return { text: "", lineStart: 1, lineEnd: 1 };
|
|
196
|
+
let bestIndex = 0;
|
|
197
|
+
let bestScore = -1;
|
|
198
|
+
for (const [index, line] of lines.entries()) {
|
|
199
|
+
const normalized = line.toLocaleLowerCase();
|
|
200
|
+
const matchCount = queryTokens.reduce((sum, token) => sum + (normalized.includes(token) ? 1 : 0), 0);
|
|
201
|
+
const score = matchCount * 2 + (matchCount > 0 && !/^#{1,6}\s/u.test(line) ? 1 : 0);
|
|
202
|
+
if (score > bestScore) {
|
|
203
|
+
bestScore = score;
|
|
204
|
+
bestIndex = index;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
let headingIndex = bestIndex;
|
|
208
|
+
while (headingIndex > 0 && !/^#{1,6}\s/u.test(lines[headingIndex] ?? "")) headingIndex -= 1;
|
|
209
|
+
const bodyStart = Math.max(0, bestIndex - 1);
|
|
210
|
+
const endExclusive = Math.min(lines.length, bestIndex + 3);
|
|
211
|
+
const start = headingIndex < bodyStart ? headingIndex : bodyStart;
|
|
212
|
+
const selected = headingIndex < bodyStart ? [lines[headingIndex] ?? "", ...lines.slice(bodyStart, endExclusive)] : lines.slice(start, endExclusive);
|
|
213
|
+
const snippet = selected.join("\n").trim();
|
|
214
|
+
if (snippet.length <= maxChars) {
|
|
215
|
+
return { text: snippet, lineStart: start + 1, lineEnd: endExclusive };
|
|
216
|
+
}
|
|
217
|
+
const normalizedSnippet = snippet.toLocaleLowerCase();
|
|
218
|
+
const firstMatch = queryTokens.map((token) => normalizedSnippet.indexOf(token)).filter((index) => index >= 0).sort((left, right) => left - right)[0] ?? 0;
|
|
219
|
+
const windowStart = Math.max(0, Math.min(firstMatch - Math.floor(maxChars / 3), snippet.length - maxChars));
|
|
220
|
+
return {
|
|
221
|
+
text: snippet.slice(windowStart, windowStart + maxChars).trim(),
|
|
222
|
+
lineStart: start + 1,
|
|
223
|
+
lineEnd: endExclusive
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function finiteScore(score) {
|
|
227
|
+
return typeof score === "number" && Number.isFinite(score) ? Math.max(0, score) : 0;
|
|
228
|
+
}
|
|
229
|
+
function roundScore(score) {
|
|
230
|
+
return Math.round(score * 1e3) / 1e3;
|
|
231
|
+
}
|
|
232
|
+
function compareHits(left, right) {
|
|
233
|
+
if (right.score !== left.score) return right.score - left.score;
|
|
234
|
+
const wikiComparison = left.wikiId.localeCompare(right.wikiId);
|
|
235
|
+
return wikiComparison !== 0 ? wikiComparison : left.path.localeCompare(right.path);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export {
|
|
239
|
+
ExternalWikiSearchError,
|
|
240
|
+
searchExternalWikis
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=chunk-7CITSYSH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/external-wiki-search.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { CitationEntry } from \"./citations.js\";\nimport {\n type ExternalWikiCatalogEntry,\n type ExternalWikiRoot,\n loadExternalWikiCatalog,\n readExternalWikiPage,\n} from \"./external-wiki.js\";\n\nexport type { ExternalWikiRoot } from \"./external-wiki.js\";\n\nconst DEFAULT_LIMIT = 6;\nconst MAX_LIMIT = 20;\nconst DEFAULT_MAX_CHARS_PER_HIT = 1_000;\nconst MAX_CHARS_PER_HIT = 8_000;\nconst DEFAULT_MAX_CANDIDATE_FILES = 100;\nconst MAX_CANDIDATE_FILES = 100;\n\nexport interface ExternalWikiSearchInput {\n readonly query: string;\n readonly limit?: number;\n readonly wikiId?: string;\n readonly maxCharsPerHit?: number;\n}\n\ninterface ExternalWikiSnippet {\n readonly text: string;\n readonly lineStart: number;\n readonly lineEnd: number;\n}\n\nexport interface ExternalWikiSearchHit {\n readonly wikiId: string;\n readonly title: string;\n readonly path: string;\n readonly snippet: string;\n readonly score: number;\n readonly rank: number;\n readonly citations: readonly CitationEntry[];\n readonly indexBlurb?: string;\n}\n\nexport interface ExternalWikiSearchResult {\n readonly query: string;\n readonly hits: readonly ExternalWikiSearchHit[];\n readonly count: number;\n readonly degradedWikiIds: readonly string[];\n}\n\nexport interface ExternalWikiCandidate {\n readonly path: string;\n readonly score?: number;\n}\n\nexport interface ExternalWikiCandidateProvider {\n search(root: ExternalWikiRoot, query: string, limit: number): Promise<readonly ExternalWikiCandidate[]>;\n}\n\nexport interface ExternalWikiSearchOptions {\n readonly candidateProvider?: ExternalWikiCandidateProvider;\n readonly maxCandidateFiles?: number;\n}\n\nexport class ExternalWikiSearchError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ExternalWikiSearchError\";\n }\n}\n\ninterface RankedCatalogEntry {\n readonly entry: ExternalWikiCatalogEntry;\n readonly catalogScore: number;\n readonly providerScore: number;\n readonly providerRank?: number;\n}\n\ninterface UnrankedHit extends Omit<ExternalWikiSearchHit, \"rank\"> {}\n\nexport async function searchExternalWikis(\n roots: readonly ExternalWikiRoot[],\n input: ExternalWikiSearchInput,\n options: ExternalWikiSearchOptions = {}\n): Promise<ExternalWikiSearchResult> {\n const query = requireQuery(input.query);\n const limit = boundedInteger(input.limit, DEFAULT_LIMIT, 1, MAX_LIMIT, \"limit\");\n const maxCharsPerHit = boundedInteger(\n input.maxCharsPerHit,\n DEFAULT_MAX_CHARS_PER_HIT,\n 1,\n MAX_CHARS_PER_HIT,\n \"maxCharsPerHit\"\n );\n const maxCandidateFiles = boundedInteger(\n options.maxCandidateFiles,\n DEFAULT_MAX_CANDIDATE_FILES,\n 1,\n MAX_CANDIDATE_FILES,\n \"maxCandidateFiles\"\n );\n const selectedRoots = selectRoots(roots, input.wikiId);\n const queryTokens = tokenize(query);\n const degradedWikiIds = new Set<string>();\n const perRootHits = await Promise.all(\n selectedRoots.map(async (root) => {\n try {\n const catalog = await loadExternalWikiCatalog(root, { maxEntries: maxCandidateFiles });\n if (!catalog.indexPresent) degradedWikiIds.add(root.id);\n const candidates = await rankCandidates(\n root,\n catalog.entries,\n query,\n queryTokens,\n maxCandidateFiles,\n options.candidateProvider\n );\n return await readCandidateHits(root, candidates, query, queryTokens, maxCharsPerHit);\n } catch {\n degradedWikiIds.add(root.id);\n return [];\n }\n })\n );\n\n const hits = perRootHits\n .flat()\n .sort(compareHits)\n .slice(0, limit)\n .map((hit, index): ExternalWikiSearchHit => ({ ...hit, rank: index + 1 }));\n\n return {\n query,\n hits,\n count: hits.length,\n degradedWikiIds: [...degradedWikiIds].sort(),\n };\n}\n\nfunction requireQuery(value: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new ExternalWikiSearchError(\"external wiki search query is required\");\n }\n return value.trim();\n}\n\nfunction boundedInteger(\n value: number | undefined,\n fallback: number,\n minimum: number,\n maximum: number,\n field: string\n): number {\n const resolved = value ?? fallback;\n if (!Number.isInteger(resolved) || resolved < minimum || resolved > maximum) {\n throw new ExternalWikiSearchError(`${field} must be an integer from ${minimum} to ${maximum}`);\n }\n return resolved;\n}\n\nfunction selectRoots(roots: readonly ExternalWikiRoot[], wikiId: string | undefined): ExternalWikiRoot[] {\n const enabled = roots.filter((root) => root.enabled);\n if (enabled.length === 0) {\n throw new ExternalWikiSearchError(\"no enabled external wiki roots are configured\");\n }\n if (wikiId === undefined) return enabled;\n const normalizedWikiId = wikiId.trim();\n const selected = enabled.find((root) => root.id === normalizedWikiId);\n if (!selected) {\n throw new ExternalWikiSearchError(`unknown external wiki: ${normalizedWikiId || \"(empty)\"}`);\n }\n return [selected];\n}\n\nasync function rankCandidates(\n root: ExternalWikiRoot,\n entries: readonly ExternalWikiCatalogEntry[],\n query: string,\n queryTokens: readonly string[],\n maxCandidateFiles: number,\n provider: ExternalWikiCandidateProvider | undefined\n): Promise<RankedCatalogEntry[]> {\n let provided: readonly ExternalWikiCandidate[] = [];\n if (provider) {\n try {\n provided = await provider.search(root, query, maxCandidateFiles);\n } catch {\n provided = [];\n }\n }\n\n const providerByPath = new Map<string, { score: number; rank: number }>();\n for (const [index, candidate] of provided.slice(0, maxCandidateFiles).entries()) {\n if (!providerByPath.has(candidate.path)) {\n providerByPath.set(candidate.path, { score: finiteScore(candidate.score), rank: index });\n }\n }\n\n return entries\n .map((entry): RankedCatalogEntry => {\n const providerCandidate = providerByPath.get(entry.path);\n return {\n entry,\n catalogScore: scoreCatalogEntry(entry, query, queryTokens),\n providerScore: providerCandidate?.score ?? 0,\n ...(providerCandidate ? { providerRank: providerCandidate.rank } : {}),\n };\n })\n .sort((left, right) => {\n const leftProvided = left.providerRank !== undefined;\n const rightProvided = right.providerRank !== undefined;\n if (leftProvided !== rightProvided) return leftProvided ? -1 : 1;\n if (left.providerRank !== right.providerRank) {\n return (left.providerRank ?? Number.MAX_SAFE_INTEGER) - (right.providerRank ?? Number.MAX_SAFE_INTEGER);\n }\n if (right.catalogScore !== left.catalogScore) return right.catalogScore - left.catalogScore;\n return left.entry.path.localeCompare(right.entry.path);\n })\n .slice(0, maxCandidateFiles);\n}\n\nasync function readCandidateHits(\n root: ExternalWikiRoot,\n candidates: readonly RankedCatalogEntry[],\n query: string,\n queryTokens: readonly string[],\n maxCharsPerHit: number\n): Promise<UnrankedHit[]> {\n const results = await Promise.all(\n candidates.map(async (candidate): Promise<UnrankedHit | undefined> => {\n try {\n const page = await readExternalWikiPage(root, candidate.entry.path);\n const pageScore = scorePage(page.title, page.content, query, queryTokens);\n const score = candidate.catalogScore + candidate.providerScore + pageScore;\n if (score <= 0) return undefined;\n const snippet = extractSnippet(page.content, queryTokens, maxCharsPerHit);\n const rootRelativePath = path.posix.join(root.pagesDir.replaceAll(\"\\\\\", \"/\"), page.path);\n const citation: CitationEntry = {\n path: rootRelativePath,\n lineStart: snippet.lineStart,\n lineEnd: snippet.lineEnd,\n note: page.title,\n };\n return {\n wikiId: root.id,\n title: page.title,\n path: rootRelativePath,\n snippet: snippet.text,\n score: roundScore(score),\n citations: [citation],\n ...(candidate.entry.indexBlurb === undefined ? {} : { indexBlurb: candidate.entry.indexBlurb }),\n };\n } catch {\n return undefined;\n }\n })\n );\n return results.filter((result): result is UnrankedHit => result !== undefined);\n}\n\nfunction scoreCatalogEntry(entry: ExternalWikiCatalogEntry, query: string, queryTokens: readonly string[]): number {\n return (\n scoreText(entry.title, query, queryTokens, 16, 20) +\n scoreText(entry.path, query, queryTokens, 8, 8) +\n scoreText(entry.indexBlurb ?? \"\", query, queryTokens, 4, 6)\n );\n}\n\nfunction scorePage(title: string, content: string, query: string, queryTokens: readonly string[]): number {\n const titleScore = scoreText(title, query, queryTokens, 12, 16);\n const lines = content.split(/\\r?\\n/u);\n let bestLineScore = 0;\n const matchedTokens = new Set<string>();\n for (const line of lines) {\n const normalizedLine = line.toLocaleLowerCase();\n let lineScore = 0;\n for (const token of queryTokens) {\n if (!normalizedLine.includes(token)) continue;\n matchedTokens.add(token);\n lineScore += line.startsWith(\"#\") ? 6 : 3;\n }\n if (normalizedLine.includes(query.toLocaleLowerCase())) lineScore += 10;\n bestLineScore = Math.max(bestLineScore, lineScore);\n }\n return titleScore + bestLineScore + matchedTokens.size * 2;\n}\n\nfunction scoreText(\n value: string,\n query: string,\n queryTokens: readonly string[],\n tokenWeight: number,\n phraseWeight: number\n): number {\n const normalized = value.toLocaleLowerCase();\n let score = normalized.includes(query.toLocaleLowerCase()) ? phraseWeight : 0;\n for (const token of queryTokens) {\n if (normalized.includes(token)) score += tokenWeight;\n }\n return score;\n}\n\nfunction tokenize(value: string): string[] {\n const tokens = value.toLocaleLowerCase().match(/[\\p{L}\\p{N}]+/gu) ?? [];\n return [...new Set(tokens)];\n}\n\nfunction extractSnippet(content: string, queryTokens: readonly string[], maxChars: number): ExternalWikiSnippet {\n const lines = content.split(/\\r?\\n/u);\n if (lines.length === 0) return { text: \"\", lineStart: 1, lineEnd: 1 };\n let bestIndex = 0;\n let bestScore = -1;\n for (const [index, line] of lines.entries()) {\n const normalized = line.toLocaleLowerCase();\n const matchCount = queryTokens.reduce((sum, token) => sum + (normalized.includes(token) ? 1 : 0), 0);\n const score = matchCount * 2 + (matchCount > 0 && !/^#{1,6}\\s/u.test(line) ? 1 : 0);\n if (score > bestScore) {\n bestScore = score;\n bestIndex = index;\n }\n }\n\n let headingIndex = bestIndex;\n while (headingIndex > 0 && !/^#{1,6}\\s/u.test(lines[headingIndex] ?? \"\")) headingIndex -= 1;\n const bodyStart = Math.max(0, bestIndex - 1);\n const endExclusive = Math.min(lines.length, bestIndex + 3);\n const start = headingIndex < bodyStart ? headingIndex : bodyStart;\n const selected =\n headingIndex < bodyStart\n ? [lines[headingIndex] ?? \"\", ...lines.slice(bodyStart, endExclusive)]\n : lines.slice(start, endExclusive);\n const snippet = selected.join(\"\\n\").trim();\n if (snippet.length <= maxChars) {\n return { text: snippet, lineStart: start + 1, lineEnd: endExclusive };\n }\n\n const normalizedSnippet = snippet.toLocaleLowerCase();\n const firstMatch =\n queryTokens\n .map((token) => normalizedSnippet.indexOf(token))\n .filter((index) => index >= 0)\n .sort((left, right) => left - right)[0] ?? 0;\n const windowStart = Math.max(0, Math.min(firstMatch - Math.floor(maxChars / 3), snippet.length - maxChars));\n return {\n text: snippet.slice(windowStart, windowStart + maxChars).trim(),\n lineStart: start + 1,\n lineEnd: endExclusive,\n };\n}\n\nfunction finiteScore(score: number | undefined): number {\n return typeof score === \"number\" && Number.isFinite(score) ? Math.max(0, score) : 0;\n}\n\nfunction roundScore(score: number): number {\n return Math.round(score * 1_000) / 1_000;\n}\n\nfunction compareHits(left: UnrankedHit, right: UnrankedHit): number {\n if (right.score !== left.score) return right.score - left.score;\n const wikiComparison = left.wikiId.localeCompare(right.wikiId);\n return wikiComparison !== 0 ? wikiComparison : left.path.localeCompare(right.path);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
searchConversationIndex,
|
|
3
|
+
searchConversationIndexFaissFailOpen
|
|
4
|
+
} from "./chunk-A7Q43EUZ.js";
|
|
1
5
|
import {
|
|
2
6
|
failOpenFaissHealth
|
|
3
7
|
} from "./chunk-ET356KSB.js";
|
|
@@ -5,10 +9,6 @@ import {
|
|
|
5
9
|
rebuildConversationChunksFailOpen,
|
|
6
10
|
upsertConversationChunksFailOpen
|
|
7
11
|
} from "./chunk-72A4L5JJ.js";
|
|
8
|
-
import {
|
|
9
|
-
searchConversationIndex,
|
|
10
|
-
searchConversationIndexFaissFailOpen
|
|
11
|
-
} from "./chunk-A7Q43EUZ.js";
|
|
12
12
|
|
|
13
13
|
// src/conversation-index/backend.ts
|
|
14
14
|
function createConversationIndexBackend(options) {
|
|
@@ -235,4 +235,4 @@ function createFaissBackend(getFaiss) {
|
|
|
235
235
|
export {
|
|
236
236
|
createConversationIndexBackend
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=chunk-
|
|
238
|
+
//# sourceMappingURL=chunk-7RZJWZ46.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getConfiguredNamespaces
|
|
3
|
-
} from "./chunk-ULARSG5Z.js";
|
|
4
1
|
import {
|
|
5
2
|
resolveDefaultNamespaceRoot,
|
|
6
3
|
resolveNamespaceStorageRoot
|
|
7
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CLB32OHM.js";
|
|
5
|
+
import {
|
|
6
|
+
getConfiguredNamespaces
|
|
7
|
+
} from "./chunk-YN6ASZUG.js";
|
|
8
8
|
import {
|
|
9
9
|
namespaceIdentityFromToken,
|
|
10
10
|
namespaceIdentityToken,
|
|
@@ -2204,4 +2204,4 @@ export {
|
|
|
2204
2204
|
runNamespaceMaintenancePlan,
|
|
2205
2205
|
runNamespaceMaintenanceBatchPlan
|
|
2206
2206
|
};
|
|
2207
|
-
//# sourceMappingURL=chunk-
|
|
2207
|
+
//# sourceMappingURL=chunk-7SHJHPTY.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
readNamespaceMaintenanceLastRanStatuses,
|
|
4
4
|
readNamespaceMaintenanceStatuses,
|
|
5
5
|
runNamespaceMaintenancePlan
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7SHJHPTY.js";
|
|
7
7
|
import {
|
|
8
8
|
analyzeSessionIntegrity,
|
|
9
9
|
applySessionRepair,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-CMTINOFS.js";
|
|
15
15
|
import {
|
|
16
16
|
summarizeCorpusAndReplica
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-2MRHJNWL.js";
|
|
18
18
|
import {
|
|
19
19
|
readJudgeVerdictStats
|
|
20
20
|
} from "./chunk-OZKOPQCM.js";
|
|
@@ -25,49 +25,45 @@ import {
|
|
|
25
25
|
runEvalBenchmarkCiGate,
|
|
26
26
|
validateEvalBenchmarkPack
|
|
27
27
|
} from "./chunk-3PY7VHV7.js";
|
|
28
|
+
import {
|
|
29
|
+
runConsolidationProvenanceCheck
|
|
30
|
+
} from "./chunk-HAYSYUAB.js";
|
|
28
31
|
import {
|
|
29
32
|
resolveCuratedIncludeFilesStatePath,
|
|
30
33
|
resolveNativeKnowledgeStatePath,
|
|
31
34
|
resolveOpenClawWorkspaceStatePath
|
|
32
35
|
} from "./chunk-2DQ2XREU.js";
|
|
33
|
-
import {
|
|
34
|
-
runConsolidationProvenanceCheck
|
|
35
|
-
} from "./chunk-TSH56VPU.js";
|
|
36
36
|
import {
|
|
37
37
|
reportBufferSurpriseDistribution
|
|
38
38
|
} from "./chunk-YBPYIAA5.js";
|
|
39
39
|
import {
|
|
40
40
|
parseConfig
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-AUMWZSE7.js";
|
|
42
42
|
import {
|
|
43
43
|
readAggregateExtractionWatermark
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-EJHEWCGQ.js";
|
|
45
45
|
import {
|
|
46
46
|
listMemoryGovernanceRuns,
|
|
47
47
|
readMemoryGovernanceRunArtifact
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-EITZHSX6.js";
|
|
49
49
|
import {
|
|
50
50
|
listNamespaces
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-C26TE27X.js";
|
|
52
52
|
import {
|
|
53
53
|
analyzeGraphHealth
|
|
54
54
|
} from "./chunk-L2DPF4DF.js";
|
|
55
55
|
import {
|
|
56
56
|
StorageManager
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-FZP32336.js";
|
|
58
58
|
import {
|
|
59
59
|
lintWorkspaceFiles
|
|
60
60
|
} from "./chunk-DM2T26WE.js";
|
|
61
|
-
import {
|
|
62
|
-
probeProjectionHealth
|
|
63
|
-
} from "./chunk-3CSX3ETE.js";
|
|
64
61
|
import {
|
|
65
62
|
summarizeExtractionLiveness
|
|
66
63
|
} from "./chunk-3SG4FGDV.js";
|
|
67
64
|
import {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
} from "./chunk-JUC24CTX.js";
|
|
65
|
+
probeProjectionHealth
|
|
66
|
+
} from "./chunk-3CSX3ETE.js";
|
|
71
67
|
import {
|
|
72
68
|
resolveAccessSetupCapabilities,
|
|
73
69
|
resolveCapabilities,
|
|
@@ -79,6 +75,10 @@ import {
|
|
|
79
75
|
resolvePresentationCapabilities,
|
|
80
76
|
resolveQmdCapabilities
|
|
81
77
|
} from "./chunk-2XRE6FLM.js";
|
|
78
|
+
import {
|
|
79
|
+
readEnvVar,
|
|
80
|
+
resolveHomeDir
|
|
81
|
+
} from "./chunk-JUC24CTX.js";
|
|
82
82
|
|
|
83
83
|
// src/operator-toolkit.ts
|
|
84
84
|
import path from "path";
|
|
@@ -1683,4 +1683,4 @@ export {
|
|
|
1683
1683
|
runBenchmarkRecall,
|
|
1684
1684
|
runOperatorRepair
|
|
1685
1685
|
};
|
|
1686
|
-
//# sourceMappingURL=chunk-
|
|
1686
|
+
//# sourceMappingURL=chunk-7YERSTN7.js.map
|
|
@@ -3,8 +3,9 @@ import {
|
|
|
3
3
|
} from "./chunk-IJ7HK452.js";
|
|
4
4
|
import {
|
|
5
5
|
pathMayCarryEntityRefs,
|
|
6
|
-
requestEntityCanonicalIdReconcile
|
|
7
|
-
|
|
6
|
+
requestEntityCanonicalIdReconcile,
|
|
7
|
+
withRawEntityPageMutation
|
|
8
|
+
} from "./chunk-NZBZ7IS2.js";
|
|
8
9
|
import {
|
|
9
10
|
ALL_CATEGORY_DIRS,
|
|
10
11
|
RECALL_FALLBACK_DIRS
|
|
@@ -170,10 +171,11 @@ async function revertToVersion(pagePath, versionId, config, log = NOOP_LOGGER, m
|
|
|
170
171
|
`reverted to version ${versionId}`,
|
|
171
172
|
resolvedMemoryDir
|
|
172
173
|
);
|
|
173
|
-
await
|
|
174
|
+
await withRawEntityPageMutation(resolvedMemoryDir, pagePath, async () => {
|
|
175
|
+
await writeFile(pagePath, targetContent, "utf-8");
|
|
176
|
+
});
|
|
174
177
|
const revertedTop = relPath(pagePath, resolvedMemoryDir).split(path.sep)[0];
|
|
175
|
-
|
|
176
|
-
if (inRecallTier) {
|
|
178
|
+
if (RECALL_FALLBACK_DIRS.includes(revertedTop)) {
|
|
177
179
|
bumpMemoryCorpusVersionForDir(resolvedMemoryDir);
|
|
178
180
|
}
|
|
179
181
|
if (pathMayCarryEntityRefs(resolvedMemoryDir, pagePath)) {
|
|
@@ -279,4 +281,4 @@ export {
|
|
|
279
281
|
revertToVersion,
|
|
280
282
|
diffVersions
|
|
281
283
|
};
|
|
282
|
-
//# sourceMappingURL=chunk-
|
|
284
|
+
//# sourceMappingURL=chunk-7YKVM5H3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/page-versioning.ts"],"sourcesContent":["/**\n * Page-level versioning with history and revert (issue #371).\n *\n * Provides snapshot-based versioning for memory files using a sidecar\n * directory layout. Each memory page gets a `.versions/<pageName>/`\n * subdirectory containing numbered snapshots and a `manifest.json` that\n * records the version history.\n *\n * Storage layout:\n * memoryDir/\n * facts/preferences.md <- current file\n * .versions/\n * facts__preferences/\n * manifest.json <- VersionHistory\n * 1.md <- version 1 snapshot\n * 2.md <- version 2 snapshot\n */\n\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport {\n access,\n mkdir,\n readFile,\n writeFile,\n unlink,\n} from \"node:fs/promises\";\nimport { ALL_CATEGORY_DIRS, RECALL_FALLBACK_DIRS } from \"./utils/category-dir.js\";\nimport { bumpMemoryCorpusVersionForDir } from \"./memory-corpus-version.js\";\nimport {\n pathMayCarryEntityRefs,\n requestEntityCanonicalIdReconcile,\n} from \"./storage/entity-canonical-id-references.js\";\nimport { withRawEntityPageMutation } from \"./storage/entity-canonical-id-lock.js\";\n\n// ---------------------------------------------------------------------------\n// Public interfaces\n// ---------------------------------------------------------------------------\n\nexport interface PageVersion {\n versionId: string;\n timestamp: string;\n contentHash: string;\n sizeBytes: number;\n trigger: VersionTrigger;\n note?: string;\n}\n\nexport type VersionTrigger = \"write\" | \"consolidation\" | \"revert\" | \"manual\";\n\nexport interface VersionHistory {\n pagePath: string;\n versions: PageVersion[];\n currentVersion: string;\n}\n\nexport interface VersioningConfig {\n enabled: boolean;\n maxVersionsPerPage: number;\n sidecarDir: string;\n}\n\n// ---------------------------------------------------------------------------\n// Logger interface (minimal, avoids coupling to the host logger)\n// ---------------------------------------------------------------------------\n\nexport interface VersioningLogger {\n debug(msg: string): void;\n warn(msg: string): void;\n}\n\nconst NOOP_LOGGER: VersioningLogger = {\n debug: () => {},\n warn: () => {},\n};\n\n// ---------------------------------------------------------------------------\n// Per-page write lock (promise-chain pattern, see gotcha #40)\n// ---------------------------------------------------------------------------\n\nconst writeLocks = new Map<string, Promise<void>>();\n\nfunction withPageLock<T>(pageKey: string, fn: () => Promise<T>): Promise<T> {\n const prev = writeLocks.get(pageKey) ?? Promise.resolve();\n const next = prev.then(fn, fn); // run fn after previous completes, even if previous failed\n writeLocks.set(pageKey, next.then(() => {}, () => {})); // recover chain per gotcha #40\n return next;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\nfunction contentHash(content: string): string {\n return createHash(\"sha256\").update(content, \"utf-8\").digest(\"hex\");\n}\n\n/**\n * Derive a filesystem-safe sidecar key from a page path relative to memoryDir.\n *\n * `facts/2026-01-15/pref-001.md` -> `facts__2026-01-15__pref-001`\n *\n * Exported so the `remnic doctor` consolidation-provenance check (issue\n * #561 PR 4) resolves snapshot locations using the canonical algorithm\n * without re-implementing it — preventing silent drift if the key\n * format ever changes.\n */\nexport function sidecarKey(pagePath: string): string {\n const withoutExt = pagePath.replace(/\\.md$/i, \"\");\n return withoutExt.replace(/[\\\\/]/g, \"__\");\n}\n\nfunction sidecarDir(memoryDir: string, sidecar: string, pagePath: string): string {\n return path.join(memoryDir, sidecar, sidecarKey(pagePath));\n}\n\nfunction manifestPath(memoryDir: string, sidecar: string, pagePath: string): string {\n return path.join(sidecarDir(memoryDir, sidecar, pagePath), \"manifest.json\");\n}\n\nasync function fileExists(p: string): Promise<boolean> {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function readManifest(\n memoryDir: string,\n sidecar: string,\n pagePath: string,\n): Promise<VersionHistory> {\n const mp = manifestPath(memoryDir, sidecar, pagePath);\n if (!(await fileExists(mp))) {\n return { pagePath, versions: [], currentVersion: \"0\" };\n }\n try {\n const raw = await readFile(mp, \"utf-8\");\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== \"object\" || parsed === null) {\n throw new Error(\"manifest root must be an object\");\n }\n const obj = parsed as Record<string, unknown>;\n if (!Array.isArray(obj.versions)) {\n throw new Error(\"manifest versions must be an array\");\n }\n const versions = obj.versions.map((entry, index) => {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(`manifest version ${index} must be an object`);\n }\n const version = entry as Record<string, unknown>;\n if (\n typeof version.versionId !== \"string\" ||\n !/^\\d+$/.test(version.versionId) ||\n typeof version.timestamp !== \"string\" ||\n typeof version.contentHash !== \"string\" ||\n typeof version.sizeBytes !== \"number\" ||\n !Number.isFinite(version.sizeBytes) ||\n ![\"write\", \"consolidation\", \"revert\", \"manual\"].includes(String(version.trigger))\n ) {\n throw new Error(`manifest version ${index} has invalid shape`);\n }\n return version as unknown as PageVersion;\n });\n if (typeof obj.currentVersion !== \"string\" || !/^\\d+$/.test(obj.currentVersion)) {\n throw new Error(\"manifest currentVersion must be a numeric string\");\n }\n const currentVersion = obj.currentVersion;\n return { pagePath: typeof obj.pagePath === \"string\" ? obj.pagePath : pagePath, versions, currentVersion };\n } catch (error) {\n throw new Error(`page-versioning: invalid manifest ${mp}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nasync function writeManifest(\n memoryDir: string,\n sidecar: string,\n pagePath: string,\n history: VersionHistory,\n): Promise<void> {\n const dir = sidecarDir(memoryDir, sidecar, pagePath);\n await mkdir(dir, { recursive: true });\n const mp = manifestPath(memoryDir, sidecar, pagePath);\n await writeFile(mp, JSON.stringify(history, null, 2) + \"\\n\", \"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Create a new version snapshot for a page.\n *\n * Call this BEFORE overwriting the current file so the previous content is\n * preserved. If the file does not exist yet (first write), the provided\n * `content` is snapshotted as version 1.\n *\n * Pruning: when the number of versions exceeds `config.maxVersionsPerPage`,\n * the oldest snapshots (and their files) are removed.\n */\nexport async function createVersion(\n pagePath: string,\n content: string,\n trigger: VersionTrigger,\n config: VersioningConfig,\n log: VersioningLogger = NOOP_LOGGER,\n note?: string,\n memoryDir?: string,\n): Promise<PageVersion> {\n const { sidecarDir: sidecar, maxVersionsPerPage } = config;\n const resolvedMemoryDir = memoryDir ?? resolveMemoryDir(pagePath);\n const mPath = manifestPath(resolvedMemoryDir, sidecar, relPath(pagePath, resolvedMemoryDir));\n\n return withPageLock(mPath, async () => {\n const history = await readManifest(resolvedMemoryDir, sidecar, relPath(pagePath, resolvedMemoryDir));\n const nextId = String(history.versions.length > 0\n ? Math.max(...history.versions.map((v) => Number(v.versionId))) + 1\n : 1);\n\n const hash = contentHash(content);\n const version: PageVersion = {\n versionId: nextId,\n timestamp: new Date().toISOString(),\n contentHash: hash,\n sizeBytes: Buffer.byteLength(content, \"utf-8\"),\n trigger,\n ...(note !== undefined ? { note } : {}),\n };\n\n // Write snapshot file\n const dir = sidecarDir(resolvedMemoryDir, sidecar, relPath(pagePath, resolvedMemoryDir));\n await mkdir(dir, { recursive: true });\n const ext = path.extname(pagePath) || \".md\";\n const snapshotPath = path.join(dir, `${nextId}${ext}`);\n await writeFile(snapshotPath, content, \"utf-8\");\n\n history.versions.push(version);\n history.currentVersion = nextId;\n\n // Prune old versions if exceeding max\n if (maxVersionsPerPage > 0 && history.versions.length > maxVersionsPerPage) {\n const toRemove = history.versions.splice(0, history.versions.length - maxVersionsPerPage);\n for (const old of toRemove) {\n const oldPath = path.join(dir, `${old.versionId}${ext}`);\n try {\n await unlink(oldPath);\n } catch {\n log.debug(`page-versioning: could not remove old snapshot ${oldPath}`);\n }\n }\n }\n\n await writeManifest(resolvedMemoryDir, sidecar, relPath(pagePath, resolvedMemoryDir), history);\n log.debug(`page-versioning: created version ${nextId} for ${pagePath} (trigger=${trigger})`);\n\n return version;\n });\n}\n\n/**\n * List all versions for a page.\n */\nexport async function listVersions(\n pagePath: string,\n config: VersioningConfig,\n memoryDir?: string,\n): Promise<VersionHistory> {\n const resolvedMemoryDir = memoryDir ?? resolveMemoryDir(pagePath);\n const rel = relPath(pagePath, resolvedMemoryDir);\n const history = await readManifest(resolvedMemoryDir, config.sidecarDir, rel);\n // Sort ascending by versionId (numeric)\n history.versions.sort((a, b) => Number(a.versionId) - Number(b.versionId));\n return history;\n}\n\n/**\n * Read the content of a specific version.\n */\nexport async function getVersion(\n pagePath: string,\n versionId: string,\n config: VersioningConfig,\n memoryDir?: string,\n): Promise<string> {\n const resolvedMemoryDir = memoryDir ?? resolveMemoryDir(pagePath);\n const rel = relPath(pagePath, resolvedMemoryDir);\n const ext = path.extname(pagePath) || \".md\";\n const dir = sidecarDir(resolvedMemoryDir, config.sidecarDir, rel);\n const snapshotPath = path.join(dir, `${versionId}${ext}`);\n\n if (!(await fileExists(snapshotPath))) {\n throw new Error(`Version ${versionId} not found for ${pagePath}`);\n }\n\n return readFile(snapshotPath, \"utf-8\");\n}\n\n/**\n * Revert a page to a previous version.\n *\n * 1. Reads the target version's content.\n * 2. Snapshots the CURRENT content as a new version (trigger: \"revert\").\n * 3. Writes the reverted content to the page file.\n *\n * Returns the newly created version entry for the revert snapshot.\n */\nexport async function revertToVersion(\n pagePath: string,\n versionId: string,\n config: VersioningConfig,\n log: VersioningLogger = NOOP_LOGGER,\n memoryDir?: string,\n): Promise<PageVersion> {\n const resolvedMemoryDir = memoryDir ?? resolveMemoryDir(pagePath);\n\n // Read target version content\n const targetContent = await getVersion(pagePath, versionId, config, resolvedMemoryDir);\n\n // Snapshot current content before overwriting\n let currentContent = \"\";\n try {\n currentContent = await readFile(pagePath, \"utf-8\");\n } catch {\n // File may not exist; that's okay\n }\n\n const version = await createVersion(\n pagePath,\n currentContent,\n \"revert\",\n config,\n log,\n `reverted to version ${versionId}`,\n resolvedMemoryDir,\n );\n\n await withRawEntityPageMutation(resolvedMemoryDir, pagePath, async () => {\n await writeFile(pagePath, targetContent, \"utf-8\");\n });\n const revertedTop = relPath(pagePath, resolvedMemoryDir).split(path.sep)[0];\n if ((RECALL_FALLBACK_DIRS as readonly string[]).includes(revertedTop)) {\n bumpMemoryCorpusVersionForDir(resolvedMemoryDir);\n }\n if (pathMayCarryEntityRefs(resolvedMemoryDir, pagePath)) {\n await requestEntityCanonicalIdReconcile(path.join(resolvedMemoryDir, \"state\"));\n }\n log.debug(`page-versioning: reverted ${pagePath} to version ${versionId}`);\n\n return version;\n}\n\n/**\n * Simple line-based diff between two versions.\n *\n * Returns a unified-style diff string showing added (+) and removed (-) lines.\n */\nexport async function diffVersions(\n pagePath: string,\n v1: string,\n v2: string,\n config: VersioningConfig,\n memoryDir?: string,\n): Promise<string> {\n const resolvedMemoryDir = memoryDir ?? resolveMemoryDir(pagePath);\n const content1 = await getVersion(pagePath, v1, config, resolvedMemoryDir);\n const content2 = await getVersion(pagePath, v2, config, resolvedMemoryDir);\n\n const lines1 = content1.split(\"\\n\");\n const lines2 = content2.split(\"\\n\");\n\n const result: string[] = [];\n result.push(`--- version ${v1}`);\n result.push(`+++ version ${v2}`);\n\n // Simple LCS-based diff\n const lcs = computeLCS(lines1, lines2);\n let i = 0;\n let j = 0;\n let k = 0;\n\n while (k < lcs.length) {\n // Emit removed lines before the next common line\n while (i < lines1.length && lines1[i] !== lcs[k]) {\n result.push(`-${lines1[i]}`);\n i++;\n }\n // Emit added lines before the next common line\n while (j < lines2.length && lines2[j] !== lcs[k]) {\n result.push(`+${lines2[j]}`);\n j++;\n }\n // Common line\n result.push(` ${lcs[k]}`);\n i++;\n j++;\n k++;\n }\n // Remaining removed lines\n while (i < lines1.length) {\n result.push(`-${lines1[i]}`);\n i++;\n }\n // Remaining added lines\n while (j < lines2.length) {\n result.push(`+${lines2[j]}`);\n j++;\n }\n\n return result.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// LCS helper for diffVersions\n// ---------------------------------------------------------------------------\n\nfunction computeLCS(a: string[], b: string[]): string[] {\n const m = a.length;\n const n = b.length;\n // Build DP table\n const dp: number[][] = Array.from({ length: m + 1 }, () => new Array<number>(n + 1).fill(0));\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n if (a[i - 1] === b[j - 1]) {\n dp[i][j] = dp[i - 1][j - 1] + 1;\n } else {\n dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);\n }\n }\n }\n // Backtrack to build LCS\n const result: string[] = [];\n let i = m;\n let j = n;\n while (i > 0 && j > 0) {\n if (a[i - 1] === b[j - 1]) {\n result.unshift(a[i - 1]);\n i--;\n j--;\n } else if (dp[i - 1][j] > dp[i][j - 1]) {\n i--;\n } else {\n j--;\n }\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Path helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Legacy fallback: given an absolute page path, heuristically resolve the\n * memory directory by walking up past known subdirectory names.\n *\n * Callers should always pass an explicit `memoryDir` instead of relying on\n * this heuristic. It is retained only for backward compatibility when the\n * optional `memoryDir` parameter is omitted.\n */\nfunction resolveMemoryDir(pagePath: string): string {\n // Derive the recall category dirs from ALL_CATEGORY_DIRS (single source of\n // truth) so newly-routed categories (decisions/, preferences/, ...) are\n // recognized when walking up to the memory root (#1546); the non-category\n // subdirs are listed explicitly.\n const knownSubdirs = new Set<string>([\n ...ALL_CATEGORY_DIRS,\n \"entities\",\n \"state\",\n \"artifacts\",\n \"profiles\",\n ]);\n\n let dir = path.dirname(pagePath);\n // Walk up past date directories (YYYY-MM-DD) and known subdirs\n for (let depth = 0; depth < 5; depth++) {\n const base = path.basename(dir);\n if (knownSubdirs.has(base) || /^\\d{4}-\\d{2}-\\d{2}$/.test(base)) {\n dir = path.dirname(dir);\n } else {\n break;\n }\n }\n return dir;\n}\n\n/**\n * Compute relative path of a page within its memory directory.\n */\nfunction relPath(pagePath: string, memoryDir: string): string {\n return path.relative(memoryDir, pagePath);\n}\n"],"mappings":"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","names":["i","j"]}
|