@remnic/core 10.0.3 → 10.0.5
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 +62 -62
- package/dist/access-authorization-probe.js +63 -63
- package/dist/access-boundary.js +62 -62
- package/dist/access-cli.d.ts.map +1 -1
- package/dist/access-cli.js +146 -139
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +62 -62
- package/dist/access-http-briefing.js +63 -63
- package/dist/access-http-query.js +64 -64
- package/dist/access-http.d.ts.map +1 -1
- package/dist/access-http.js +86 -85
- package/dist/access-identity-continuity-surface.js +62 -62
- package/dist/access-lcm-surface.js +62 -62
- package/dist/access-mcp-correction-tools.d.ts +10 -0
- package/dist/access-mcp-correction-tools.d.ts.map +1 -0
- package/dist/access-mcp-correction-tools.js +8 -0
- package/dist/access-mcp.d.ts.map +1 -1
- package/dist/access-mcp.js +76 -75
- package/dist/access-namespace-preflight.js +62 -62
- package/dist/access-observe-write-category.js +5 -5
- package/dist/access-observe-write-surface.js +62 -62
- package/dist/access-offline-manifest.js +8 -8
- package/dist/access-operations-batch.js +65 -65
- package/dist/access-operations.d.ts +1 -0
- package/dist/access-operations.d.ts.map +1 -1
- package/dist/access-operations.js +72 -72
- package/dist/access-recall-concurrency.js +62 -62
- package/dist/access-recall-diagnostics.js +2 -2
- package/dist/access-recall-response.js +62 -62
- package/dist/access-recall-surface.js +62 -62
- package/dist/access-service.d.ts.map +1 -1
- package/dist/access-service.js +62 -62
- package/dist/access-surface-catalog.js +64 -64
- package/dist/active-recall.js +31 -30
- 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-PAWBFQWL.js → auto-sync-FN7E3OTO.js} +6 -6
- package/dist/briefing.js +26 -26
- package/dist/buffer.js +8 -8
- package/dist/causal-consolidation.js +26 -26
- package/dist/{chunk-YQSWNFZE.js → chunk-2CP577K6.js} +2 -2
- package/dist/{chunk-6JIHC5AS.js → chunk-37HCPM56.js} +78 -67
- package/dist/chunk-37HCPM56.js.map +1 -0
- package/dist/{chunk-345MEMRU.js → chunk-3OUGSOJP.js} +2 -2
- package/dist/{chunk-CHI37EHP.js → chunk-4CWUZBPF.js} +8 -6
- package/dist/chunk-4CWUZBPF.js.map +1 -0
- package/dist/{chunk-G2STTRYB.js → chunk-4D2YH47Z.js} +2 -2
- package/dist/{chunk-IXYIW3MZ.js → chunk-4K2H4KTR.js} +5 -5
- package/dist/{chunk-UVVSOSHL.js → chunk-52CQKST6.js} +53 -53
- package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
- package/dist/{chunk-BLHPADUX.js → chunk-5BPXMAUP.js} +22 -78
- package/dist/chunk-5BPXMAUP.js.map +1 -0
- package/dist/{chunk-ZS7RK6H6.js → chunk-5BY3IA2U.js} +16 -53
- package/dist/chunk-5BY3IA2U.js.map +1 -0
- package/dist/{chunk-2QZFZNXO.js → chunk-5CQO6LVM.js} +2 -2
- package/dist/{chunk-NLDMTXWV.js → chunk-5LNPW7NE.js} +2 -2
- package/dist/{chunk-WHTMVTU4.js → chunk-5X4ZJESN.js} +2 -2
- package/dist/{chunk-WI37MWRZ.js → chunk-63UNVGZW.js} +5 -5
- package/dist/{chunk-G3T6YMBO.js → chunk-64S6X4IU.js} +7 -7
- package/dist/{chunk-CFCEJNOE.js → chunk-6KHF6PAB.js} +2 -2
- package/dist/{chunk-5GINB5LC.js → chunk-6MKLMEBE.js} +1 -1
- package/dist/{chunk-5GINB5LC.js.map → chunk-6MKLMEBE.js.map} +1 -1
- package/dist/{chunk-35A7GCHG.js → chunk-6T42L5FI.js} +2 -2
- package/dist/{chunk-JDOBIFBK.js → chunk-7CXL25AA.js} +2 -2
- package/dist/{chunk-YLBE6PLR.js → chunk-7IGMKQWK.js} +2 -2
- package/dist/{chunk-CSLK7BN6.js → chunk-7LYRFI5A.js} +2 -2
- package/dist/{chunk-IB63OVUB.js → chunk-AJ6ORARY.js} +6 -6
- package/dist/{chunk-CGOKNQDK.js → chunk-ANZXWOYD.js} +2 -2
- package/dist/{chunk-5QXMESS7.js → chunk-AXC7UTLM.js} +2 -2
- package/dist/{chunk-RFIJRZ4K.js → chunk-B657ZGDH.js} +2 -2
- package/dist/{chunk-AW4QUFQF.js → chunk-BTNNL7ZW.js} +3 -2
- package/dist/{chunk-AW4QUFQF.js.map → chunk-BTNNL7ZW.js.map} +1 -1
- package/dist/{chunk-MY7B3HYC.js → chunk-CLCMDKTB.js} +2 -2
- package/dist/{chunk-QPWUG2S3.js → chunk-CYEK6Z3P.js} +4 -4
- package/dist/{chunk-IHCYCE6D.js → chunk-DJMVSUPK.js} +4 -4
- package/dist/{chunk-HP4CU2ZA.js → chunk-DST7HRSG.js} +2 -2
- package/dist/{chunk-IIFFC3RL.js → chunk-EDR6CVWZ.js} +2 -2
- package/dist/{chunk-AUWMKDKL.js → chunk-EMVJU7WC.js} +2 -2
- package/dist/{chunk-O6AYMAPJ.js → chunk-ENNC3RZ6.js} +2 -2
- package/dist/{chunk-2JRB3Z5N.js → chunk-EP5WXE2G.js} +3 -3
- package/dist/{chunk-QLK3SL7Q.js → chunk-ETSJD5IV.js} +131 -12
- package/dist/chunk-ETSJD5IV.js.map +1 -0
- package/dist/chunk-EWMRFW3F.js +38 -0
- package/dist/chunk-EWMRFW3F.js.map +1 -0
- package/dist/{chunk-I2KEH2LS.js → chunk-FC6RCOIU.js} +2 -2
- package/dist/{chunk-OZVHLBH6.js → chunk-FLV7M7CT.js} +2 -2
- package/dist/{chunk-Q6GI7HEC.js → chunk-FRH2UC7Q.js} +2 -2
- package/dist/{chunk-3SL52JKD.js → chunk-FZVROZKC.js} +5 -5
- package/dist/{chunk-2EZB2DL5.js → chunk-GE6HETIF.js} +3 -3
- package/dist/{chunk-2DHJTJIY.js → chunk-GEGUBU3D.js} +2 -2
- package/dist/{chunk-6AA7XFMO.js → chunk-GF4H3B3R.js} +8 -8
- package/dist/{chunk-NGOZH7R5.js → chunk-GVUW5XK5.js} +311 -142
- package/dist/chunk-GVUW5XK5.js.map +1 -0
- package/dist/{chunk-ME2LMFHF.js → chunk-HPAOMYKM.js} +92 -92
- package/dist/{chunk-4NRZ7BRS.js → chunk-I25RINZK.js} +2 -2
- package/dist/{chunk-XG4XXI66.js → chunk-I25RQA65.js} +2 -2
- package/dist/chunk-I56MTWE7.js +80 -0
- package/dist/chunk-I56MTWE7.js.map +1 -0
- package/dist/{chunk-EJJMDLVB.js → chunk-IJ4FEGZR.js} +2 -2
- package/dist/{chunk-EUL3S3LE.js → chunk-J5WI4QRP.js} +4 -4
- package/dist/{chunk-LMMC55WM.js → chunk-JA54KIYD.js} +4 -4
- package/dist/{chunk-5FLFPTDK.js → chunk-JA72X46J.js} +2 -2
- package/dist/{chunk-6GU3TNJJ.js → chunk-JMF5Q4JY.js} +246 -49
- package/dist/chunk-JMF5Q4JY.js.map +1 -0
- package/dist/{chunk-IDSSDL4W.js → chunk-JXSYWTFK.js} +21 -4
- package/dist/{chunk-IDSSDL4W.js.map → chunk-JXSYWTFK.js.map} +1 -1
- package/dist/{chunk-NLYOOGZ7.js → chunk-KE5PWLI6.js} +3 -3
- package/dist/chunk-KIUVEMBI.js +49 -0
- package/dist/chunk-KIUVEMBI.js.map +1 -0
- package/dist/{chunk-4DDIWRT7.js → chunk-KQI2PKYP.js} +2 -2
- package/dist/{chunk-Y2ADLCB3.js → chunk-KSUOM3YU.js} +9 -9
- package/dist/{chunk-BTOHGPHC.js → chunk-KZEMFD6E.js} +3 -3
- package/dist/{chunk-NXVD46HT.js → chunk-L2VS27PZ.js} +4 -4
- package/dist/{chunk-MYYHACOW.js → chunk-L34W4W4I.js} +2 -2
- package/dist/{chunk-KRTIHXWC.js → chunk-L3PWXD73.js} +2 -2
- package/dist/{chunk-NQHSXHJP.js → chunk-L6GNS5GB.js} +2 -2
- package/dist/{chunk-44PBRUXB.js → chunk-M47Q6566.js} +2 -2
- package/dist/{chunk-E7FN5N5E.js → chunk-MQNOIH2C.js} +7 -7
- package/dist/{chunk-IDSZNHIP.js → chunk-MULNBSPP.js} +4 -4
- package/dist/{chunk-RKSGUMVL.js → chunk-NBQIFCJE.js} +2 -2
- package/dist/{chunk-I6WFBNA4.js → chunk-NHSVW7UT.js} +15 -15
- package/dist/{chunk-32HO62I4.js → chunk-OFEHITAZ.js} +2 -2
- package/dist/{chunk-PCO3P7WJ.js → chunk-OGVJXIHX.js} +2 -2
- package/dist/{chunk-RYN4AIRM.js → chunk-OZABSIOV.js} +4 -4
- package/dist/{chunk-HO7IQP7G.js → chunk-QMFKW4OU.js} +3 -3
- package/dist/{chunk-34G4U6HS.js → chunk-QRZMJ2WN.js} +2 -2
- package/dist/{chunk-RKDSELA3.js → chunk-QWWMS4AE.js} +1 -1
- package/dist/chunk-QWWMS4AE.js.map +1 -0
- package/dist/{chunk-GUD6FYQG.js → chunk-RSMIRLKM.js} +2 -2
- package/dist/{chunk-TNVZCLJU.js → chunk-S5TGRZWY.js} +2 -2
- package/dist/{chunk-O24EWFPQ.js → chunk-SNXBXYUE.js} +3 -3
- package/dist/{chunk-KW77LGDX.js → chunk-SUAX5JWY.js} +2 -2
- package/dist/{chunk-PNFWIB4X.js → chunk-SWRN6U7Q.js} +2 -2
- package/dist/{chunk-X6X4UASX.js → chunk-SZXPKUMN.js} +232 -83
- package/dist/chunk-SZXPKUMN.js.map +1 -0
- package/dist/{chunk-R4NGLTUS.js → chunk-TDMNADPI.js} +2 -2
- package/dist/{chunk-QCP75JGO.js → chunk-TFA6HPOA.js} +5 -5
- package/dist/{chunk-LI76ESJL.js → chunk-TZQOCQXB.js} +2 -2
- package/dist/{chunk-OV7EYM6M.js → chunk-U6OXJQEH.js} +12 -12
- package/dist/{chunk-OWHPA4JS.js → chunk-V32NHP2R.js} +2 -2
- package/dist/{chunk-JSUA4YFE.js → chunk-WG4TMZJ2.js} +2 -2
- package/dist/{chunk-DQTCGVFK.js → chunk-WHCD4Z3D.js} +2 -2
- package/dist/{chunk-GBA4N2SG.js → chunk-WRICYGYG.js} +27 -26
- package/dist/chunk-WRICYGYG.js.map +1 -0
- package/dist/{chunk-KATEWTQJ.js → chunk-X7J56GPG.js} +2 -2
- package/dist/{chunk-7KICGR5W.js → chunk-XPRAOTJY.js} +2 -2
- package/dist/{chunk-2NV7MMMM.js → chunk-XQSJXNWC.js} +2 -2
- package/dist/{chunk-22DYJLFN.js → chunk-XVC7JU2N.js} +39 -18
- package/dist/chunk-XVC7JU2N.js.map +1 -0
- package/dist/{chunk-RXT6UB25.js → chunk-YJAOYEWI.js} +2 -2
- package/dist/{chunk-L6DJJEFW.js → chunk-YJEUHGZZ.js} +2 -2
- package/dist/{chunk-AXFWMRKI.js → chunk-YQJCWR4R.js} +2 -2
- package/dist/cli.js +110 -108
- package/dist/coding/export-okf-codegraph.js +25 -25
- package/dist/compounding/engine.js +25 -25
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -30
- package/dist/connectors/codex-materialize-runner.js +25 -25
- package/dist/connectors/index.js +25 -25
- package/dist/consolidation-provenance-check.js +2 -2
- package/dist/contradiction/index.js +7 -7
- package/dist/convergence-refresh.js +27 -27
- package/dist/conversation-index/backend.js +2 -2
- package/dist/corpus-read-cancellation.d.ts +7 -0
- package/dist/corpus-read-cancellation.d.ts.map +1 -1
- package/dist/corpus-read-cancellation.js +1 -1
- package/dist/corpus-watermark.js +27 -27
- package/dist/correction/correction-access-wiring.d.ts +6 -6
- package/dist/correction/correction-access-wiring.d.ts.map +1 -1
- package/dist/correction/correction-classify.d.ts +25 -0
- package/dist/correction/correction-classify.d.ts.map +1 -0
- package/dist/correction/correction-config.d.ts +11 -0
- package/dist/correction/correction-config.d.ts.map +1 -0
- package/dist/correction/correction-contract.d.ts +13 -1
- package/dist/correction/correction-contract.d.ts.map +1 -1
- package/dist/correction/correction-executor.d.ts +2 -0
- package/dist/correction/correction-executor.d.ts.map +1 -1
- package/dist/correction/correction-planner.d.ts +24 -3
- package/dist/correction/correction-planner.d.ts.map +1 -1
- package/dist/directory-sidecars.js +2 -2
- package/dist/entity-retrieval.js +25 -25
- package/dist/event-order-recall.js +2 -2
- package/dist/explicit-capture.js +2 -2
- package/dist/external-wiki-access.js +63 -63
- package/dist/extraction-span-materialize.js +2 -2
- package/dist/extraction.js +34 -34
- package/dist/harmonic-retrieval.js +25 -25
- package/dist/index.js +221 -218
- package/dist/lcm/index.js +3 -3
- package/dist/local-llm.d.ts.map +1 -1
- package/dist/local-llm.js +1 -1
- package/dist/location/index.js +28 -28
- package/dist/maintenance/archive-observations.js +2 -2
- package/dist/maintenance/atomic-file.d.ts +1 -1
- package/dist/maintenance/atomic-file.d.ts.map +1 -1
- package/dist/maintenance/atomic-file.js +1 -1
- package/dist/maintenance/memory-governance.js +25 -25
- package/dist/maintenance/migrate-observations.js +3 -3
- package/dist/maintenance/observation-ledger-utils.js +2 -2
- package/dist/maintenance/projection-rebuild-abort.d.ts +17 -0
- package/dist/maintenance/projection-rebuild-abort.d.ts.map +1 -0
- package/dist/maintenance/projection-timeline.d.ts +19 -0
- package/dist/maintenance/projection-timeline.d.ts.map +1 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -25
- package/dist/maintenance/rebuild-memory-projection-runner.d.ts +8 -0
- package/dist/maintenance/rebuild-memory-projection-runner.d.ts.map +1 -0
- package/dist/maintenance/rebuild-memory-projection-runner.js +113 -0
- package/dist/maintenance/rebuild-memory-projection-runner.js.map +1 -0
- package/dist/maintenance/rebuild-memory-projection.d.ts +8 -0
- package/dist/maintenance/rebuild-memory-projection.d.ts.map +1 -1
- package/dist/maintenance/rebuild-memory-projection.js +26 -26
- package/dist/maintenance/rebuild-observations.js +3 -3
- package/dist/memory-browse-operations.js +63 -63
- package/dist/memory-browse.js +7 -7
- package/dist/memory-subject.js +1 -1
- package/dist/namespaces/migrate.js +26 -26
- package/dist/namespaces/search.js +10 -10
- package/dist/namespaces/storage.js +25 -25
- package/dist/offline-sync-impression-drain.js +3 -3
- package/dist/operator-doctor-corpus.js +28 -28
- package/dist/operator-toolkit.js +41 -40
- package/dist/orchestration/full-corpus-heap-guard.d.ts +25 -0
- package/dist/orchestration/full-corpus-heap-guard.d.ts.map +1 -0
- package/dist/orchestration/maintenance.d.ts.map +1 -1
- package/dist/orchestration/maintenance.js +38 -36
- package/dist/orchestration/projection-rebuild-schedule.d.ts +40 -0
- package/dist/orchestration/projection-rebuild-schedule.d.ts.map +1 -1
- package/dist/orchestration/session-context.d.ts.map +1 -1
- package/dist/orchestrator.js +142 -139
- package/dist/projection-rebuild-config.d.ts +52 -0
- package/dist/projection-rebuild-config.d.ts.map +1 -0
- package/dist/projection-rebuild-config.js +14 -0
- package/dist/projection-rebuild-config.js.map +1 -0
- package/dist/qmd.js +4 -4
- 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 +63 -63
- package/dist/recall-navigation.js +62 -62
- package/dist/recall-state-view-admission.js +7 -7
- package/dist/recall-state.js +2 -2
- package/dist/recall-why-service.js +8 -8
- 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/reconcile/manifest.js +3 -3
- package/dist/relevance.js +2 -2
- package/dist/{resolution-RSG4HZTL.js → resolution-TV3F7ZTH.js} +7 -7
- package/dist/resolution-TV3F7ZTH.js.map +1 -0
- package/dist/resume-bundles.js +32 -31
- package/dist/salvage-envelope.js +1 -1
- package/dist/search/factory.js +9 -9
- package/dist/search/index.js +17 -17
- package/dist/semantic-consolidation.js +31 -31
- package/dist/semantic-rule-promotion.js +25 -25
- package/dist/semantic-rule-verifier.js +25 -25
- package/dist/source-agent-qualifier.js +29 -29
- package/dist/standup/build.js +25 -25
- package/dist/storage/memory-lifecycle-ledger-access.d.ts +5 -3
- package/dist/storage/memory-lifecycle-ledger-access.d.ts.map +1 -1
- package/dist/storage/memory-read-store.d.ts +2 -2
- package/dist/storage/memory-read-store.d.ts.map +1 -1
- package/dist/storage.d.ts +4 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +24 -24
- package/dist/subject-config.js +1 -1
- package/dist/summarizer.js +3 -3
- package/dist/support-passport/index.js +78 -78
- package/dist/transfer/export-okf.js +26 -26
- package/dist/types.d.ts +8 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +25 -25
- package/dist/who-knows-cli.js +26 -26
- package/dist/who-knows.js +25 -25
- package/dist/write-envelope.js +1 -1
- package/package.json +2 -2
- package/src/access-cli.ts +4 -0
- package/src/access-http.ts +1 -0
- package/src/access-mcp-correction-tools.ts +56 -0
- package/src/access-mcp.ts +4 -49
- package/src/access-operations.ts +3 -0
- package/src/access-service.ts +12 -21
- package/src/config.test.ts +35 -0
- package/src/config.ts +6 -65
- package/src/corpus-read-cancellation.ts +7 -0
- package/src/correction/correction-access-wiring.ts +56 -16
- package/src/correction/correction-classify.test.ts +185 -0
- package/src/correction/correction-classify.ts +157 -0
- package/src/correction/correction-config.ts +93 -0
- package/src/correction/correction-contract.ts +61 -14
- package/src/correction/correction-executor.test.ts +102 -2
- package/src/correction/correction-executor.ts +19 -1
- package/src/correction/correction-planner.test.ts +141 -0
- package/src/correction/correction-planner.ts +117 -11
- package/src/correction/correction-surfaces.test.ts +22 -1
- package/src/local-llm-qos.test.ts +36 -0
- package/src/local-llm.ts +20 -3
- package/src/maintenance/atomic-file.ts +2 -0
- package/src/maintenance/projection-rebuild-abort.ts +40 -0
- package/src/maintenance/projection-timeline.ts +209 -0
- package/src/maintenance/rebuild-memory-projection-runner.ts +94 -0
- package/src/maintenance/rebuild-memory-projection.memory.test.ts +159 -0
- package/src/maintenance/rebuild-memory-projection.retain-raw.test.ts +202 -0
- package/src/maintenance/rebuild-memory-projection.ts +63 -91
- package/src/orchestration/full-corpus-heap-guard.ts +38 -0
- package/src/orchestration/maintenance.test.ts +2 -2
- package/src/orchestration/maintenance.ts +2 -0
- package/src/orchestration/projection-rebuild-schedule.test.ts +498 -0
- package/src/orchestration/projection-rebuild-schedule.ts +280 -9
- package/src/orchestration/session-context.ts +0 -15
- package/src/projection-rebuild-config.ts +82 -0
- package/src/recall-handles-wiring.test.ts +24 -0
- package/src/storage/memory-lifecycle-ledger-access.ts +61 -33
- package/src/storage/memory-read-store.ts +10 -4
- package/src/storage.ts +45 -33
- package/src/types.ts +8 -41
- package/dist/chunk-22DYJLFN.js.map +0 -1
- package/dist/chunk-6GU3TNJJ.js.map +0 -1
- package/dist/chunk-6JIHC5AS.js.map +0 -1
- package/dist/chunk-BLHPADUX.js.map +0 -1
- package/dist/chunk-CHI37EHP.js.map +0 -1
- package/dist/chunk-GBA4N2SG.js.map +0 -1
- package/dist/chunk-NGOZH7R5.js.map +0 -1
- package/dist/chunk-QLK3SL7Q.js.map +0 -1
- package/dist/chunk-RKDSELA3.js.map +0 -1
- package/dist/chunk-X6X4UASX.js.map +0 -1
- package/dist/chunk-ZS7RK6H6.js.map +0 -1
- /package/dist/{resolution-RSG4HZTL.js.map → access-mcp-correction-tools.js.map} +0 -0
- /package/dist/{auto-sync-PAWBFQWL.js.map → auto-sync-FN7E3OTO.js.map} +0 -0
- /package/dist/{chunk-YQSWNFZE.js.map → chunk-2CP577K6.js.map} +0 -0
- /package/dist/{chunk-345MEMRU.js.map → chunk-3OUGSOJP.js.map} +0 -0
- /package/dist/{chunk-G2STTRYB.js.map → chunk-4D2YH47Z.js.map} +0 -0
- /package/dist/{chunk-IXYIW3MZ.js.map → chunk-4K2H4KTR.js.map} +0 -0
- /package/dist/{chunk-UVVSOSHL.js.map → chunk-52CQKST6.js.map} +0 -0
- /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
- /package/dist/{chunk-2QZFZNXO.js.map → chunk-5CQO6LVM.js.map} +0 -0
- /package/dist/{chunk-NLDMTXWV.js.map → chunk-5LNPW7NE.js.map} +0 -0
- /package/dist/{chunk-WHTMVTU4.js.map → chunk-5X4ZJESN.js.map} +0 -0
- /package/dist/{chunk-WI37MWRZ.js.map → chunk-63UNVGZW.js.map} +0 -0
- /package/dist/{chunk-G3T6YMBO.js.map → chunk-64S6X4IU.js.map} +0 -0
- /package/dist/{chunk-CFCEJNOE.js.map → chunk-6KHF6PAB.js.map} +0 -0
- /package/dist/{chunk-35A7GCHG.js.map → chunk-6T42L5FI.js.map} +0 -0
- /package/dist/{chunk-JDOBIFBK.js.map → chunk-7CXL25AA.js.map} +0 -0
- /package/dist/{chunk-YLBE6PLR.js.map → chunk-7IGMKQWK.js.map} +0 -0
- /package/dist/{chunk-CSLK7BN6.js.map → chunk-7LYRFI5A.js.map} +0 -0
- /package/dist/{chunk-IB63OVUB.js.map → chunk-AJ6ORARY.js.map} +0 -0
- /package/dist/{chunk-CGOKNQDK.js.map → chunk-ANZXWOYD.js.map} +0 -0
- /package/dist/{chunk-5QXMESS7.js.map → chunk-AXC7UTLM.js.map} +0 -0
- /package/dist/{chunk-RFIJRZ4K.js.map → chunk-B657ZGDH.js.map} +0 -0
- /package/dist/{chunk-MY7B3HYC.js.map → chunk-CLCMDKTB.js.map} +0 -0
- /package/dist/{chunk-QPWUG2S3.js.map → chunk-CYEK6Z3P.js.map} +0 -0
- /package/dist/{chunk-IHCYCE6D.js.map → chunk-DJMVSUPK.js.map} +0 -0
- /package/dist/{chunk-HP4CU2ZA.js.map → chunk-DST7HRSG.js.map} +0 -0
- /package/dist/{chunk-IIFFC3RL.js.map → chunk-EDR6CVWZ.js.map} +0 -0
- /package/dist/{chunk-AUWMKDKL.js.map → chunk-EMVJU7WC.js.map} +0 -0
- /package/dist/{chunk-O6AYMAPJ.js.map → chunk-ENNC3RZ6.js.map} +0 -0
- /package/dist/{chunk-2JRB3Z5N.js.map → chunk-EP5WXE2G.js.map} +0 -0
- /package/dist/{chunk-I2KEH2LS.js.map → chunk-FC6RCOIU.js.map} +0 -0
- /package/dist/{chunk-OZVHLBH6.js.map → chunk-FLV7M7CT.js.map} +0 -0
- /package/dist/{chunk-Q6GI7HEC.js.map → chunk-FRH2UC7Q.js.map} +0 -0
- /package/dist/{chunk-3SL52JKD.js.map → chunk-FZVROZKC.js.map} +0 -0
- /package/dist/{chunk-2EZB2DL5.js.map → chunk-GE6HETIF.js.map} +0 -0
- /package/dist/{chunk-2DHJTJIY.js.map → chunk-GEGUBU3D.js.map} +0 -0
- /package/dist/{chunk-6AA7XFMO.js.map → chunk-GF4H3B3R.js.map} +0 -0
- /package/dist/{chunk-ME2LMFHF.js.map → chunk-HPAOMYKM.js.map} +0 -0
- /package/dist/{chunk-4NRZ7BRS.js.map → chunk-I25RINZK.js.map} +0 -0
- /package/dist/{chunk-XG4XXI66.js.map → chunk-I25RQA65.js.map} +0 -0
- /package/dist/{chunk-EJJMDLVB.js.map → chunk-IJ4FEGZR.js.map} +0 -0
- /package/dist/{chunk-EUL3S3LE.js.map → chunk-J5WI4QRP.js.map} +0 -0
- /package/dist/{chunk-LMMC55WM.js.map → chunk-JA54KIYD.js.map} +0 -0
- /package/dist/{chunk-5FLFPTDK.js.map → chunk-JA72X46J.js.map} +0 -0
- /package/dist/{chunk-NLYOOGZ7.js.map → chunk-KE5PWLI6.js.map} +0 -0
- /package/dist/{chunk-4DDIWRT7.js.map → chunk-KQI2PKYP.js.map} +0 -0
- /package/dist/{chunk-Y2ADLCB3.js.map → chunk-KSUOM3YU.js.map} +0 -0
- /package/dist/{chunk-BTOHGPHC.js.map → chunk-KZEMFD6E.js.map} +0 -0
- /package/dist/{chunk-NXVD46HT.js.map → chunk-L2VS27PZ.js.map} +0 -0
- /package/dist/{chunk-MYYHACOW.js.map → chunk-L34W4W4I.js.map} +0 -0
- /package/dist/{chunk-KRTIHXWC.js.map → chunk-L3PWXD73.js.map} +0 -0
- /package/dist/{chunk-NQHSXHJP.js.map → chunk-L6GNS5GB.js.map} +0 -0
- /package/dist/{chunk-44PBRUXB.js.map → chunk-M47Q6566.js.map} +0 -0
- /package/dist/{chunk-E7FN5N5E.js.map → chunk-MQNOIH2C.js.map} +0 -0
- /package/dist/{chunk-IDSZNHIP.js.map → chunk-MULNBSPP.js.map} +0 -0
- /package/dist/{chunk-RKSGUMVL.js.map → chunk-NBQIFCJE.js.map} +0 -0
- /package/dist/{chunk-I6WFBNA4.js.map → chunk-NHSVW7UT.js.map} +0 -0
- /package/dist/{chunk-32HO62I4.js.map → chunk-OFEHITAZ.js.map} +0 -0
- /package/dist/{chunk-PCO3P7WJ.js.map → chunk-OGVJXIHX.js.map} +0 -0
- /package/dist/{chunk-RYN4AIRM.js.map → chunk-OZABSIOV.js.map} +0 -0
- /package/dist/{chunk-HO7IQP7G.js.map → chunk-QMFKW4OU.js.map} +0 -0
- /package/dist/{chunk-34G4U6HS.js.map → chunk-QRZMJ2WN.js.map} +0 -0
- /package/dist/{chunk-GUD6FYQG.js.map → chunk-RSMIRLKM.js.map} +0 -0
- /package/dist/{chunk-TNVZCLJU.js.map → chunk-S5TGRZWY.js.map} +0 -0
- /package/dist/{chunk-O24EWFPQ.js.map → chunk-SNXBXYUE.js.map} +0 -0
- /package/dist/{chunk-KW77LGDX.js.map → chunk-SUAX5JWY.js.map} +0 -0
- /package/dist/{chunk-PNFWIB4X.js.map → chunk-SWRN6U7Q.js.map} +0 -0
- /package/dist/{chunk-R4NGLTUS.js.map → chunk-TDMNADPI.js.map} +0 -0
- /package/dist/{chunk-QCP75JGO.js.map → chunk-TFA6HPOA.js.map} +0 -0
- /package/dist/{chunk-LI76ESJL.js.map → chunk-TZQOCQXB.js.map} +0 -0
- /package/dist/{chunk-OV7EYM6M.js.map → chunk-U6OXJQEH.js.map} +0 -0
- /package/dist/{chunk-OWHPA4JS.js.map → chunk-V32NHP2R.js.map} +0 -0
- /package/dist/{chunk-JSUA4YFE.js.map → chunk-WG4TMZJ2.js.map} +0 -0
- /package/dist/{chunk-DQTCGVFK.js.map → chunk-WHCD4Z3D.js.map} +0 -0
- /package/dist/{chunk-KATEWTQJ.js.map → chunk-X7J56GPG.js.map} +0 -0
- /package/dist/{chunk-7KICGR5W.js.map → chunk-XPRAOTJY.js.map} +0 -0
- /package/dist/{chunk-2NV7MMMM.js.map → chunk-XQSJXNWC.js.map} +0 -0
- /package/dist/{chunk-RXT6UB25.js.map → chunk-YJAOYEWI.js.map} +0 -0
- /package/dist/{chunk-L6DJJEFW.js.map → chunk-YJEUHGZZ.js.map} +0 -0
- /package/dist/{chunk-AXFWMRKI.js.map → chunk-YQJCWR4R.js.map} +0 -0
package/dist/who-knows.js
CHANGED
|
@@ -9,29 +9,29 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-UHVXE24Y.js";
|
|
12
|
+
} from "./chunk-XQSJXNWC.js";
|
|
13
|
+
import "./chunk-37HCPM56.js";
|
|
15
14
|
import "./chunk-46WM6JX2.js";
|
|
15
|
+
import "./chunk-UHVXE24Y.js";
|
|
16
16
|
import "./chunk-V4JZCTMK.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-S7LWX2PQ.js";
|
|
20
|
-
import "./chunk-T2YX56QI.js";
|
|
21
|
-
import "./chunk-CYEPCZN5.js";
|
|
17
|
+
import "./chunk-RSMIRLKM.js";
|
|
18
|
+
import "./chunk-U6OXJQEH.js";
|
|
22
19
|
import "./chunk-T3FMRLWQ.js";
|
|
23
20
|
import "./chunk-7VO6E5UD.js";
|
|
24
|
-
import "./chunk-4O6WRBGE.js";
|
|
25
21
|
import "./chunk-5BUCKFRE.js";
|
|
22
|
+
import "./chunk-S7LWX2PQ.js";
|
|
23
|
+
import "./chunk-T2YX56QI.js";
|
|
24
|
+
import "./chunk-4O6WRBGE.js";
|
|
26
25
|
import "./chunk-GUMZC2BO.js";
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-CYEPCZN5.js";
|
|
27
|
+
import "./chunk-TFA6HPOA.js";
|
|
29
28
|
import "./chunk-F4TWWUMP.js";
|
|
30
29
|
import "./chunk-72A4L5JJ.js";
|
|
30
|
+
import "./chunk-A7Q43EUZ.js";
|
|
31
31
|
import "./chunk-S2V7RUCL.js";
|
|
32
32
|
import "./chunk-X3724WL4.js";
|
|
33
|
-
import "./chunk-S2HLHAZ4.js";
|
|
34
33
|
import "./chunk-MRPOZBJC.js";
|
|
34
|
+
import "./chunk-S2HLHAZ4.js";
|
|
35
35
|
import "./chunk-DM2T26WE.js";
|
|
36
36
|
import "./chunk-LDXUBPMO.js";
|
|
37
37
|
import "./chunk-FF6N7BXC.js";
|
|
@@ -39,13 +39,12 @@ import "./chunk-2DT7PIDZ.js";
|
|
|
39
39
|
import "./chunk-AAD2ZS6P.js";
|
|
40
40
|
import "./chunk-EIFYYHAF.js";
|
|
41
41
|
import "./chunk-ZIKENA2C.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-3OUGSOJP.js";
|
|
43
43
|
import "./chunk-SCU65EZI.js";
|
|
44
44
|
import "./chunk-3ONXXHQO.js";
|
|
45
45
|
import "./chunk-YXZG5TVN.js";
|
|
46
|
-
import "./chunk-5GINB5LC.js";
|
|
47
46
|
import "./chunk-3WU7XOFN.js";
|
|
48
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-6MKLMEBE.js";
|
|
49
48
|
import "./chunk-W5XWHTDO.js";
|
|
50
49
|
import "./chunk-M5GVCJSJ.js";
|
|
51
50
|
import "./chunk-RBOJCG4T.js";
|
|
@@ -53,12 +52,13 @@ import "./chunk-R7QY5ZVB.js";
|
|
|
53
52
|
import "./chunk-5WITETWU.js";
|
|
54
53
|
import "./chunk-6CIAGZ6X.js";
|
|
55
54
|
import "./chunk-7CT3AI52.js";
|
|
56
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-G7D6GZ5J.js";
|
|
56
|
+
import "./chunk-AJ6ORARY.js";
|
|
57
|
+
import "./chunk-IUM3VSHI.js";
|
|
57
58
|
import "./chunk-G26YNEOC.js";
|
|
58
59
|
import "./chunk-IM2GO42H.js";
|
|
59
60
|
import "./chunk-TPSLVZHS.js";
|
|
60
61
|
import "./chunk-SIGAGKNE.js";
|
|
61
|
-
import "./chunk-IUM3VSHI.js";
|
|
62
62
|
import "./chunk-23G5P7TA.js";
|
|
63
63
|
import "./chunk-C64XATK7.js";
|
|
64
64
|
import "./chunk-42JKGUFJ.js";
|
|
@@ -68,12 +68,14 @@ import "./chunk-L2EXJQJP.js";
|
|
|
68
68
|
import "./chunk-45GF7Y3V.js";
|
|
69
69
|
import "./chunk-EP6BA7VV.js";
|
|
70
70
|
import "./chunk-E2AWJ7KQ.js";
|
|
71
|
+
import "./chunk-Z7L72ZHL.js";
|
|
72
|
+
import "./chunk-4O4TKIXQ.js";
|
|
71
73
|
import "./chunk-YCVB7X56.js";
|
|
72
74
|
import "./chunk-PQVCH2AE.js";
|
|
73
75
|
import "./chunk-PJKTFXE2.js";
|
|
74
76
|
import "./chunk-W5BIQOAJ.js";
|
|
75
|
-
import "./chunk-
|
|
76
|
-
import "./chunk-
|
|
77
|
+
import "./chunk-QWWMS4AE.js";
|
|
78
|
+
import "./chunk-YBA52OKG.js";
|
|
77
79
|
import "./chunk-5AYUHSAU.js";
|
|
78
80
|
import "./chunk-BT7NVCML.js";
|
|
79
81
|
import "./chunk-PO7NXNGC.js";
|
|
@@ -81,22 +83,20 @@ import "./chunk-BJMBJZ2Y.js";
|
|
|
81
83
|
import "./chunk-UKJAGEXH.js";
|
|
82
84
|
import "./chunk-FP2373TW.js";
|
|
83
85
|
import "./chunk-L272A5QW.js";
|
|
84
|
-
import "./chunk-
|
|
86
|
+
import "./chunk-XVC7JU2N.js";
|
|
85
87
|
import "./chunk-ZA53AZND.js";
|
|
86
88
|
import "./chunk-7RJUVTVF.js";
|
|
87
89
|
import "./chunk-AL3UYZ5N.js";
|
|
88
90
|
import "./chunk-RL6NEVXT.js";
|
|
91
|
+
import "./chunk-PWPIERBM.js";
|
|
89
92
|
import "./chunk-C7HJ3NEI.js";
|
|
90
93
|
import "./chunk-N4PYB235.js";
|
|
91
|
-
import "./chunk-
|
|
94
|
+
import "./chunk-BTNNL7ZW.js";
|
|
92
95
|
import "./chunk-5FVVY2EB.js";
|
|
93
|
-
import "./chunk-FFAZ2XFU.js";
|
|
94
|
-
import "./chunk-RKDSELA3.js";
|
|
95
|
-
import "./chunk-YBA52OKG.js";
|
|
96
|
-
import "./chunk-PWPIERBM.js";
|
|
97
96
|
import "./chunk-JDSVLVCG.js";
|
|
98
97
|
import "./chunk-5GKPFL3S.js";
|
|
99
98
|
import "./chunk-JAKIDQB2.js";
|
|
99
|
+
import "./chunk-FFAZ2XFU.js";
|
|
100
100
|
import "./chunk-P7FMDTKL.js";
|
|
101
101
|
import "./chunk-VUFL7X3H.js";
|
|
102
102
|
import "./chunk-2EMROIXS.js";
|
package/dist/write-envelope.js
CHANGED
|
@@ -17,10 +17,10 @@ import "./chunk-BT7NVCML.js";
|
|
|
17
17
|
import "./chunk-PO7NXNGC.js";
|
|
18
18
|
import "./chunk-N4PYB235.js";
|
|
19
19
|
import "./chunk-5FVVY2EB.js";
|
|
20
|
-
import "./chunk-FFAZ2XFU.js";
|
|
21
20
|
import "./chunk-JDSVLVCG.js";
|
|
22
21
|
import "./chunk-5GKPFL3S.js";
|
|
23
22
|
import "./chunk-JAKIDQB2.js";
|
|
23
|
+
import "./chunk-FFAZ2XFU.js";
|
|
24
24
|
import "./chunk-P7FMDTKL.js";
|
|
25
25
|
import "./chunk-MAAL6OZV.js";
|
|
26
26
|
import "./chunk-A6XUJE5D.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.5",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3327,7 +3327,7 @@
|
|
|
3327
3327
|
"core"
|
|
3328
3328
|
],
|
|
3329
3329
|
"peerDependencies": {
|
|
3330
|
-
"@remnic/coding-graph": "^10.0.
|
|
3330
|
+
"@remnic/coding-graph": "^10.0.5"
|
|
3331
3331
|
},
|
|
3332
3332
|
"peerDependenciesMeta": {
|
|
3333
3333
|
"@remnic/coding-graph": {
|
package/src/access-cli.ts
CHANGED
|
@@ -207,6 +207,7 @@ function usage(): string {
|
|
|
207
207
|
"Correct options (issue #1580 — one plan/apply pipeline for all corrections):",
|
|
208
208
|
" --text \"<correction>\" plan a correction from natural language",
|
|
209
209
|
" --id <memoryId> (repeatable) explicit target memory ids",
|
|
210
|
+
" --duplicate-of <memoryId> winner id; requires exactly one --id (skips the classifier)",
|
|
210
211
|
" --apply apply a pending plan (requires --plan-id + --confirm)",
|
|
211
212
|
" --plan-id <id> the plan to apply or discard",
|
|
212
213
|
" --confirm confirm the apply (safety guard, rule 48)",
|
|
@@ -297,6 +298,7 @@ const COMMAND_SPECS: Record<CommandName, CommandSpec> = {
|
|
|
297
298
|
valueOptions: new Set([
|
|
298
299
|
"text",
|
|
299
300
|
"id",
|
|
301
|
+
"duplicate-of",
|
|
300
302
|
"plan-id",
|
|
301
303
|
"namespace",
|
|
302
304
|
"session-key",
|
|
@@ -830,6 +832,7 @@ async function runCorrect(args: ParsedArgs, preferredId?: string): Promise<void>
|
|
|
830
832
|
// so schema validation + namespace policy reach this path (same as MCP/HTTP).
|
|
831
833
|
const text = requireOption(args, "text");
|
|
832
834
|
const targetIds = getAllOptions(args, "id");
|
|
835
|
+
const duplicateOf = getLastOption(args, "duplicate-of");
|
|
833
836
|
const planOp = getOperation("memory_correct_plan");
|
|
834
837
|
if (!planOp) {
|
|
835
838
|
throw new Error("access-boundary: operation not registered: memory_correct_plan");
|
|
@@ -838,6 +841,7 @@ async function runCorrect(args: ParsedArgs, preferredId?: string): Promise<void>
|
|
|
838
841
|
{
|
|
839
842
|
text,
|
|
840
843
|
...(targetIds.length > 0 ? { targetIds } : {}),
|
|
844
|
+
...(duplicateOf ? { duplicateOf } : {}),
|
|
841
845
|
...(sessionKey ? { sessionKey } : {}),
|
|
842
846
|
...(namespace ? { namespace } : {}),
|
|
843
847
|
},
|
package/src/access-http.ts
CHANGED
|
@@ -1999,6 +1999,7 @@ export class EngramAccessHttpServer extends ReviewDeckAccessHttpBase {
|
|
|
1999
1999
|
const output = (await op.run(this.gatedBodyNamespace(req, body), {
|
|
2000
2000
|
service: this.service,
|
|
2001
2001
|
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
2002
|
+
...(abortSignal ? { abortSignal } : {}),
|
|
2002
2003
|
})) as { result: unknown };
|
|
2003
2004
|
this.recordWriteRateLimitHit(req);
|
|
2004
2005
|
this.respondJson(res, 200, output.result);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Correction MCP tool descriptors.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from access-mcp.ts (over its fileSizeGrandfather ceiling) so
|
|
5
|
+
* `duplicateOf` can land without growing that file. Aliases are applied by
|
|
6
|
+
* the caller via withToolAliases.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpTool } from "./access-mcp.js";
|
|
9
|
+
|
|
10
|
+
export const correctionMcpTools: McpTool[] = [
|
|
11
|
+
{
|
|
12
|
+
name: "engram.memory_correct_plan",
|
|
13
|
+
description:
|
|
14
|
+
"Plan a memory correction from a plain-language statement. Returns a CorrectionPlan with a diff preview; apply via memory_correct_apply. Pass duplicateOf plus one targetIds entry to supersede that duplicate without calling the classifier.",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
text: {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: 'The natural-language correction (e.g. "we migrated to MySQL in March").',
|
|
21
|
+
},
|
|
22
|
+
targetIds: {
|
|
23
|
+
type: "array",
|
|
24
|
+
items: { type: "string" },
|
|
25
|
+
description:
|
|
26
|
+
"Optional explicit target memory ids. When omitted, the planner searches. With duplicateOf, pass exactly the duplicate id.",
|
|
27
|
+
},
|
|
28
|
+
duplicateOf: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description:
|
|
31
|
+
"Optional winner memory id. Requires targetIds to be exactly the duplicate. Skips classification and drafts one recoverable supersede (no hard delete) linking the duplicate to this id.",
|
|
32
|
+
},
|
|
33
|
+
sessionKey: { type: "string", description: "Session identifier for namespace resolution." },
|
|
34
|
+
namespace: { type: "string", description: "Optional explicit namespace (validated by policy)." },
|
|
35
|
+
},
|
|
36
|
+
required: ["text"],
|
|
37
|
+
additionalProperties: false,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "engram.memory_correct_apply",
|
|
42
|
+
description:
|
|
43
|
+
"Apply a planned memory correction by planId. Requires confirm: true when correction.applyRequiresConfirm is on (default).",
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: {
|
|
47
|
+
planId: { type: "string", description: "The plan id returned by memory_correct_plan." },
|
|
48
|
+
confirm: { type: "boolean", description: "Must be true to apply (safety guard)." },
|
|
49
|
+
sessionKey: { type: "string", description: "Session identifier for namespace resolution." },
|
|
50
|
+
namespace: { type: "string", description: "Optional explicit namespace (validated by policy)." },
|
|
51
|
+
},
|
|
52
|
+
required: ["planId"],
|
|
53
|
+
additionalProperties: false,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
];
|
package/src/access-mcp.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sharedContextMcpTools } from "./access-mcp-shared-context-tools.js";
|
|
2
|
+
import { correctionMcpTools } from "./access-mcp-correction-tools.js";
|
|
2
3
|
import { randomUUID } from "node:crypto";
|
|
3
4
|
import {
|
|
4
5
|
MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
|
|
@@ -2133,56 +2134,10 @@ export class EngramMcpServer {
|
|
|
2133
2134
|
this.tools = [...this.tools, ...deltaTools];
|
|
2134
2135
|
}
|
|
2135
2136
|
if (this.correctionVisible) {
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
// (memory_correct_plan / memory_correct_apply) which delegate to the
|
|
2139
|
-
// CorrectionService.
|
|
2140
|
-
const planTool = withToolAliases(
|
|
2141
|
-
{
|
|
2142
|
-
name: "engram.memory_correct_plan",
|
|
2143
|
-
description:
|
|
2144
|
-
"Plan a memory correction from a plain-language statement (issue #1580). Returns a CorrectionPlan with a diff preview; apply via memory_correct_apply.",
|
|
2145
|
-
inputSchema: {
|
|
2146
|
-
type: "object",
|
|
2147
|
-
properties: {
|
|
2148
|
-
text: {
|
|
2149
|
-
type: "string",
|
|
2150
|
-
description: 'The natural-language correction (e.g. "we migrated to MySQL in March").',
|
|
2151
|
-
},
|
|
2152
|
-
targetIds: {
|
|
2153
|
-
type: "array",
|
|
2154
|
-
items: { type: "string" },
|
|
2155
|
-
description: "Optional explicit target memory ids. When omitted, the planner searches.",
|
|
2156
|
-
},
|
|
2157
|
-
sessionKey: { type: "string", description: "Session identifier for namespace resolution." },
|
|
2158
|
-
namespace: { type: "string", description: "Optional explicit namespace (validated by policy)." },
|
|
2159
|
-
},
|
|
2160
|
-
required: ["text"],
|
|
2161
|
-
additionalProperties: false,
|
|
2162
|
-
},
|
|
2163
|
-
},
|
|
2164
|
-
this.emitLegacyTools
|
|
2165
|
-
);
|
|
2166
|
-
const applyTool = withToolAliases(
|
|
2167
|
-
{
|
|
2168
|
-
name: "engram.memory_correct_apply",
|
|
2169
|
-
description:
|
|
2170
|
-
"Apply a planned memory correction by planId (issue #1580). Requires confirm: true when correction.applyRequiresConfirm is on (default).",
|
|
2171
|
-
inputSchema: {
|
|
2172
|
-
type: "object",
|
|
2173
|
-
properties: {
|
|
2174
|
-
planId: { type: "string", description: "The plan id returned by memory_correct_plan." },
|
|
2175
|
-
confirm: { type: "boolean", description: "Must be true to apply (safety guard, rule 48)." },
|
|
2176
|
-
sessionKey: { type: "string", description: "Session identifier for namespace resolution." },
|
|
2177
|
-
namespace: { type: "string", description: "Optional explicit namespace (validated by policy)." },
|
|
2178
|
-
},
|
|
2179
|
-
required: ["planId"],
|
|
2180
|
-
additionalProperties: false,
|
|
2181
|
-
},
|
|
2182
|
-
},
|
|
2183
|
-
this.emitLegacyTools
|
|
2137
|
+
const correctionTools = correctionMcpTools.flatMap((tool) =>
|
|
2138
|
+
withToolAliases(tool, this.emitLegacyTools),
|
|
2184
2139
|
);
|
|
2185
|
-
this.tools = [...this.tools, ...
|
|
2140
|
+
this.tools = [...this.tools, ...correctionTools];
|
|
2186
2141
|
}
|
|
2187
2142
|
if (this.chatVisible) {
|
|
2188
2143
|
const chatTools = withToolAliases(
|
package/src/access-operations.ts
CHANGED
|
@@ -384,6 +384,7 @@ const memoryCorrectPlanSchema = z.preprocess(
|
|
|
384
384
|
z.object({
|
|
385
385
|
text: z.string().trim().min(1).max(10_000),
|
|
386
386
|
targetIds: z.array(z.string().trim().min(1).max(512)).optional(),
|
|
387
|
+
duplicateOf: z.string().trim().min(1).max(512).optional(),
|
|
387
388
|
sessionKey: z.string().trim().max(512).optional(),
|
|
388
389
|
namespace: z.string().trim().max(256).optional(),
|
|
389
390
|
}),
|
|
@@ -392,6 +393,7 @@ const memoryCorrectPlanSchema = z.preprocess(
|
|
|
392
393
|
export interface MemoryCorrectPlanInput {
|
|
393
394
|
text: string;
|
|
394
395
|
targetIds?: string[];
|
|
396
|
+
duplicateOf?: string;
|
|
395
397
|
sessionKey?: string;
|
|
396
398
|
namespace?: string;
|
|
397
399
|
}
|
|
@@ -414,6 +416,7 @@ export const memoryCorrectPlanOperation = defineOperation<
|
|
|
414
416
|
{
|
|
415
417
|
text: input.text,
|
|
416
418
|
...(input.targetIds ? { targetIds: input.targetIds } : {}),
|
|
419
|
+
...(input.duplicateOf ? { duplicateOf: input.duplicateOf } : {}),
|
|
417
420
|
...(input.sessionKey ? { sessionKey: input.sessionKey } : {}),
|
|
418
421
|
...(input.namespace ? { namespace: input.namespace } : {}),
|
|
419
422
|
...(ctx.authenticatedPrincipal ? { principal: ctx.authenticatedPrincipal } : {}),
|
package/src/access-service.ts
CHANGED
|
@@ -3349,24 +3349,6 @@ export class EngramAccessService extends SupportPassportAccessServiceBase {
|
|
|
3349
3349
|
return Promise.resolve(false);
|
|
3350
3350
|
}
|
|
3351
3351
|
},
|
|
3352
|
-
// Wire the orchestrator's extraction LLM so classify+draft actually
|
|
3353
|
-
// drafts actions instead of always hitting the deterministic fallback
|
|
3354
|
-
// (review thread PG5). The planner's classifyAndDraft already falls back
|
|
3355
|
-
// on any LLM outage, so returning null (LLM disabled/cooldown) or a
|
|
3356
|
-
// thrown error both degrade safely to the deterministic path (rule 13).
|
|
3357
|
-
llmComplete: async ({ system, user }) => {
|
|
3358
|
-
const result = await this.orchestrator.localLlm.chatCompletion(
|
|
3359
|
-
[
|
|
3360
|
-
{ role: "system", content: system },
|
|
3361
|
-
{ role: "user", content: user },
|
|
3362
|
-
],
|
|
3363
|
-
{ operation: "correction-classify", priority: "background" }
|
|
3364
|
-
);
|
|
3365
|
-
if (!result) {
|
|
3366
|
-
throw new Error("correction classify+draft: local LLM unavailable (disabled or in cooldown)");
|
|
3367
|
-
}
|
|
3368
|
-
return result.content;
|
|
3369
|
-
},
|
|
3370
3352
|
});
|
|
3371
3353
|
this._correctionService = service;
|
|
3372
3354
|
return service;
|
|
@@ -3389,11 +3371,20 @@ export class EngramAccessService extends SupportPassportAccessServiceBase {
|
|
|
3389
3371
|
}
|
|
3390
3372
|
|
|
3391
3373
|
async correctionPlan(request: CorrectionRequest, opts?: { abortSignal?: AbortSignal }): Promise<CorrectionPlan> {
|
|
3374
|
+
let next = request;
|
|
3392
3375
|
if (request.targetIds?.some((id) => isHandleToken(id))) {
|
|
3393
|
-
|
|
3394
|
-
|
|
3376
|
+
next = {
|
|
3377
|
+
...next,
|
|
3378
|
+
targetIds: request.targetIds.map((id) => this.resolveMemoryIdOrHandleInput(id, request.sessionKey)),
|
|
3379
|
+
};
|
|
3380
|
+
}
|
|
3381
|
+
if (request.duplicateOf && isHandleToken(request.duplicateOf)) {
|
|
3382
|
+
next = {
|
|
3383
|
+
...next,
|
|
3384
|
+
duplicateOf: this.resolveMemoryIdOrHandleInput(request.duplicateOf, request.sessionKey),
|
|
3385
|
+
};
|
|
3395
3386
|
}
|
|
3396
|
-
return this.correctionService().plan(
|
|
3387
|
+
return this.correctionService().plan(next, opts);
|
|
3397
3388
|
}
|
|
3398
3389
|
|
|
3399
3390
|
async correctionApply(
|
package/src/config.test.ts
CHANGED
|
@@ -2463,6 +2463,32 @@ test("parseConfig rejects invalid correction.planTtlHours instead of silently de
|
|
|
2463
2463
|
assert.equal(parseConfig({}).correctionPlanTtlHours, 24, "absent → documented default");
|
|
2464
2464
|
});
|
|
2465
2465
|
|
|
2466
|
+
test("parseConfig correction.classifyTimeoutMs defaults to 45000 and rejects invalid values", () => {
|
|
2467
|
+
assert.equal(parseConfig({}).correctionClassifyTimeoutMs, 45_000);
|
|
2468
|
+
assert.equal(parseConfig({ correction: { classifyTimeoutMs: 12000 } }).correctionClassifyTimeoutMs, 12_000);
|
|
2469
|
+
assert.equal(
|
|
2470
|
+
parseConfig({
|
|
2471
|
+
correction: { classifyTimeoutMs: 8000 },
|
|
2472
|
+
correctionClassifyTimeoutMs: 1000,
|
|
2473
|
+
}).correctionClassifyTimeoutMs,
|
|
2474
|
+
8000,
|
|
2475
|
+
"nested correction.classifyTimeoutMs wins",
|
|
2476
|
+
);
|
|
2477
|
+
assert.equal(parseConfig({ correctionClassifyTimeoutMs: 15000 }).correctionClassifyTimeoutMs, 15_000);
|
|
2478
|
+
for (const value of [0, -1, 3.7, "abc", 300_001, true]) {
|
|
2479
|
+
assert.throws(
|
|
2480
|
+
() => parseConfig({ correctionClassifyTimeoutMs: value } as Record<string, unknown>),
|
|
2481
|
+
/Invalid correction\.classifyTimeoutMs/,
|
|
2482
|
+
`correctionClassifyTimeoutMs=${JSON.stringify(value)} should throw`,
|
|
2483
|
+
);
|
|
2484
|
+
assert.throws(
|
|
2485
|
+
() => parseConfig({ correction: { classifyTimeoutMs: value } } as Record<string, unknown>),
|
|
2486
|
+
/Invalid correction\.classifyTimeoutMs/,
|
|
2487
|
+
`nested classifyTimeoutMs=${JSON.stringify(value)} should throw`,
|
|
2488
|
+
);
|
|
2489
|
+
}
|
|
2490
|
+
});
|
|
2491
|
+
|
|
2466
2492
|
test("parseConfig correction.maxAffected rejects non-integers (Number.isInteger, #1678)", () => {
|
|
2467
2493
|
// The error message says "integer" — 3.7 must be rejected, not silently floored to 3.
|
|
2468
2494
|
for (const value of [3.7, 2.5, "1.5", 0.99]) {
|
|
@@ -2625,6 +2651,15 @@ test("parseConfig projection-rebuild knobs: defaults, boolean coercion, numeric
|
|
|
2625
2651
|
assert.throws(() => parseConfig({ projectionRebuildIntervalMs: 1000 }), /projectionRebuildIntervalMs/);
|
|
2626
2652
|
assert.throws(() => parseConfig({ projectionRebuildIntervalMs: 3600000.5 }), /projectionRebuildIntervalMs/);
|
|
2627
2653
|
assert.throws(() => parseConfig({ projectionRebuildIntervalMs: "abc" }), /projectionRebuildIntervalMs/);
|
|
2654
|
+
|
|
2655
|
+
assert.equal(defaults.projectionRebuildHeapUsageLimit, 0.6);
|
|
2656
|
+
assert.equal(parseConfig({ projectionRebuildHeapUsageLimit: 0.5 }).projectionRebuildHeapUsageLimit, 0.5);
|
|
2657
|
+
assert.equal(parseConfig({ projectionRebuildHeapUsageLimit: "0.5" }).projectionRebuildHeapUsageLimit, 0.5);
|
|
2658
|
+
assert.equal(parseConfig({ projectionRebuildHeapUsageLimit: 1 }).projectionRebuildHeapUsageLimit, 1);
|
|
2659
|
+
assert.throws(() => parseConfig({ projectionRebuildHeapUsageLimit: 0 }), /projectionRebuildHeapUsageLimit/);
|
|
2660
|
+
assert.throws(() => parseConfig({ projectionRebuildHeapUsageLimit: -0.2 }), /projectionRebuildHeapUsageLimit/);
|
|
2661
|
+
assert.throws(() => parseConfig({ projectionRebuildHeapUsageLimit: 1.1 }), /projectionRebuildHeapUsageLimit/);
|
|
2662
|
+
assert.throws(() => parseConfig({ projectionRebuildHeapUsageLimit: "abc" }), /projectionRebuildHeapUsageLimit/);
|
|
2628
2663
|
});
|
|
2629
2664
|
|
|
2630
2665
|
test("parseConfig forwards activity source settings", () => {
|
package/src/config.ts
CHANGED
|
@@ -28,6 +28,7 @@ import type {
|
|
|
28
28
|
import { parseBackgroundGeneration } from "./background-generation-config.js";
|
|
29
29
|
import { parseSearchBackend } from "./config-search-backend.js";
|
|
30
30
|
import { parseLocalLlmConfig } from "./local-llm-config.js";
|
|
31
|
+
import { parseCorrectionConfig } from "./correction/correction-config.js";
|
|
31
32
|
import { parseConvergeConfig } from "./converge-config.js";
|
|
32
33
|
import { parseExternalWikiRecallGuard } from "./external-wiki-guard.js";
|
|
33
34
|
import { log } from "./logger.js";
|
|
@@ -81,6 +82,7 @@ import { parseCaptureCompanionConfigs } from "./location/parse-companions.js";
|
|
|
81
82
|
import { parseLocationConfig } from "./location/config.js";
|
|
82
83
|
import { parseOkfConfig } from "./okf/config.js";
|
|
83
84
|
import { parseBoundedJsonlStateConfig } from "./bounded-jsonl-state.js";
|
|
85
|
+
import { parseProjectionRebuildScheduleConfig } from "./projection-rebuild-config.js";
|
|
84
86
|
import { parseCodingKnowledgeConfig } from "./coding/coding-knowledge-config.js";
|
|
85
87
|
import { parseActionGateConfig } from "./coding/action-gate.js";
|
|
86
88
|
import { parseChatConfig } from "./chat/chat-config.js";
|
|
@@ -1854,66 +1856,9 @@ export function parseConfig(
|
|
|
1854
1856
|
// (docs kept honest — review: wire resolver before exposing the gate).
|
|
1855
1857
|
temporalBiTemporal: coerceBool(cfg.temporalBiTemporal) ?? false,
|
|
1856
1858
|
temporalExpiredInInjection: coerceBool(cfg.temporalExpiredInInjection) ?? false,
|
|
1857
|
-
// Correction Contract (
|
|
1858
|
-
//
|
|
1859
|
-
|
|
1860
|
-
// flat legacy keys are dropped and the runtime always sees defaults. Nested
|
|
1861
|
-
// `correction.<key>` wins; flat `correction<Key>` is the legacy fallback.
|
|
1862
|
-
correctionEnabled: (() => {
|
|
1863
|
-
const nested = (cfg.correction as Record<string, unknown> | undefined)?.enabled;
|
|
1864
|
-
const raw = nested !== undefined ? nested : cfg.correctionEnabled;
|
|
1865
|
-
if (raw === undefined || raw === null) return true;
|
|
1866
|
-
const v = coerceBool(raw);
|
|
1867
|
-
if (v === undefined) {
|
|
1868
|
-
throw new Error(`Invalid correction.enabled: expected a boolean, got ${JSON.stringify(raw)}`);
|
|
1869
|
-
}
|
|
1870
|
-
return v;
|
|
1871
|
-
})(),
|
|
1872
|
-
correctionApplyRequiresConfirm: (() => {
|
|
1873
|
-
const nested = (cfg.correction as Record<string, unknown> | undefined)?.applyRequiresConfirm;
|
|
1874
|
-
const raw = nested !== undefined ? nested : cfg.correctionApplyRequiresConfirm;
|
|
1875
|
-
if (raw === undefined || raw === null) return true;
|
|
1876
|
-
const v = coerceBool(raw);
|
|
1877
|
-
if (v === undefined) {
|
|
1878
|
-
throw new Error(`Invalid correction.applyRequiresConfirm: expected a boolean, got ${JSON.stringify(raw)}`);
|
|
1879
|
-
}
|
|
1880
|
-
return v;
|
|
1881
|
-
})(),
|
|
1882
|
-
correctionMaxAffected: (() => {
|
|
1883
|
-
const rawNested = (cfg.correction as Record<string, unknown> | undefined)?.maxAffected;
|
|
1884
|
-
const raw = rawNested !== undefined ? rawNested : cfg.correctionMaxAffected;
|
|
1885
|
-
if (raw === undefined || raw === null) return 10;
|
|
1886
|
-
const n = coerceNumber(raw);
|
|
1887
|
-
// #1678 (thread Oiup6): the error message says "integer" — enforce it
|
|
1888
|
-
// with Number.isInteger so 3.7 is rejected rather than silently floored.
|
|
1889
|
-
if (n === undefined || !Number.isFinite(n) || n < 1 || !Number.isInteger(n)) {
|
|
1890
|
-
throw new Error(`Invalid correction.maxAffected: expected an integer >= 1, got ${JSON.stringify(raw)}`);
|
|
1891
|
-
}
|
|
1892
|
-
return n;
|
|
1893
|
-
})(),
|
|
1894
|
-
correctionPlanTtlHours: (() => {
|
|
1895
|
-
const nested = (cfg.correction as Record<string, unknown> | undefined)?.planTtlHours;
|
|
1896
|
-
const fromNested = nested !== undefined ? coerceNumber(nested) : undefined;
|
|
1897
|
-
if (fromNested !== undefined && fromNested >= 1) return fromNested;
|
|
1898
|
-
// #1678 (threads Ohtvi/Ohyvf): reject invalid (0/negative/non-numeric)
|
|
1899
|
-
// instead of silently defaulting to 24h — completes the config-reject
|
|
1900
|
-
// class already enforced for enabled/applyRequiresConfirm/maxAffected.
|
|
1901
|
-
if (nested !== undefined && fromNested === undefined) {
|
|
1902
|
-
throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
|
|
1903
|
-
}
|
|
1904
|
-
if (fromNested !== undefined && fromNested < 1) {
|
|
1905
|
-
throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
|
|
1906
|
-
}
|
|
1907
|
-
const fromFlat = coerceNumber(cfg.correctionPlanTtlHours);
|
|
1908
|
-
if (fromFlat !== undefined && fromFlat >= 1) return fromFlat;
|
|
1909
|
-
if (cfg.correctionPlanTtlHours !== undefined && fromFlat === undefined) {
|
|
1910
|
-
throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`);
|
|
1911
|
-
}
|
|
1912
|
-
if (fromFlat !== undefined && fromFlat < 1) {
|
|
1913
|
-
throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`);
|
|
1914
|
-
}
|
|
1915
|
-
return 24;
|
|
1916
|
-
})(),
|
|
1859
|
+
// Correction Contract (#1580). Nested `correction.<key>` wins over flat
|
|
1860
|
+
// `correction<Key>`. Parser lives in correction/correction-config.ts.
|
|
1861
|
+
...parseCorrectionConfig(cfg),
|
|
1917
1862
|
// Passive correction capture (issue #1581). Parsed from
|
|
1918
1863
|
// `correctionCapture.<key>` (nested) or flat legacy keys. Default "off" —
|
|
1919
1864
|
// operators opt in (rule 48). Invalid mode → rejected listing options (rule 51).
|
|
@@ -3560,11 +3505,7 @@ export function parseConfig(
|
|
|
3560
3505
|
Number.isFinite(cfg.graphEdgeDecayVisibilityThreshold)
|
|
3561
3506
|
? Math.max(0, Math.min(1, cfg.graphEdgeDecayVisibilityThreshold))
|
|
3562
3507
|
: 0.2,
|
|
3563
|
-
|
|
3564
|
-
// Enabled-by-default (gotcha #36 coercion); interval via the strict shared parser (strings coerced, non-integer/sub-60s rejected — pattern #39).
|
|
3565
|
-
projectionRebuildEnabled: coerceBooleanLike(cfg.projectionRebuildEnabled) ?? true,
|
|
3566
|
-
projectionRebuildIntervalMs: parseIntegerAtLeast(
|
|
3567
|
-
cfg.projectionRebuildIntervalMs, 6 * 60 * 60 * 1000, 60_000, "projectionRebuildIntervalMs"),
|
|
3508
|
+
...parseProjectionRebuildScheduleConfig(cfg, parseIntegerAtLeast),
|
|
3568
3509
|
...parseBoundedJsonlStateConfig(cfg, parseIntegerAtLeast),
|
|
3569
3510
|
// Issue #681 PR 3/3 — confidence-aware traversal. Floor clamps to [0,1]; a
|
|
3570
3511
|
// documented 0 iterations disables PageRank refinement (BFS scores pass through).
|
|
@@ -34,6 +34,13 @@ export interface CorpusReadOptions {
|
|
|
34
34
|
* work, and on a tree large enough to matter there are thousands of them.
|
|
35
35
|
*/
|
|
36
36
|
abortSignal?: AbortSignal;
|
|
37
|
+
/**
|
|
38
|
+
* When `false`, parsed memories are returned without the raw file text kept
|
|
39
|
+
* beside them (`rememberRawFrontmatter`). Default (unset) retains that copy.
|
|
40
|
+
* A `false` read bypasses the shared corpus caches so it cannot replace a
|
|
41
|
+
* raw-retaining snapshot other callers still need.
|
|
42
|
+
*/
|
|
43
|
+
retainRaw?: boolean;
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
/** Stop a corpus read at a scan boundary when its caller has given up. */
|