@remnic/core 9.69.86 → 9.69.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.js +45 -44
- package/dist/access-authorization-probe.js +46 -45
- package/dist/access-boundary.js +45 -44
- package/dist/access-cli.js +111 -110
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.d.ts.map +1 -1
- package/dist/access-extraction-force-flush.js +45 -44
- package/dist/access-http-briefing.js +46 -45
- package/dist/access-http-query.js +47 -46
- package/dist/access-http.js +67 -66
- package/dist/access-identity-continuity-surface.js +45 -44
- package/dist/access-lcm-surface.js +45 -44
- package/dist/access-mcp.d.ts.map +1 -1
- package/dist/access-mcp.js +59 -58
- package/dist/access-namespace-preflight.js +45 -44
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.js +45 -44
- package/dist/access-operations-batch.js +49 -48
- package/dist/access-operations.js +56 -55
- package/dist/access-recall-concurrency.js +45 -44
- package/dist/access-recall-diagnostics.js +4 -4
- package/dist/access-recall-response.js +45 -44
- package/dist/access-recall-surface.js +45 -44
- package/dist/access-schema.js +3 -3
- package/dist/access-service-helpers.d.ts +1 -0
- package/dist/access-service-helpers.d.ts.map +1 -1
- package/dist/access-service-helpers.js +1 -1
- package/dist/access-service.js +45 -44
- package/dist/access-surface-catalog.js +47 -46
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +13 -12
- package/dist/active-recall.js.map +1 -1
- package/dist/{auto-sync-WEUDMXUW.js → auto-sync-6IPX2BAC.js} +5 -5
- package/dist/background-generation.js +2 -2
- package/dist/briefing.js +7 -7
- package/dist/buffer.js +4 -3
- package/dist/calibration.js +2 -2
- package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +10 -10
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.js +3 -3
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-J3IWHCMF.js → chunk-2DT7PIDZ.js} +3 -3
- package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-MFZACYZ6.js → chunk-37S3IMYB.js} +2 -2
- package/dist/{chunk-IBGEHKQ6.js → chunk-3C3J243X.js} +2 -2
- package/dist/{chunk-55FCXCXJ.js → chunk-3GQC3NMB.js} +4 -4
- package/dist/{chunk-QOPB6KE3.js → chunk-3TB2XQ3C.js} +2 -2
- package/dist/{chunk-3XQYM4RE.js → chunk-4BZP2B4U.js} +2 -2
- package/dist/{chunk-FYAU4S6E.js → chunk-4CDYONWO.js} +3 -3
- package/dist/{chunk-CRKWSSS4.js → chunk-4IEOGIPB.js} +2 -2
- package/dist/{chunk-W75BBBSY.js → chunk-4IIMMZZK.js} +11 -11
- package/dist/{chunk-Q3THVX75.js → chunk-4RL3JOB3.js} +2 -2
- package/dist/{chunk-7G6WUOLB.js → chunk-66DKTOBY.js} +2 -2
- package/dist/{chunk-IP5VLSLO.js → chunk-6L3PBSAR.js} +2 -2
- package/dist/{chunk-AZ2X5LNA.js → chunk-6LYAEM54.js} +2 -2
- package/dist/{chunk-RCQKAOOB.js → chunk-6NQ4LSMS.js} +40 -40
- package/dist/{chunk-WB2I2EQK.js → chunk-6TT6HRE4.js} +2 -2
- package/dist/{chunk-JX6USXZR.js → chunk-72JNNJJJ.js} +2 -2
- package/dist/{chunk-BUKK5SWA.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-OEBLZZKK.js → chunk-7XG7KMIW.js} +2 -2
- package/dist/{chunk-3GN2PEOT.js → chunk-AQK54Q7O.js} +2 -2
- package/dist/{chunk-3SG4FGDV.js → chunk-AWD36R4D.js} +5 -2
- package/dist/chunk-AWD36R4D.js.map +1 -0
- package/dist/{chunk-BOUFVFV2.js → chunk-AZSGSRIM.js} +2 -2
- package/dist/{chunk-N3MNDVJO.js → chunk-BFO3IR56.js} +2 -2
- package/dist/{chunk-2UPTRDGM.js → chunk-BJRAELDH.js} +3 -3
- package/dist/{chunk-IMAP236M.js → chunk-CS52MFDV.js} +2 -2
- package/dist/{chunk-UNJOB4DY.js → chunk-CUCWX3MO.js} +2 -2
- package/dist/{chunk-QB75LKQQ.js → chunk-CWHV574S.js} +32 -13
- package/dist/chunk-CWHV574S.js.map +1 -0
- package/dist/{chunk-DQISIT63.js → chunk-DZ42MDZE.js} +3 -3
- package/dist/{chunk-ML2MVAEZ.js → chunk-DZ525SNQ.js} +1 -1
- package/dist/{chunk-5ELENZTA.js → chunk-EDIH6X2P.js} +2 -2
- package/dist/{chunk-S42HZILI.js → chunk-EHS5MJEF.js} +2 -2
- package/dist/{chunk-IA3X2Y4K.js → chunk-EQ6YOIKO.js} +2 -2
- package/dist/{chunk-4V44AA7O.js → chunk-FAN73COB.js} +2 -2
- package/dist/{chunk-KERNN6BC.js → chunk-FB64XE3R.js} +2 -2
- package/dist/{chunk-SVZWVZ7E.js → chunk-FOH7AMMI.js} +72 -55
- package/dist/chunk-FOH7AMMI.js.map +1 -0
- package/dist/{chunk-S55WTPFJ.js → chunk-FRCESVV6.js} +7 -7
- package/dist/{chunk-GEX5NI36.js → chunk-HBBHL4YF.js} +2 -2
- package/dist/{chunk-2I6VHX6Q.js → chunk-HESDNYRB.js} +2 -2
- package/dist/{chunk-2U3R3DDH.js → chunk-ICZQG4XE.js} +9 -9
- package/dist/{chunk-DGAWEJVI.js → chunk-JGSQ6P4D.js} +2 -2
- package/dist/{chunk-TIQZNDZ5.js → chunk-JKMHZF3Q.js} +2 -2
- package/dist/{chunk-NAFPHFDM.js → chunk-JNLEJE4A.js} +2 -2
- package/dist/{chunk-IFCKHPY4.js → chunk-K4J4E7WV.js} +2 -2
- package/dist/{chunk-2QG4SLZI.js → chunk-KF7PQ7G2.js} +2 -2
- package/dist/{chunk-JXMECXMF.js → chunk-KFCMMDHH.js} +2 -2
- package/dist/{chunk-SQDKX4RW.js → chunk-KP7SANCF.js} +2 -2
- package/dist/{chunk-OM5BIPBR.js → chunk-L6UZEAID.js} +2 -2
- package/dist/{chunk-TEV2JGU5.js → chunk-LF5IGOOD.js} +15 -15
- package/dist/{chunk-QWUJWBZ5.js → chunk-LQG5O5EP.js} +2 -2
- package/dist/{chunk-NKFLHW7J.js → chunk-LS3XH3UE.js} +2 -2
- package/dist/{chunk-BJX3VQWZ.js → chunk-M536WNTQ.js} +2 -2
- package/dist/{chunk-EU3N5MK3.js → chunk-MQJL6CDZ.js} +3 -3
- package/dist/{chunk-VZBW6CDG.js → chunk-N4S4NUX5.js} +1 -1
- package/dist/{chunk-L2LBMKSI.js → chunk-NE6PHPLG.js} +10 -10
- package/dist/{chunk-VTPASHTO.js → chunk-NE7I2RCT.js} +2 -2
- package/dist/{chunk-OAOBL6OY.js → chunk-NR2ASHBL.js} +5 -5
- package/dist/{chunk-7UUKRS3J.js → chunk-P2WZHLUF.js} +3 -3
- package/dist/{chunk-IVH7INFM.js → chunk-P6WFK4ZJ.js} +6 -6
- package/dist/{chunk-CHDGJJV6.js → chunk-PUKTBULQ.js} +2 -2
- package/dist/{chunk-NAYBHNGN.js → chunk-QEV26L2F.js} +2 -2
- package/dist/{chunk-I4G4UWQA.js → chunk-QI2E6ISQ.js} +1 -1
- package/dist/{chunk-CK5U7JGH.js → chunk-QVS22WTO.js} +2 -2
- package/dist/{chunk-B47OHVFT.js → chunk-QWW2JDDX.js} +7 -7
- package/dist/{chunk-EJPF6XDQ.js → chunk-RDJ6C7NZ.js} +3 -3
- package/dist/{chunk-C2WWQ4OR.js → chunk-RMMA44HE.js} +1 -1
- package/dist/chunk-RMMA44HE.js.map +1 -0
- package/dist/{chunk-I53NAHZ4.js → chunk-S7GCT7NU.js} +3 -2
- package/dist/chunk-S7GCT7NU.js.map +1 -0
- package/dist/{chunk-RDEUG2M2.js → chunk-SOZUJCME.js} +6 -6
- package/dist/{chunk-T4QGUXCV.js → chunk-SPSRGEDQ.js} +2 -2
- package/dist/{chunk-TY446V34.js → chunk-SRZW7FNU.js} +2 -2
- package/dist/{chunk-SV72F4DS.js → chunk-SY5KDWGU.js} +2 -2
- package/dist/{chunk-H36X4NRH.js → chunk-TDYAIXHK.js} +5 -5
- package/dist/{chunk-ZTHGFTMW.js → chunk-TKC5LZ43.js} +2 -2
- package/dist/{chunk-6DTJBTHL.js → chunk-TM3RXL4G.js} +14 -2
- package/dist/chunk-TM3RXL4G.js.map +1 -0
- package/dist/{chunk-AXDOF4VI.js → chunk-UA5DX5C3.js} +2 -2
- package/dist/{chunk-JS3S2HVG.js → chunk-V2ES4WCZ.js} +2 -2
- package/dist/{chunk-5FNZ3G6X.js → chunk-VKQI47DJ.js} +4 -4
- package/dist/{chunk-JVY556FW.js → chunk-VLLD4TOB.js} +2 -2
- package/dist/{chunk-NMBX4D7P.js → chunk-VQNONC4E.js} +2 -2
- package/dist/{chunk-GZAGLCQH.js → chunk-VVDWZRZG.js} +2 -2
- package/dist/{chunk-T4BE5KJM.js → chunk-VX6GCKBS.js} +3 -3
- package/dist/{chunk-RIEX7NOZ.js → chunk-W4AOR52H.js} +2 -2
- package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-BNPLDVM6.js → chunk-XTYX6V52.js} +2 -2
- package/dist/{chunk-FZVROZKC.js → chunk-XVZA6VXC.js} +4 -4
- package/dist/{chunk-RGMVMVMF.js → chunk-YBA52OKG.js} +2 -1
- package/dist/chunk-YBA52OKG.js.map +1 -0
- package/dist/{chunk-C7JAUNFC.js → chunk-YITN5WXI.js} +2 -2
- package/dist/{chunk-HS75MCQF.js → chunk-YRULQW5J.js} +2 -2
- package/dist/{chunk-DINRT75P.js → chunk-YSBL7VPO.js} +2 -2
- package/dist/{chunk-7QK5TUTW.js → chunk-YSJTCOHR.js} +2 -2
- package/dist/{chunk-QC56VZXC.js → chunk-YTQGGO3K.js} +67 -67
- package/dist/{chunk-HKFJ3PF3.js → chunk-ZI7QA4MK.js} +2 -2
- package/dist/chunk-ZJP66Q4I.js +48 -0
- package/dist/chunk-ZJP66Q4I.js.map +1 -0
- package/dist/cli.js +86 -85
- package/dist/coding/export-okf-codegraph.js +6 -6
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.js +7 -7
- package/dist/config.js +13 -12
- package/dist/connectors/codex-materialize-runner.js +7 -7
- package/dist/connectors/index.js +7 -7
- package/dist/contradiction/index.js +3 -3
- package/dist/{contradiction-scan-5EJYRKD3.js → contradiction-scan-TAGMOUQ2.js} +3 -3
- package/dist/convergence-refresh.js +9 -9
- package/dist/corpus-watermark.js +9 -9
- package/dist/correction/correction-access-wiring.d.ts.map +1 -1
- package/dist/deep-recall-http-glue.js +4 -4
- package/dist/deep-recall-policy-llm.js +3 -3
- package/dist/deep-recall.js +2 -2
- package/dist/entity-retrieval.js +7 -7
- package/dist/external-wiki-access.js +46 -45
- package/dist/extraction-faithfulness.js +3 -3
- package/dist/extraction-judge.js +3 -3
- package/dist/extraction-liveness.d.ts +9 -0
- package/dist/extraction-liveness.d.ts.map +1 -1
- package/dist/extraction-liveness.js +2 -1
- package/dist/extraction-llm-health.d.ts +32 -0
- package/dist/extraction-llm-health.d.ts.map +1 -0
- package/dist/extraction-llm-health.js +17 -0
- package/dist/extraction-span-config.js +3 -2
- package/dist/extraction-span-materialize.js +2 -2
- package/dist/extraction.js +16 -15
- package/dist/fallback-llm.js +2 -2
- package/dist/{first-start-migration-GAT7G733.js → first-start-migration-7OATHJKB.js} +4 -4
- package/dist/{graph-edge-decay-PVKDKLQK.js → graph-edge-decay-KQGS3L3B.js} +6 -6
- package/dist/graph-jsonl.js +4 -4
- package/dist/graph-snapshot.js +4 -4
- package/dist/graph.js +5 -5
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.js +136 -135
- package/dist/json-extract.d.ts.map +1 -1
- package/dist/json-extract.js +1 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.js +5 -5
- package/dist/local-llm.d.ts.map +1 -1
- package/dist/local-llm.js +1 -1
- package/dist/location/index.js +9 -9
- package/dist/maintenance/memory-governance.js +7 -7
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +7 -7
- package/dist/maintenance/rebuild-memory-projection.js +8 -8
- package/dist/memory-browse-operations.js +46 -45
- package/dist/memory-browse.js +3 -3
- package/dist/namespaces/migrate.js +8 -8
- package/dist/namespaces/storage.js +7 -7
- package/dist/operator-doctor-corpus.js +10 -10
- package/dist/operator-toolkit.js +25 -24
- package/dist/orchestration/extraction-run.d.ts.map +1 -1
- package/dist/orchestration/maintenance.js +17 -17
- package/dist/orchestrator.js +111 -110
- package/dist/recall-navigation-operations.js +46 -45
- package/dist/recall-navigation.js +45 -44
- package/dist/recall-planner-llm.js +2 -2
- package/dist/recall-state-view-admission.js +3 -3
- package/dist/recall-why-service.js +6 -6
- package/dist/recall-why.js +3 -3
- package/dist/{resolution-UYJU5JUA.js → resolution-DNX7FO7A.js} +4 -4
- package/dist/resolution-DNX7FO7A.js.map +1 -0
- package/dist/resume-bundles.js +14 -13
- package/dist/semantic-consolidation.js +8 -8
- package/dist/semantic-rule-promotion.js +7 -7
- package/dist/semantic-rule-verifier.js +7 -7
- package/dist/source-agent-qualifier.js +11 -10
- package/dist/standup/build.js +7 -7
- package/dist/storage.js +6 -6
- package/dist/summarizer.js +5 -5
- package/dist/support-passport/index.js +48 -47
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +7 -7
- package/dist/verified-recall.js +7 -7
- package/dist/who-knows-cli.js +8 -8
- package/dist/who-knows.js +7 -7
- package/package.json +2 -2
- package/src/access-extraction-force-flush.ts +15 -7
- package/src/access-mcp.ts +90 -28
- package/src/access-service-health.test.ts +41 -5
- package/src/access-service-helpers.ts +1 -0
- package/src/access-service-observe-lcm-parity.test.ts +56 -24
- package/src/correction/correction-access-wiring.ts +36 -8
- package/src/correction/correction-classify-parse.test.ts +178 -0
- package/src/extraction-liveness.ts +13 -1
- package/src/extraction-llm-health.test.ts +103 -0
- package/src/extraction-llm-health.ts +71 -0
- package/src/json-extract.ts +6 -0
- package/src/local-llm-thinking.test.ts +12 -0
- package/src/local-llm.ts +1 -0
- package/src/orchestration/extraction-run.test.ts +55 -1
- package/src/orchestration/extraction-run.ts +13 -0
- package/dist/chunk-3SG4FGDV.js.map +0 -1
- package/dist/chunk-6DTJBTHL.js.map +0 -1
- package/dist/chunk-C2WWQ4OR.js.map +0 -1
- package/dist/chunk-I53NAHZ4.js.map +0 -1
- package/dist/chunk-QB75LKQQ.js.map +0 -1
- package/dist/chunk-RGMVMVMF.js.map +0 -1
- package/dist/chunk-SVZWVZ7E.js.map +0 -1
- /package/dist/{auto-sync-WEUDMXUW.js.map → auto-sync-6IPX2BAC.js.map} +0 -0
- /package/dist/{capsule-crypto-GWVG7LGC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
- /package/dist/{chunk-J3IWHCMF.js.map → chunk-2DT7PIDZ.js.map} +0 -0
- /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-MFZACYZ6.js.map → chunk-37S3IMYB.js.map} +0 -0
- /package/dist/{chunk-IBGEHKQ6.js.map → chunk-3C3J243X.js.map} +0 -0
- /package/dist/{chunk-55FCXCXJ.js.map → chunk-3GQC3NMB.js.map} +0 -0
- /package/dist/{chunk-QOPB6KE3.js.map → chunk-3TB2XQ3C.js.map} +0 -0
- /package/dist/{chunk-3XQYM4RE.js.map → chunk-4BZP2B4U.js.map} +0 -0
- /package/dist/{chunk-FYAU4S6E.js.map → chunk-4CDYONWO.js.map} +0 -0
- /package/dist/{chunk-CRKWSSS4.js.map → chunk-4IEOGIPB.js.map} +0 -0
- /package/dist/{chunk-W75BBBSY.js.map → chunk-4IIMMZZK.js.map} +0 -0
- /package/dist/{chunk-Q3THVX75.js.map → chunk-4RL3JOB3.js.map} +0 -0
- /package/dist/{chunk-7G6WUOLB.js.map → chunk-66DKTOBY.js.map} +0 -0
- /package/dist/{chunk-IP5VLSLO.js.map → chunk-6L3PBSAR.js.map} +0 -0
- /package/dist/{chunk-AZ2X5LNA.js.map → chunk-6LYAEM54.js.map} +0 -0
- /package/dist/{chunk-RCQKAOOB.js.map → chunk-6NQ4LSMS.js.map} +0 -0
- /package/dist/{chunk-WB2I2EQK.js.map → chunk-6TT6HRE4.js.map} +0 -0
- /package/dist/{chunk-JX6USXZR.js.map → chunk-72JNNJJJ.js.map} +0 -0
- /package/dist/{chunk-BUKK5SWA.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-OEBLZZKK.js.map → chunk-7XG7KMIW.js.map} +0 -0
- /package/dist/{chunk-3GN2PEOT.js.map → chunk-AQK54Q7O.js.map} +0 -0
- /package/dist/{chunk-BOUFVFV2.js.map → chunk-AZSGSRIM.js.map} +0 -0
- /package/dist/{chunk-N3MNDVJO.js.map → chunk-BFO3IR56.js.map} +0 -0
- /package/dist/{chunk-2UPTRDGM.js.map → chunk-BJRAELDH.js.map} +0 -0
- /package/dist/{chunk-IMAP236M.js.map → chunk-CS52MFDV.js.map} +0 -0
- /package/dist/{chunk-UNJOB4DY.js.map → chunk-CUCWX3MO.js.map} +0 -0
- /package/dist/{chunk-DQISIT63.js.map → chunk-DZ42MDZE.js.map} +0 -0
- /package/dist/{chunk-ML2MVAEZ.js.map → chunk-DZ525SNQ.js.map} +0 -0
- /package/dist/{chunk-5ELENZTA.js.map → chunk-EDIH6X2P.js.map} +0 -0
- /package/dist/{chunk-S42HZILI.js.map → chunk-EHS5MJEF.js.map} +0 -0
- /package/dist/{chunk-IA3X2Y4K.js.map → chunk-EQ6YOIKO.js.map} +0 -0
- /package/dist/{chunk-4V44AA7O.js.map → chunk-FAN73COB.js.map} +0 -0
- /package/dist/{chunk-KERNN6BC.js.map → chunk-FB64XE3R.js.map} +0 -0
- /package/dist/{chunk-S55WTPFJ.js.map → chunk-FRCESVV6.js.map} +0 -0
- /package/dist/{chunk-GEX5NI36.js.map → chunk-HBBHL4YF.js.map} +0 -0
- /package/dist/{chunk-2I6VHX6Q.js.map → chunk-HESDNYRB.js.map} +0 -0
- /package/dist/{chunk-2U3R3DDH.js.map → chunk-ICZQG4XE.js.map} +0 -0
- /package/dist/{chunk-DGAWEJVI.js.map → chunk-JGSQ6P4D.js.map} +0 -0
- /package/dist/{chunk-TIQZNDZ5.js.map → chunk-JKMHZF3Q.js.map} +0 -0
- /package/dist/{chunk-NAFPHFDM.js.map → chunk-JNLEJE4A.js.map} +0 -0
- /package/dist/{chunk-IFCKHPY4.js.map → chunk-K4J4E7WV.js.map} +0 -0
- /package/dist/{chunk-2QG4SLZI.js.map → chunk-KF7PQ7G2.js.map} +0 -0
- /package/dist/{chunk-JXMECXMF.js.map → chunk-KFCMMDHH.js.map} +0 -0
- /package/dist/{chunk-SQDKX4RW.js.map → chunk-KP7SANCF.js.map} +0 -0
- /package/dist/{chunk-OM5BIPBR.js.map → chunk-L6UZEAID.js.map} +0 -0
- /package/dist/{chunk-TEV2JGU5.js.map → chunk-LF5IGOOD.js.map} +0 -0
- /package/dist/{chunk-QWUJWBZ5.js.map → chunk-LQG5O5EP.js.map} +0 -0
- /package/dist/{chunk-NKFLHW7J.js.map → chunk-LS3XH3UE.js.map} +0 -0
- /package/dist/{chunk-BJX3VQWZ.js.map → chunk-M536WNTQ.js.map} +0 -0
- /package/dist/{chunk-EU3N5MK3.js.map → chunk-MQJL6CDZ.js.map} +0 -0
- /package/dist/{chunk-VZBW6CDG.js.map → chunk-N4S4NUX5.js.map} +0 -0
- /package/dist/{chunk-L2LBMKSI.js.map → chunk-NE6PHPLG.js.map} +0 -0
- /package/dist/{chunk-VTPASHTO.js.map → chunk-NE7I2RCT.js.map} +0 -0
- /package/dist/{chunk-OAOBL6OY.js.map → chunk-NR2ASHBL.js.map} +0 -0
- /package/dist/{chunk-7UUKRS3J.js.map → chunk-P2WZHLUF.js.map} +0 -0
- /package/dist/{chunk-IVH7INFM.js.map → chunk-P6WFK4ZJ.js.map} +0 -0
- /package/dist/{chunk-CHDGJJV6.js.map → chunk-PUKTBULQ.js.map} +0 -0
- /package/dist/{chunk-NAYBHNGN.js.map → chunk-QEV26L2F.js.map} +0 -0
- /package/dist/{chunk-I4G4UWQA.js.map → chunk-QI2E6ISQ.js.map} +0 -0
- /package/dist/{chunk-CK5U7JGH.js.map → chunk-QVS22WTO.js.map} +0 -0
- /package/dist/{chunk-B47OHVFT.js.map → chunk-QWW2JDDX.js.map} +0 -0
- /package/dist/{chunk-EJPF6XDQ.js.map → chunk-RDJ6C7NZ.js.map} +0 -0
- /package/dist/{chunk-RDEUG2M2.js.map → chunk-SOZUJCME.js.map} +0 -0
- /package/dist/{chunk-T4QGUXCV.js.map → chunk-SPSRGEDQ.js.map} +0 -0
- /package/dist/{chunk-TY446V34.js.map → chunk-SRZW7FNU.js.map} +0 -0
- /package/dist/{chunk-SV72F4DS.js.map → chunk-SY5KDWGU.js.map} +0 -0
- /package/dist/{chunk-H36X4NRH.js.map → chunk-TDYAIXHK.js.map} +0 -0
- /package/dist/{chunk-ZTHGFTMW.js.map → chunk-TKC5LZ43.js.map} +0 -0
- /package/dist/{chunk-AXDOF4VI.js.map → chunk-UA5DX5C3.js.map} +0 -0
- /package/dist/{chunk-JS3S2HVG.js.map → chunk-V2ES4WCZ.js.map} +0 -0
- /package/dist/{chunk-5FNZ3G6X.js.map → chunk-VKQI47DJ.js.map} +0 -0
- /package/dist/{chunk-JVY556FW.js.map → chunk-VLLD4TOB.js.map} +0 -0
- /package/dist/{chunk-NMBX4D7P.js.map → chunk-VQNONC4E.js.map} +0 -0
- /package/dist/{chunk-GZAGLCQH.js.map → chunk-VVDWZRZG.js.map} +0 -0
- /package/dist/{chunk-T4BE5KJM.js.map → chunk-VX6GCKBS.js.map} +0 -0
- /package/dist/{chunk-RIEX7NOZ.js.map → chunk-W4AOR52H.js.map} +0 -0
- /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-BNPLDVM6.js.map → chunk-XTYX6V52.js.map} +0 -0
- /package/dist/{chunk-FZVROZKC.js.map → chunk-XVZA6VXC.js.map} +0 -0
- /package/dist/{chunk-C7JAUNFC.js.map → chunk-YITN5WXI.js.map} +0 -0
- /package/dist/{chunk-HS75MCQF.js.map → chunk-YRULQW5J.js.map} +0 -0
- /package/dist/{chunk-DINRT75P.js.map → chunk-YSBL7VPO.js.map} +0 -0
- /package/dist/{chunk-7QK5TUTW.js.map → chunk-YSJTCOHR.js.map} +0 -0
- /package/dist/{chunk-QC56VZXC.js.map → chunk-YTQGGO3K.js.map} +0 -0
- /package/dist/{chunk-HKFJ3PF3.js.map → chunk-ZI7QA4MK.js.map} +0 -0
- /package/dist/{contradiction-scan-5EJYRKD3.js.map → contradiction-scan-TAGMOUQ2.js.map} +0 -0
- /package/dist/{graph-edge-decay-PVKDKLQK.js.map → extraction-llm-health.js.map} +0 -0
- /package/dist/{first-start-migration-GAT7G733.js.map → first-start-migration-7OATHJKB.js.map} +0 -0
- /package/dist/{resolution-UYJU5JUA.js.map → graph-edge-decay-KQGS3L3B.js.map} +0 -0
package/dist/verified-recall.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JKMHZF3Q.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-FRCESVV6.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-46WM6JX2.js";
|
|
9
9
|
import "./chunk-D5F7TKMH.js";
|
|
@@ -22,12 +22,12 @@ import "./chunk-F4TWWUMP.js";
|
|
|
22
22
|
import "./chunk-72A4L5JJ.js";
|
|
23
23
|
import "./chunk-A7Q43EUZ.js";
|
|
24
24
|
import "./chunk-S2V7RUCL.js";
|
|
25
|
-
import "./chunk-S2HLHAZ4.js";
|
|
26
25
|
import "./chunk-MRPOZBJC.js";
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-S2HLHAZ4.js";
|
|
28
27
|
import "./chunk-LDXUBPMO.js";
|
|
28
|
+
import "./chunk-DM2T26WE.js";
|
|
29
29
|
import "./chunk-FF6N7BXC.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-2DT7PIDZ.js";
|
|
31
31
|
import "./chunk-AAD2ZS6P.js";
|
|
32
32
|
import "./chunk-DUJYRVUD.js";
|
|
33
33
|
import "./chunk-3ONXXHQO.js";
|
|
@@ -51,7 +51,7 @@ import "./chunk-IUM3VSHI.js";
|
|
|
51
51
|
import "./chunk-23G5P7TA.js";
|
|
52
52
|
import "./chunk-C64XATK7.js";
|
|
53
53
|
import "./chunk-42JKGUFJ.js";
|
|
54
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-TKC5LZ43.js";
|
|
55
55
|
import "./chunk-I55KAVET.js";
|
|
56
56
|
import "./chunk-L2EXJQJP.js";
|
|
57
57
|
import "./chunk-45GF7Y3V.js";
|
|
@@ -81,7 +81,7 @@ import "./chunk-AW4QUFQF.js";
|
|
|
81
81
|
import "./chunk-5FVVY2EB.js";
|
|
82
82
|
import "./chunk-FFAZ2XFU.js";
|
|
83
83
|
import "./chunk-PWF4JXKD.js";
|
|
84
|
-
import "./chunk-
|
|
84
|
+
import "./chunk-YBA52OKG.js";
|
|
85
85
|
import "./chunk-PWPIERBM.js";
|
|
86
86
|
import "./chunk-JDSVLVCG.js";
|
|
87
87
|
import "./chunk-5GKPFL3S.js";
|
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-W4AOR52H.js";
|
|
8
|
+
import "./chunk-CS52MFDV.js";
|
|
9
|
+
import "./chunk-FRCESVV6.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-46WM6JX2.js";
|
|
12
12
|
import "./chunk-D5F7TKMH.js";
|
|
@@ -25,12 +25,12 @@ import "./chunk-F4TWWUMP.js";
|
|
|
25
25
|
import "./chunk-72A4L5JJ.js";
|
|
26
26
|
import "./chunk-A7Q43EUZ.js";
|
|
27
27
|
import "./chunk-S2V7RUCL.js";
|
|
28
|
-
import "./chunk-S2HLHAZ4.js";
|
|
29
28
|
import "./chunk-MRPOZBJC.js";
|
|
30
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-S2HLHAZ4.js";
|
|
31
30
|
import "./chunk-LDXUBPMO.js";
|
|
31
|
+
import "./chunk-DM2T26WE.js";
|
|
32
32
|
import "./chunk-FF6N7BXC.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-2DT7PIDZ.js";
|
|
34
34
|
import "./chunk-AAD2ZS6P.js";
|
|
35
35
|
import "./chunk-DUJYRVUD.js";
|
|
36
36
|
import "./chunk-3ONXXHQO.js";
|
|
@@ -54,7 +54,7 @@ import "./chunk-IUM3VSHI.js";
|
|
|
54
54
|
import "./chunk-23G5P7TA.js";
|
|
55
55
|
import "./chunk-C64XATK7.js";
|
|
56
56
|
import "./chunk-42JKGUFJ.js";
|
|
57
|
-
import "./chunk-
|
|
57
|
+
import "./chunk-TKC5LZ43.js";
|
|
58
58
|
import "./chunk-I55KAVET.js";
|
|
59
59
|
import "./chunk-L2EXJQJP.js";
|
|
60
60
|
import "./chunk-45GF7Y3V.js";
|
|
@@ -84,7 +84,7 @@ import "./chunk-AW4QUFQF.js";
|
|
|
84
84
|
import "./chunk-5FVVY2EB.js";
|
|
85
85
|
import "./chunk-FFAZ2XFU.js";
|
|
86
86
|
import "./chunk-PWF4JXKD.js";
|
|
87
|
-
import "./chunk-
|
|
87
|
+
import "./chunk-YBA52OKG.js";
|
|
88
88
|
import "./chunk-PWPIERBM.js";
|
|
89
89
|
import "./chunk-JDSVLVCG.js";
|
|
90
90
|
import "./chunk-5GKPFL3S.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-CS52MFDV.js";
|
|
13
|
+
import "./chunk-FRCESVV6.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-46WM6JX2.js";
|
|
16
16
|
import "./chunk-D5F7TKMH.js";
|
|
@@ -29,12 +29,12 @@ import "./chunk-F4TWWUMP.js";
|
|
|
29
29
|
import "./chunk-72A4L5JJ.js";
|
|
30
30
|
import "./chunk-A7Q43EUZ.js";
|
|
31
31
|
import "./chunk-S2V7RUCL.js";
|
|
32
|
-
import "./chunk-S2HLHAZ4.js";
|
|
33
32
|
import "./chunk-MRPOZBJC.js";
|
|
34
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-S2HLHAZ4.js";
|
|
35
34
|
import "./chunk-LDXUBPMO.js";
|
|
35
|
+
import "./chunk-DM2T26WE.js";
|
|
36
36
|
import "./chunk-FF6N7BXC.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-2DT7PIDZ.js";
|
|
38
38
|
import "./chunk-AAD2ZS6P.js";
|
|
39
39
|
import "./chunk-DUJYRVUD.js";
|
|
40
40
|
import "./chunk-3ONXXHQO.js";
|
|
@@ -58,7 +58,7 @@ import "./chunk-IUM3VSHI.js";
|
|
|
58
58
|
import "./chunk-23G5P7TA.js";
|
|
59
59
|
import "./chunk-C64XATK7.js";
|
|
60
60
|
import "./chunk-42JKGUFJ.js";
|
|
61
|
-
import "./chunk-
|
|
61
|
+
import "./chunk-TKC5LZ43.js";
|
|
62
62
|
import "./chunk-I55KAVET.js";
|
|
63
63
|
import "./chunk-L2EXJQJP.js";
|
|
64
64
|
import "./chunk-45GF7Y3V.js";
|
|
@@ -88,7 +88,7 @@ import "./chunk-AW4QUFQF.js";
|
|
|
88
88
|
import "./chunk-5FVVY2EB.js";
|
|
89
89
|
import "./chunk-FFAZ2XFU.js";
|
|
90
90
|
import "./chunk-PWF4JXKD.js";
|
|
91
|
-
import "./chunk-
|
|
91
|
+
import "./chunk-YBA52OKG.js";
|
|
92
92
|
import "./chunk-PWPIERBM.js";
|
|
93
93
|
import "./chunk-JDSVLVCG.js";
|
|
94
94
|
import "./chunk-5GKPFL3S.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.69.
|
|
3
|
+
"version": "9.69.87",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3317,7 +3317,7 @@
|
|
|
3317
3317
|
"core"
|
|
3318
3318
|
],
|
|
3319
3319
|
"peerDependencies": {
|
|
3320
|
-
"@remnic/coding-graph": "^9.69.
|
|
3320
|
+
"@remnic/coding-graph": "^9.69.87"
|
|
3321
3321
|
},
|
|
3322
3322
|
"peerDependenciesMeta": {
|
|
3323
3323
|
"@remnic/coding-graph": {
|
|
@@ -34,6 +34,14 @@ export async function extractionForceFlush(
|
|
|
34
34
|
if (request.deadlineMs !== undefined && (!Number.isFinite(request.deadlineMs) || request.deadlineMs < 0)) {
|
|
35
35
|
throw new EngramAccessInputError("deadlineMs must be a finite non-negative number");
|
|
36
36
|
}
|
|
37
|
+
// `deadlineMs` is a BUDGET from now, not an absolute epoch (issue #3140):
|
|
38
|
+
// callers passing a natural relative value (e.g. 30000) were instantly
|
|
39
|
+
// rejected with `replay extraction deadline exceeded (scope_resolution)`
|
|
40
|
+
// because the raw duration was compared against Date.now(). Convert once
|
|
41
|
+
// here; every phase below and the orchestrator flush keep absolute deadlines.
|
|
42
|
+
const deadlineAt = typeof request.deadlineMs === "number"
|
|
43
|
+
? (request.deadlineMs > 1e11 ? request.deadlineMs : Date.now() + request.deadlineMs)
|
|
44
|
+
: undefined;
|
|
37
45
|
|
|
38
46
|
const authenticatedPrincipal = request.authenticatedPrincipal?.trim();
|
|
39
47
|
throwIfAborted(request.abortSignal, "extraction force-flush aborted");
|
|
@@ -87,7 +95,7 @@ export async function extractionForceFlush(
|
|
|
87
95
|
() => deps.resolveMemoryScopePlan(request),
|
|
88
96
|
{
|
|
89
97
|
abortSignal: request.abortSignal,
|
|
90
|
-
extractionDeadlineMs:
|
|
98
|
+
extractionDeadlineMs: deadlineAt,
|
|
91
99
|
reason: "access_force_flush",
|
|
92
100
|
deadlineStage: "scope_resolution",
|
|
93
101
|
onDeadline: cancelBeforeScopeResolution,
|
|
@@ -107,7 +115,7 @@ export async function extractionForceFlush(
|
|
|
107
115
|
};
|
|
108
116
|
if (request.abortSignal?.aborted) cancelScopedPendingObserveExtractions();
|
|
109
117
|
throwIfAborted(request.abortSignal, "extraction force-flush aborted");
|
|
110
|
-
if (
|
|
118
|
+
if (deadlineAt !== undefined && deadlineAt <= Date.now()) {
|
|
111
119
|
cancelScopedPendingObserveExtractions();
|
|
112
120
|
throw new EngramAccessInputError("extraction force-flush deadline exceeded before buffer drain");
|
|
113
121
|
}
|
|
@@ -119,7 +127,7 @@ export async function extractionForceFlush(
|
|
|
119
127
|
reason: "access_force_flush",
|
|
120
128
|
abortSignal: request.abortSignal,
|
|
121
129
|
failOnExtractionFailure: true,
|
|
122
|
-
extractionDeadlineMs:
|
|
130
|
+
extractionDeadlineMs: deadlineAt,
|
|
123
131
|
writeNamespaceOverride: scope.writeNamespace,
|
|
124
132
|
principalOverride:
|
|
125
133
|
typeof scope.principal === "string" && scope.principal.length > 0 ? scope.principal : undefined,
|
|
@@ -128,7 +136,7 @@ export async function extractionForceFlush(
|
|
|
128
136
|
}),
|
|
129
137
|
{
|
|
130
138
|
abortSignal: request.abortSignal,
|
|
131
|
-
extractionDeadlineMs:
|
|
139
|
+
extractionDeadlineMs: deadlineAt,
|
|
132
140
|
reason: "access_force_flush",
|
|
133
141
|
deadlineStage: "buffer_drain",
|
|
134
142
|
onDeadline: cancelScopedPendingObserveExtractions,
|
|
@@ -154,7 +162,7 @@ export async function extractionForceFlush(
|
|
|
154
162
|
),
|
|
155
163
|
{
|
|
156
164
|
abortSignal: request.abortSignal,
|
|
157
|
-
extractionDeadlineMs:
|
|
165
|
+
extractionDeadlineMs: deadlineAt,
|
|
158
166
|
reason: "access_force_flush",
|
|
159
167
|
deadlineStage: "pending_observe_extraction",
|
|
160
168
|
onDeadline: () => {
|
|
@@ -172,11 +180,11 @@ export async function extractionForceFlush(
|
|
|
172
180
|
() =>
|
|
173
181
|
buffer.clearRetainedTurnsForSession(request.sessionKey, namespacesEnabled ? scope.principal : undefined, {
|
|
174
182
|
abortSignal: request.abortSignal,
|
|
175
|
-
deadlineMs:
|
|
183
|
+
deadlineMs: deadlineAt,
|
|
176
184
|
}),
|
|
177
185
|
{
|
|
178
186
|
abortSignal: request.abortSignal,
|
|
179
|
-
extractionDeadlineMs:
|
|
187
|
+
extractionDeadlineMs: deadlineAt,
|
|
180
188
|
reason: "access_force_flush",
|
|
181
189
|
deadlineStage: "retained_turn_cleanup",
|
|
182
190
|
}
|
package/src/access-mcp.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { sharedContextMcpTools } from "./access-mcp-shared-context-tools.js";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import {
|
|
4
|
-
MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
|
|
4
|
+
MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
|
|
5
|
+
MCP_ADMIN_OPS_TOOLS,
|
|
5
6
|
MCP_GIT_CONTEXT_SCHEMA_PROPS_IGNORED,
|
|
6
7
|
} from "./access-mcp-admin-tools.js";
|
|
7
8
|
import { readFile } from "node:fs/promises";
|
|
@@ -10,7 +11,12 @@ import type { Readable, Writable } from "node:stream";
|
|
|
10
11
|
// (memory_get / memory_search / memory_store) as a side effect; callTool
|
|
11
12
|
// dispatches migrated tools through the registry (issue #1525).
|
|
12
13
|
import { type OperationName, getOperation } from "./access-boundary.js";
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
assertOperationAllowed,
|
|
16
|
+
capabilityAllowsOp,
|
|
17
|
+
enforceNamespaceAllowList,
|
|
18
|
+
tokenCapabilityStore,
|
|
19
|
+
} from "./access-token-capabilities.js";
|
|
14
20
|
import {
|
|
15
21
|
type ActionConfidenceRequest,
|
|
16
22
|
type CapsuleExportRequest,
|
|
@@ -53,9 +59,14 @@ import {
|
|
|
53
59
|
withToolAliases,
|
|
54
60
|
} from "./access-mcp-tool-names.js";
|
|
55
61
|
import { MCP_READ_ONLY_TOOL_SUFFIXES } from "./mcp-read-only-tools.js";
|
|
56
|
-
import { MEETINGS_MCP_TOOLS } from "./meetings/mcp-tools.js";
|
|
62
|
+
import { MEETINGS_MCP_TOOLS } from "./meetings/mcp-tools.js";
|
|
63
|
+
import { DEEP_RECALL_MCP_TOOLS } from "./deep-recall-mcp-tools.js";
|
|
64
|
+
import { RECALL_NAVIGATION_MCP_TOOLS } from "./recall-navigation-mcp-tools.js";
|
|
65
|
+
import { MEMORY_BROWSE_MCP_TOOLS } from "./memory-browse-mcp-tools.js";
|
|
57
66
|
import { WEARABLES_MCP_TOOLS } from "./wearables/mcp-tools.js";
|
|
58
|
-
import { WHO_KNOWS_MCP_TOOLS } from "./who-knows.js";
|
|
67
|
+
import { WHO_KNOWS_MCP_TOOLS } from "./who-knows.js";
|
|
68
|
+
import { LOCATION_MCP_TOOLS } from "./location/mcp-tools.js";
|
|
69
|
+
import { STANDUP_MCP_TOOLS } from "./standup/mcp-tools.js";
|
|
59
70
|
import { RECALL_WHY_MCP_TOOLS } from "./access-recall-diagnostics.js";
|
|
60
71
|
import { PROMOTION_CANDIDATES_MCP_TOOLS } from "./memory-subject.js";
|
|
61
72
|
import { EXTERNAL_WIKI_MCP_TOOLS } from "./external-wiki-mcp-tools.js";
|
|
@@ -170,13 +181,26 @@ export const MCP_MIGRATED_OPERATIONS: Readonly<Record<string, OperationName>> =
|
|
|
170
181
|
// Fully migrated through the strict-schema boundary (#1668).
|
|
171
182
|
"engram.recall": "recall",
|
|
172
183
|
"engram.recall_explain": "recall_explain",
|
|
173
|
-
"engram.set_coding_context": "set_coding_context",
|
|
174
|
-
"engram.
|
|
175
|
-
"engram.
|
|
176
|
-
"engram.
|
|
177
|
-
"engram.
|
|
178
|
-
"engram.
|
|
179
|
-
"engram.
|
|
184
|
+
"engram.set_coding_context": "set_coding_context",
|
|
185
|
+
"engram.recall_tier_explain": "recall_tier_explain",
|
|
186
|
+
"engram.recall_xray": "recall_xray",
|
|
187
|
+
"engram.recall_why": "recall_why",
|
|
188
|
+
"engram.who_knows": "who_knows",
|
|
189
|
+
"engram.promotion_candidates": "promotion_candidates",
|
|
190
|
+
"engram.wearables_status": "wearables_status",
|
|
191
|
+
"engram.wearables_sync": "wearables_sync",
|
|
192
|
+
"engram.location_status": "location_status",
|
|
193
|
+
"engram.location_check": "location_check",
|
|
194
|
+
"engram.location_sync": "location_sync",
|
|
195
|
+
"engram.location_backfill": "location_backfill",
|
|
196
|
+
"engram.location_day": "location_day",
|
|
197
|
+
"engram.transcript_day": "transcript_day",
|
|
198
|
+
"engram.transcript_search": "transcript_search",
|
|
199
|
+
"engram.transcript_memories": "transcript_memories",
|
|
200
|
+
"engram.meetings_list": "meetings_list",
|
|
201
|
+
"engram.meetings_get": "meetings_get",
|
|
202
|
+
"engram.meetings_build": "meetings_build",
|
|
203
|
+
"engram.standup": "standup",
|
|
180
204
|
"engram.action_confidence": "action_confidence",
|
|
181
205
|
"engram.chatgpt_memory_inspector": "chatgpt_memory_inspector",
|
|
182
206
|
"engram.day_summary": "day_summary",
|
|
@@ -187,7 +211,8 @@ export const MCP_MIGRATED_OPERATIONS: Readonly<Record<string, OperationName>> =
|
|
|
187
211
|
"engram.entity_synthesis_run": "entity_synthesis_run",
|
|
188
212
|
"engram.procedure_mining_run": "procedure_mining_run",
|
|
189
213
|
"engram.pattern_reinforcement_run": "pattern_reinforcement_run",
|
|
190
|
-
"engram.procedural_stats": "procedural_stats",
|
|
214
|
+
"engram.procedural_stats": "procedural_stats",
|
|
215
|
+
"engram.procedure_library_maintenance": "procedure_library_maintenance",
|
|
191
216
|
"engram.memory_timeline": "memory_timeline",
|
|
192
217
|
"engram.suggestion_submit": "suggestion_submit",
|
|
193
218
|
"engram.entity_get": "entity_get",
|
|
@@ -249,7 +274,14 @@ export const MCP_MIGRATED_OPERATIONS: Readonly<Record<string, OperationName>> =
|
|
|
249
274
|
"engram.console_state": "console_state",
|
|
250
275
|
"engram.dreams_status": "dreams_status",
|
|
251
276
|
"engram.dreams_run": "dreams_run",
|
|
252
|
-
...SUPPORT_PASSPORT_MCP_MIGRATED_OPERATIONS,
|
|
277
|
+
...SUPPORT_PASSPORT_MCP_MIGRATED_OPERATIONS,
|
|
278
|
+
...MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
|
|
279
|
+
"engram.deep_recall": "deep_recall",
|
|
280
|
+
"engram.memory_expand": "memory_expand",
|
|
281
|
+
"engram.memory_traverse": "memory_traverse",
|
|
282
|
+
"engram.memory_ls": "memory_ls",
|
|
283
|
+
"engram.memory_tree": "memory_tree",
|
|
284
|
+
"engram.memory_find": "memory_find",
|
|
253
285
|
"engram.memory_chat": "chat_message",
|
|
254
286
|
};
|
|
255
287
|
|
|
@@ -570,7 +602,8 @@ export class EngramMcpServer {
|
|
|
570
602
|
},
|
|
571
603
|
stateView: {
|
|
572
604
|
type: "boolean",
|
|
573
|
-
description:
|
|
605
|
+
description:
|
|
606
|
+
"Opt in to state-aware recall views (issue #1952); ORs with the recallStateViews config flag.",
|
|
574
607
|
},
|
|
575
608
|
},
|
|
576
609
|
required: ["query"],
|
|
@@ -690,7 +723,15 @@ export class EngramMcpServer {
|
|
|
690
723
|
additionalProperties: false,
|
|
691
724
|
},
|
|
692
725
|
},
|
|
693
|
-
...WEARABLES_MCP_TOOLS,
|
|
726
|
+
...WEARABLES_MCP_TOOLS,
|
|
727
|
+
...MEETINGS_MCP_TOOLS,
|
|
728
|
+
...WHO_KNOWS_MCP_TOOLS,
|
|
729
|
+
...PROMOTION_CANDIDATES_MCP_TOOLS,
|
|
730
|
+
...LOCATION_MCP_TOOLS,
|
|
731
|
+
...STANDUP_MCP_TOOLS,
|
|
732
|
+
...DEEP_RECALL_MCP_TOOLS,
|
|
733
|
+
...(service.recallNavigationEnabled !== false ? RECALL_NAVIGATION_MCP_TOOLS : []),
|
|
734
|
+
...MEMORY_BROWSE_MCP_TOOLS,
|
|
694
735
|
...RECALL_WHY_MCP_TOOLS,
|
|
695
736
|
...(service.supportPassportEnabled ? SUPPORT_PASSPORT_MCP_TOOLS : []),
|
|
696
737
|
{
|
|
@@ -1089,7 +1130,11 @@ export class EngramMcpServer {
|
|
|
1089
1130
|
namespace: { type: "string" },
|
|
1090
1131
|
cwd: { type: "string", description: "Working directory for auto git-context resolution." },
|
|
1091
1132
|
projectTag: { type: "string", description: "Project tag for non-git project scoping." },
|
|
1092
|
-
deadlineMs: {
|
|
1133
|
+
deadlineMs: {
|
|
1134
|
+
type: "number",
|
|
1135
|
+
minimum: 0,
|
|
1136
|
+
description: "Budget in milliseconds from now; the flush aborts when it elapses.",
|
|
1137
|
+
},
|
|
1093
1138
|
},
|
|
1094
1139
|
required: ["sessionKey"],
|
|
1095
1140
|
additionalProperties: false,
|
|
@@ -1375,7 +1420,12 @@ export class EngramMcpServer {
|
|
|
1375
1420
|
description:
|
|
1376
1421
|
"QMD collection. With namespaces enabled, omitted, base, and 'global' searches stay scoped to readable namespaces; namespace-derived collections require matching namespace access.",
|
|
1377
1422
|
},
|
|
1378
|
-
mode: {
|
|
1423
|
+
mode: {
|
|
1424
|
+
type: "string",
|
|
1425
|
+
enum: ["search", "hybrid", "bm25", "vector"],
|
|
1426
|
+
description:
|
|
1427
|
+
"Ranking mode; omitted uses the backend default. Not supported with 'collection' on a flat corpus.",
|
|
1428
|
+
},
|
|
1379
1429
|
},
|
|
1380
1430
|
required: ["query"],
|
|
1381
1431
|
additionalProperties: false,
|
|
@@ -1587,9 +1637,16 @@ export class EngramMcpServer {
|
|
|
1587
1637
|
type: "object",
|
|
1588
1638
|
properties: {
|
|
1589
1639
|
since: { type: "string", description: "Lookback window (e.g. 'yesterday', '3d', '1w', '24h')." },
|
|
1590
|
-
focus: {
|
|
1640
|
+
focus: {
|
|
1641
|
+
type: "string",
|
|
1642
|
+
description:
|
|
1643
|
+
"Optional focus filter (e.g. 'person:Jane Doe', 'project:remnic-core', 'topic:retrieval').",
|
|
1644
|
+
},
|
|
1591
1645
|
namespace: { type: "string" },
|
|
1592
|
-
includeLocation: {
|
|
1646
|
+
includeLocation: {
|
|
1647
|
+
type: "boolean",
|
|
1648
|
+
description: "Opt-in: append matched location place names (location gates apply).",
|
|
1649
|
+
},
|
|
1593
1650
|
format: { type: "string", enum: ["markdown", "json"] },
|
|
1594
1651
|
maxFollowups: {
|
|
1595
1652
|
type: "number",
|
|
@@ -2256,9 +2313,10 @@ export class EngramMcpServer {
|
|
|
2256
2313
|
// token's ops allow-list via the same map callTool uses. Unrestricted
|
|
2257
2314
|
// tokens (ops axis absent) see everything; unmapped tool ⇒ "" ⇒ hidden.
|
|
2258
2315
|
const caps = tokenCapabilityStore.getStore();
|
|
2259
|
-
const tools =
|
|
2260
|
-
|
|
2261
|
-
|
|
2316
|
+
const tools =
|
|
2317
|
+
caps?.ops === undefined
|
|
2318
|
+
? this.tools
|
|
2319
|
+
: this.tools.filter((t) => capabilityAllowsOp(caps, MCP_MIGRATED_OPERATIONS[toLegacyToolName(t.name)] ?? ""));
|
|
2262
2320
|
return { jsonrpc: "2.0", id, result: { tools } };
|
|
2263
2321
|
}
|
|
2264
2322
|
if (method === "resources/list") {
|
|
@@ -2370,7 +2428,7 @@ export class EngramMcpServer {
|
|
|
2370
2428
|
options?.enforceWriteQuota,
|
|
2371
2429
|
options?.recordWriteCommit,
|
|
2372
2430
|
options?.sourceConnector,
|
|
2373
|
-
options?.abortSignal
|
|
2431
|
+
options?.abortSignal
|
|
2374
2432
|
);
|
|
2375
2433
|
if (isReadOnlyToolName(name)) {
|
|
2376
2434
|
throwMcpAbort(options?.abortSignal, "MCP request aborted before response");
|
|
@@ -2588,7 +2646,7 @@ export class EngramMcpServer {
|
|
|
2588
2646
|
enforceWriteQuota?: () => void | Promise<void>,
|
|
2589
2647
|
recordWriteCommit?: () => void,
|
|
2590
2648
|
sourceConnector?: string,
|
|
2591
|
-
abortSignal?: AbortSignal
|
|
2649
|
+
abortSignal?: AbortSignal
|
|
2592
2650
|
): Promise<unknown> {
|
|
2593
2651
|
const migrated = MCP_MIGRATED_OPERATIONS[toLegacyToolName(name)];
|
|
2594
2652
|
if (!migrated) {
|
|
@@ -2604,8 +2662,7 @@ export class EngramMcpServer {
|
|
|
2604
2662
|
const visible = this.tools
|
|
2605
2663
|
.filter(
|
|
2606
2664
|
(t) =>
|
|
2607
|
-
caps?.ops === undefined
|
|
2608
|
-
|| capabilityAllowsOp(caps, MCP_MIGRATED_OPERATIONS[toLegacyToolName(t.name)] ?? ""),
|
|
2665
|
+
caps?.ops === undefined || capabilityAllowsOp(caps, MCP_MIGRATED_OPERATIONS[toLegacyToolName(t.name)] ?? "")
|
|
2609
2666
|
)
|
|
2610
2667
|
.map((t) => t.name);
|
|
2611
2668
|
throw new Error(unknownToolError(name, visible));
|
|
@@ -2641,7 +2698,7 @@ export class EngramMcpServer {
|
|
|
2641
2698
|
enforceNamespaceAllowList(
|
|
2642
2699
|
tokenCapabilityStore.getStore(),
|
|
2643
2700
|
scope?.namespace,
|
|
2644
|
-
this.service.configRef?.defaultNamespace
|
|
2701
|
+
this.service.configRef?.defaultNamespace
|
|
2645
2702
|
);
|
|
2646
2703
|
}
|
|
2647
2704
|
const chatResult = await processChatMessage({
|
|
@@ -2689,7 +2746,12 @@ export class EngramMcpServer {
|
|
|
2689
2746
|
service: this.service,
|
|
2690
2747
|
authenticatedPrincipal: effectivePrincipal,
|
|
2691
2748
|
...(enforceWriteQuota || recordWriteCommit
|
|
2692
|
-
? {
|
|
2749
|
+
? {
|
|
2750
|
+
hooks: {
|
|
2751
|
+
...(enforceWriteQuota ? { enforceWriteQuota } : {}),
|
|
2752
|
+
...(recordWriteCommit ? { recordWriteCommit } : {}),
|
|
2753
|
+
},
|
|
2754
|
+
}
|
|
2693
2755
|
: {}),
|
|
2694
2756
|
...(sourceConnector ? { sourceConnector } : {}),
|
|
2695
2757
|
...(abortSignal ? { abortSignal } : {}),
|
|
@@ -511,11 +511,11 @@ test("health surfaces extraction liveness as degraded when the buffer is non-emp
|
|
|
511
511
|
assert.equal(health.extraction.oldestBufferedTurnAgeMs, 10_000);
|
|
512
512
|
assert.ok(
|
|
513
513
|
health.extraction.degradedReason !== null && health.extraction.degradedReason.length > 0,
|
|
514
|
-
"degraded reason is populated"
|
|
514
|
+
"degraded reason is populated"
|
|
515
515
|
);
|
|
516
516
|
const scopedHealth = await tokenCapabilityStore.run(
|
|
517
517
|
{ version: TOKEN_CAPABILITIES_VERSION, namespaces: ["default"] },
|
|
518
|
-
() => service.health()
|
|
518
|
+
() => service.health()
|
|
519
519
|
);
|
|
520
520
|
assert.equal(scopedHealth.extraction.lastExtractionAt, null);
|
|
521
521
|
assert.equal(scopedHealth.extraction.degraded, true);
|
|
@@ -562,7 +562,7 @@ test("health reports extraction liveness ok when the buffer is empty (nothing to
|
|
|
562
562
|
assert.equal(health.extraction.lastExtractionAt, oldTs);
|
|
563
563
|
const scopedHealth = await tokenCapabilityStore.run(
|
|
564
564
|
{ version: TOKEN_CAPABILITIES_VERSION, namespaces: ["default"] },
|
|
565
|
-
() => service.health()
|
|
565
|
+
() => service.health()
|
|
566
566
|
);
|
|
567
567
|
assert.equal(scopedHealth.extraction.degraded, health.extraction.degraded);
|
|
568
568
|
assert.equal(scopedHealth.extraction.lastExtractionAt, null);
|
|
@@ -685,7 +685,7 @@ test("health reports extraction liveness degraded when the buffer read fails (§
|
|
|
685
685
|
assert.match(health.extraction.degradedReason ?? "", /buffer file corrupt/);
|
|
686
686
|
const scopedHealth = await tokenCapabilityStore.run(
|
|
687
687
|
{ version: TOKEN_CAPABILITIES_VERSION, namespaces: ["default"] },
|
|
688
|
-
() => service.health()
|
|
688
|
+
() => service.health()
|
|
689
689
|
);
|
|
690
690
|
assert.equal(scopedHealth.extraction.lastExtractionAt, null);
|
|
691
691
|
assert.match(scopedHealth.extraction.degradedReason ?? "", /extraction buffer unreadable/);
|
|
@@ -722,7 +722,7 @@ test("health reports extraction liveness degraded when the watermark (meta) read
|
|
|
722
722
|
assert.match(health.extraction.degradedReason ?? "", /meta\.json unreadable/);
|
|
723
723
|
const scopedHealth = await tokenCapabilityStore.run(
|
|
724
724
|
{ version: TOKEN_CAPABILITIES_VERSION, namespaces: ["default"] },
|
|
725
|
-
() => service.health()
|
|
725
|
+
() => service.health()
|
|
726
726
|
);
|
|
727
727
|
assert.equal(scopedHealth.extraction.lastExtractionAt, null);
|
|
728
728
|
assert.match(scopedHealth.extraction.degradedReason ?? "", /extraction watermark unreadable/);
|
|
@@ -731,3 +731,39 @@ test("health reports extraction liveness degraded when the watermark (meta) read
|
|
|
731
731
|
await rm(memoryDir, { recursive: true, force: true });
|
|
732
732
|
}
|
|
733
733
|
});
|
|
734
|
+
|
|
735
|
+
test("health surfaces extraction-LLM availability and last failure reason (#3140)", async () => {
|
|
736
|
+
const {
|
|
737
|
+
getExtractionLlmHealth,
|
|
738
|
+
recordExtractionLlmFailure,
|
|
739
|
+
recordExtractionLlmSuccess,
|
|
740
|
+
resetExtractionLlmHealthForTests,
|
|
741
|
+
} = await import("./extraction-llm-health.js");
|
|
742
|
+
const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-health-llm-"));
|
|
743
|
+
const makeService = () =>
|
|
744
|
+
new EngramAccessService({
|
|
745
|
+
config: parseConfig({ memoryDir }),
|
|
746
|
+
qmd: makeQmd({}),
|
|
747
|
+
async getStorage() {
|
|
748
|
+
return { dir: memoryDir };
|
|
749
|
+
},
|
|
750
|
+
} as unknown as Orchestrator);
|
|
751
|
+
try {
|
|
752
|
+
resetExtractionLlmHealthForTests();
|
|
753
|
+
recordExtractionLlmFailure("no_models", Date.now());
|
|
754
|
+
const unhealthy = await makeService().health();
|
|
755
|
+
assert.equal(unhealthy.extraction.llmReachable, false);
|
|
756
|
+
assert.equal(unhealthy.extraction.lastFailureReason, "no_models");
|
|
757
|
+
assert.equal(unhealthy.extraction.lastFailureAt, getExtractionLlmHealth().lastFailureAt);
|
|
758
|
+
|
|
759
|
+
// A recovered extractor reads reachable with no stale reason.
|
|
760
|
+
recordExtractionLlmSuccess();
|
|
761
|
+
const healthy = await makeService().health();
|
|
762
|
+
assert.equal(healthy.extraction.llmReachable, true);
|
|
763
|
+
assert.equal(healthy.extraction.lastFailureReason, null);
|
|
764
|
+
assert.equal(healthy.extraction.lastFailureAt, null);
|
|
765
|
+
} finally {
|
|
766
|
+
resetExtractionLlmHealthForTests();
|
|
767
|
+
await rm(memoryDir, { recursive: true, force: true });
|
|
768
|
+
}
|
|
769
|
+
});
|
|
@@ -20,6 +20,7 @@ export interface EngramAccessExtractionForceFlushRequest extends CodingScopedWri
|
|
|
20
20
|
sessionKey: string;
|
|
21
21
|
namespace?: string;
|
|
22
22
|
authenticatedPrincipal?: string;
|
|
23
|
+
/** Budget in milliseconds FROM NOW (not an absolute epoch); converted at the force-flush entry (#3140). */
|
|
23
24
|
deadlineMs?: number;
|
|
24
25
|
abortSignal?: AbortSignal;
|
|
25
26
|
/** Internal HTTP hook invoked at the durable commit boundary. */
|