@remnic/core 9.69.10 → 9.69.11
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.d.ts +15 -13
- package/dist/access-admin-ops-surface.js +46 -34
- package/dist/access-authorization-probe.d.ts +13 -11
- package/dist/access-authorization-probe.js +47 -35
- package/dist/access-boundary.d.ts +13 -11
- package/dist/access-boundary.js +46 -34
- package/dist/access-cli.js +108 -97
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +2 -1
- package/dist/access-extraction-force-flush.d.ts +13 -11
- package/dist/access-extraction-force-flush.js +46 -34
- package/dist/access-health-types.d.ts +2 -1
- package/dist/access-http-lcm-compaction.d.ts +13 -11
- package/dist/access-http-lifecycle-flush.d.ts +13 -11
- package/dist/access-http-offline-stream.d.ts +13 -11
- package/dist/access-http-query.d.ts +3 -2
- package/dist/access-http-query.js +48 -36
- package/dist/access-http.d.ts +14 -12
- package/dist/access-http.js +67 -53
- package/dist/access-identity-continuity-surface.d.ts +10 -9
- package/dist/access-identity-continuity-surface.js +46 -34
- package/dist/access-lcm-surface.d.ts +13 -11
- package/dist/access-lcm-surface.js +46 -34
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +13 -11
- package/dist/access-mcp.js +58 -45
- package/dist/access-memory-search-fanout.d.ts +3 -2
- package/dist/{access-namespace-preflight-S8fhQcCo.d.ts → access-namespace-preflight-Cy0yPsaE.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -3
- package/dist/access-namespace-preflight.js +46 -34
- package/dist/access-observe-write-surface.d.ts +15 -13
- package/dist/access-observe-write-surface.js +46 -34
- package/dist/access-offline-manifest.d.ts +10 -9
- package/dist/access-offline-manifest.js +3 -3
- package/dist/access-operations-batch.js +49 -37
- package/dist/access-operations.d.ts +14 -12
- package/dist/access-operations.js +54 -42
- package/dist/access-recall-concurrency.d.ts +13 -11
- package/dist/access-recall-concurrency.js +46 -34
- package/dist/access-recall-response.d.ts +13 -11
- package/dist/access-recall-response.js +46 -34
- package/dist/access-recall-surface.d.ts +13 -11
- package/dist/access-recall-surface.js +46 -34
- package/dist/access-schema.d.ts +18 -1
- package/dist/access-schema.js +7 -5
- package/dist/{access-service-DcfM0Vf0.d.ts → access-service-Cqfk3dD1.d.ts} +25 -8
- package/dist/access-service-helpers.d.ts +13 -11
- package/dist/access-service.d.ts +13 -11
- package/dist/access-service.js +46 -34
- package/dist/access-surface-catalog.d.ts +13 -11
- package/dist/access-surface-catalog.js +50 -36
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +4 -3
- package/dist/action-confidence.d.ts +2 -1
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-recall.d.ts +2 -1
- package/dist/active-recall.js +6 -5
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +2 -1
- package/dist/artifact-search.d.ts +2 -1
- package/dist/behavior-learner.d.ts +2 -1
- package/dist/behavior-signals.d.ts +2 -1
- package/dist/bootstrap.d.ts +10 -9
- package/dist/briefing-window.d.ts +3 -2
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +13 -13
- package/dist/buffer-surprise-report.d.ts +2 -1
- package/dist/buffer-turn-helpers.d.ts +2 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/bulk-import/index.d.ts +4 -3
- package/dist/calibration.d.ts +2 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/{catalog-BmBXTtOs.d.ts → catalog-9X8WpZNO.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +2 -1
- package/dist/causal-consolidation.js +16 -16
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +2 -1
- package/dist/causal-trajectory-graph.js +2 -2
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-D5VPIJN3.js → chunk-227WJVPY.js} +2 -2
- package/dist/{chunk-Y3BWCIY2.js → chunk-2EHDPHMD.js} +2 -2
- package/dist/{chunk-2LKW6OO7.js → chunk-2XJDAEAM.js} +2 -2
- package/dist/{chunk-P23JWI3D.js → chunk-3ITTF7YH.js} +52 -52
- package/dist/{chunk-3DT2F5OI.js → chunk-3YKOFCKP.js} +11 -6
- package/dist/chunk-3YKOFCKP.js.map +1 -0
- package/dist/{chunk-NGP2FPB2.js → chunk-4UVDLNHQ.js} +2 -2
- package/dist/{chunk-HXWOVCS6.js → chunk-4WIKMOE3.js} +44 -22
- package/dist/chunk-4WIKMOE3.js.map +1 -0
- package/dist/{chunk-6RPB2TDG.js → chunk-5HO3QBAD.js} +11 -6
- package/dist/chunk-5HO3QBAD.js.map +1 -0
- package/dist/{chunk-AYWPIH4M.js → chunk-5P2KNFJZ.js} +149 -25
- package/dist/chunk-5P2KNFJZ.js.map +1 -0
- package/dist/{chunk-FJMIQTMH.js → chunk-5YQ7RFSO.js} +2 -2
- package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-EESYTBXV.js → chunk-7NCUHD5U.js} +2 -2
- package/dist/{chunk-X574KX52.js → chunk-7ZMU4XQT.js} +2 -2
- package/dist/{chunk-SG3Z67FB.js → chunk-APZXA4WI.js} +2 -2
- package/dist/{chunk-2QSZNTDO.js → chunk-AU7Q3LSC.js} +4 -4
- package/dist/{chunk-VGMRI4J6.js → chunk-B75VCEX5.js} +4 -4
- package/dist/{chunk-D35XLYQ7.js → chunk-BE4Y6GK6.js} +11 -11
- package/dist/{chunk-ELKD5PCD.js → chunk-BEXFNGQ3.js} +3 -3
- package/dist/{chunk-U5SRTYFS.js → chunk-BFDOBESV.js} +2 -2
- package/dist/{chunk-OLT3YTDH.js → chunk-BIJAWZYW.js} +4 -4
- package/dist/{chunk-FU2NYFX6.js → chunk-BO4PWIJY.js} +3 -3
- package/dist/{chunk-JMAG7WZ7.js → chunk-BX6GW4KC.js} +2 -2
- package/dist/chunk-CC37E3QM.js +198 -0
- package/dist/chunk-CC37E3QM.js.map +1 -0
- package/dist/{chunk-J2R275FN.js → chunk-CTCGHNWN.js} +4 -4
- package/dist/{chunk-X5PIDJ3L.js → chunk-DA4ZMCBU.js} +3 -3
- package/dist/{chunk-IVAW3HBF.js → chunk-DH3V7RCQ.js} +21 -13
- package/dist/chunk-DH3V7RCQ.js.map +1 -0
- package/dist/chunk-DXFG2VGN.js +50 -0
- package/dist/chunk-DXFG2VGN.js.map +1 -0
- package/dist/{chunk-4OFKZAJG.js → chunk-EAARGPWI.js} +2 -1
- package/dist/chunk-EAARGPWI.js.map +1 -0
- package/dist/{chunk-H6RSANGQ.js → chunk-ETZ7KKOS.js} +2 -2
- package/dist/{chunk-K4E3Y3ZX.js → chunk-G7VEQEMG.js} +2 -1
- package/dist/chunk-G7VEQEMG.js.map +1 -0
- package/dist/{chunk-XZBXINXZ.js → chunk-GIC6BASP.js} +4 -4
- package/dist/{chunk-SXQZMC7R.js → chunk-GR4C3FHT.js} +2 -2
- package/dist/{chunk-7DYGPGCT.js → chunk-H5IIBGDM.js} +2 -2
- package/dist/{chunk-CNNXMIS6.js → chunk-HFRGCNFY.js} +10 -10
- package/dist/chunk-HRATODNO.js +28 -0
- package/dist/chunk-HRATODNO.js.map +1 -0
- package/dist/{chunk-MAG6M3B6.js → chunk-HTOWFFAI.js} +2 -2
- package/dist/chunk-HUSTM6PU.js +27 -0
- package/dist/chunk-HUSTM6PU.js.map +1 -0
- package/dist/{chunk-FOCMJEHH.js → chunk-I4QAH4SY.js} +3 -3
- package/dist/{chunk-FSGCXGK6.js → chunk-I6DUKBUI.js} +2 -2
- package/dist/{chunk-VI637ILW.js → chunk-IN673LEP.js} +48 -15
- package/dist/chunk-IN673LEP.js.map +1 -0
- package/dist/{chunk-6FUMA6AA.js → chunk-JGXMA6HL.js} +2 -2
- package/dist/{chunk-TA7UZZMW.js → chunk-JHTF22NQ.js} +2 -2
- package/dist/{chunk-DZ3CNJPB.js → chunk-LDOQE34V.js} +2 -2
- package/dist/{chunk-MEW53VQJ.js → chunk-LDWIPYJ6.js} +7 -7
- package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
- package/dist/{chunk-KJTSWJZN.js → chunk-LF6SHWVV.js} +2 -2
- package/dist/{chunk-G6OZZX7P.js → chunk-LJAP4KSW.js} +2 -2
- package/dist/{chunk-NV6BTBUI.js → chunk-LJNLLNEM.js} +2 -2
- package/dist/{chunk-FFFZEF6B.js → chunk-LUDXSSTW.js} +2 -2
- package/dist/{chunk-PCH2CVCS.js → chunk-LWBSEYW3.js} +6 -6
- package/dist/chunk-M6RORUO5.js +59 -0
- package/dist/chunk-M6RORUO5.js.map +1 -0
- package/dist/{chunk-FMUJGGKW.js → chunk-M7DGN6JZ.js} +3 -3
- package/dist/{chunk-TZIHB2LP.js → chunk-MNH2GM4O.js} +5 -5
- package/dist/{chunk-RACZB5HT.js → chunk-N37X5RU7.js} +4 -4
- package/dist/{chunk-LK4TOYPU.js → chunk-NF3NMAG7.js} +2 -2
- package/dist/{chunk-QL4U3SJA.js → chunk-NHLEFBE2.js} +11 -3
- package/dist/chunk-NHLEFBE2.js.map +1 -0
- package/dist/chunk-NN5CQTAJ.js +42 -0
- package/dist/chunk-NN5CQTAJ.js.map +1 -0
- package/dist/{chunk-AG46P24C.js → chunk-NNBZS3DY.js} +4 -4
- package/dist/{chunk-LZ2JTO7N.js → chunk-OASGWNYL.js} +2 -2
- package/dist/chunk-OEDW4ER7.js +62 -0
- package/dist/chunk-OEDW4ER7.js.map +1 -0
- package/dist/{chunk-C2JCVZWX.js → chunk-OLBZ2WGG.js} +2 -2
- package/dist/{chunk-Z3SQEEB6.js → chunk-OUKBMQ2O.js} +2 -2
- package/dist/{chunk-XXW32OL7.js → chunk-OYV6RKPM.js} +1 -1
- package/dist/chunk-OYV6RKPM.js.map +1 -0
- package/dist/{chunk-2Z3DG5CQ.js → chunk-P6GKRT2H.js} +1 -1
- package/dist/{chunk-UGA6PZTX.js → chunk-P7LVYPIX.js} +3 -3
- package/dist/{chunk-26JWBSWD.js → chunk-PGCZLHRB.js} +11 -3
- package/dist/chunk-PGCZLHRB.js.map +1 -0
- package/dist/{chunk-VE45LRCE.js → chunk-QRDSXR3V.js} +2 -2
- package/dist/{chunk-KS67VHXA.js → chunk-QUVWFZOU.js} +2 -2
- package/dist/{chunk-AI4QFDPR.js → chunk-R7FXPG4T.js} +2 -2
- package/dist/chunk-RF2SMMPP.js +37 -0
- package/dist/chunk-RF2SMMPP.js.map +1 -0
- package/dist/{chunk-X66BHMAU.js → chunk-RJ57OOCD.js} +2 -2
- package/dist/chunk-S5G2LAL7.js +354 -0
- package/dist/chunk-S5G2LAL7.js.map +1 -0
- package/dist/{chunk-VXMKW7YN.js → chunk-TRLCMLX7.js} +2 -2
- package/dist/{chunk-ELCMVOQT.js → chunk-V3HUBF7T.js} +2 -2
- package/dist/{chunk-KMIAD7JR.js → chunk-VHAKBUBD.js} +2 -2
- package/dist/{chunk-GS5IFIVE.js → chunk-VYD63IFH.js} +3 -3
- package/dist/chunk-VZIAVM72.js +49 -0
- package/dist/chunk-VZIAVM72.js.map +1 -0
- package/dist/chunk-WTWQA7BB.js +28 -0
- package/dist/chunk-WTWQA7BB.js.map +1 -0
- package/dist/{chunk-TBRG2SYY.js → chunk-X4FIZAVQ.js} +94 -52
- package/dist/chunk-X4FIZAVQ.js.map +1 -0
- package/dist/{chunk-WSFPNCRA.js → chunk-XFPHV65N.js} +2 -2
- package/dist/{chunk-JCUG7AXZ.js → chunk-XJJYSX6F.js} +4 -4
- package/dist/{chunk-I6DURYZI.js → chunk-XMIAU4CO.js} +2 -2
- package/dist/{chunk-PJIGYPO5.js → chunk-XQGFIAG7.js} +2 -2
- package/dist/{chunk-B2URC6LJ.js → chunk-YWN3GYI2.js} +2 -2
- package/dist/{chunk-TG6JEJDV.js → chunk-Z33VUMKY.js} +3 -3
- package/dist/{cli-CFpMhqz5.d.ts → cli-Dk-lM_tI.d.ts} +5 -5
- package/dist/cli.d.ts +15 -13
- package/dist/cli.js +88 -77
- package/dist/coding/export-okf-codegraph.d.ts +2 -1
- package/dist/coding/export-okf-codegraph.js +13 -13
- package/dist/coding/pre-action-gate.d.ts +2 -1
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +15 -14
- package/dist/compounding/preference-consolidator.d.ts +2 -1
- package/dist/compression-optimizer.d.ts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.js +6 -5
- package/dist/connectors/codex-materialize-runner.d.ts +2 -1
- package/dist/connectors/codex-materialize-runner.js +13 -13
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +13 -13
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/contradiction/index.d.ts +4 -3
- package/dist/converge-config.d.ts +2 -1
- package/dist/convergence-refresh.d.ts +3 -2
- package/dist/convergence-refresh.js +15 -15
- package/dist/conversation-index/backend.d.ts +2 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +2 -1
- package/dist/conversation-index/faiss-adapter.d.ts +2 -1
- package/dist/conversation-index/indexer.d.ts +2 -1
- package/dist/conversation-index/search.d.ts +2 -1
- package/dist/corpus-watermark.d.ts +2 -1
- package/dist/corpus-watermark.js +15 -15
- package/dist/cross-lingual-recall.d.ts +2 -1
- package/dist/day-summary.d.ts +2 -1
- package/dist/deep-recall-config.d.ts +32 -0
- package/dist/deep-recall-config.js +12 -0
- package/dist/deep-recall-http-glue.d.ts +170 -0
- package/dist/deep-recall-http-glue.js +31 -0
- package/dist/deep-recall-http-glue.js.map +1 -0
- package/dist/deep-recall-mcp-tools.d.ts +144 -0
- package/dist/deep-recall-mcp-tools.js +8 -0
- package/dist/deep-recall-mcp-tools.js.map +1 -0
- package/dist/deep-recall-policy-llm.d.ts +37 -0
- package/dist/deep-recall-policy-llm.js +19 -0
- package/dist/deep-recall-policy-llm.js.map +1 -0
- package/dist/deep-recall-renderer.d.ts +16 -0
- package/dist/deep-recall-renderer.js +8 -0
- package/dist/deep-recall-renderer.js.map +1 -0
- package/dist/deep-recall-seeds.d.ts +83 -0
- package/dist/deep-recall-seeds.js +8 -0
- package/dist/deep-recall-seeds.js.map +1 -0
- package/dist/deep-recall.d.ts +97 -0
- package/dist/deep-recall.js +13 -0
- package/dist/deep-recall.js.map +1 -0
- package/dist/delinearize.d.ts +2 -1
- package/dist/dependency-propagation-config.d.ts +2 -1
- package/dist/{dependency-propagation-delivery-BC3bCEet.d.ts → dependency-propagation-delivery-BZGUecZf.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +2 -1
- package/dist/direct-answer.d.ts +2 -1
- package/dist/embedding-fallback.d.ts +2 -1
- package/dist/enrichment/index.d.ts +2 -1
- package/dist/entity-origin-fields.d.ts +2 -1
- package/dist/entity-retrieval.d.ts +3 -2
- package/dist/entity-retrieval.js +13 -13
- package/dist/entity-schema.d.ts +2 -1
- package/dist/episodic-context.d.ts +2 -1
- package/dist/eval-trajectory-contracts.d.ts +2 -1
- package/dist/eval-trajectory-store.d.ts +2 -1
- package/dist/eval-trajectory.d.ts +2 -1
- package/dist/explicit-capture.d.ts +10 -9
- package/dist/external-wiki-access.d.ts +13 -11
- package/dist/external-wiki-access.js +47 -35
- package/dist/external-wiki-collection-registration.d.ts +2 -1
- package/dist/external-wiki-collection.d.ts +2 -1
- package/dist/external-wiki-mcp-tools.d.ts +13 -11
- package/dist/extraction-error-classification.d.ts +2 -1
- package/dist/extraction-faithfulness.d.ts +2 -1
- package/dist/extraction-judge-telemetry.d.ts +2 -1
- package/dist/extraction-judge-training.d.ts +2 -1
- package/dist/extraction-judge.d.ts +2 -1
- package/dist/extraction-liveness.d.ts +2 -1
- package/dist/extraction-normalization.d.ts +2 -1
- package/dist/extraction-prompt.d.ts +2 -1
- package/dist/extraction-source-grounding-rules.d.ts +2 -1
- package/dist/extraction-source-grounding.d.ts +2 -1
- package/dist/extraction.d.ts +2 -1
- package/dist/extraction.js +15 -15
- package/dist/fallback-llm.d.ts +2 -1
- package/dist/graph-dashboard-diff.d.ts +2 -1
- package/dist/graph-dashboard-key.d.ts +2 -1
- package/dist/graph-dashboard-parser.d.ts +2 -1
- package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-FXGELBFA.js} +4 -4
- package/dist/graph-edge-decay-FXGELBFA.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +2 -1
- package/dist/graph-path-reconstruction.d.ts +2 -1
- package/dist/graph-path-scoring.d.ts +2 -1
- package/dist/graph-snapshot.d.ts +2 -1
- package/dist/graph-snapshot.js +3 -3
- package/dist/graph.d.ts +2 -1
- package/dist/graph.js +2 -2
- package/dist/harmonic-construction.js +3 -3
- package/dist/harmonic-retrieval.d.ts +38 -2
- package/dist/harmonic-retrieval.js +12 -3
- package/dist/importance.d.ts +2 -1
- package/dist/importers/index.d.ts +2 -1
- package/dist/in-flight-reads.d.ts +2 -1
- package/dist/{index-D4hS9uxK.d.ts → index-B4iTvT-w.d.ts} +2 -2
- package/dist/index.d.ts +25 -23
- package/dist/index.js +126 -115
- package/dist/intent.d.ts +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/tools.d.ts +2 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/live-connectors-runner.d.ts +2 -1
- package/dist/local-llm.d.ts +2 -1
- package/dist/local-model-endpoint.d.ts +2 -1
- package/dist/location/index.d.ts +4 -3
- package/dist/location/index.js +15 -15
- package/dist/maintenance/memory-governance.d.ts +2 -1
- package/dist/maintenance/memory-governance.js +13 -13
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -13
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +14 -14
- package/dist/{maintenance-BRcc3Hx8.d.ts → maintenance-BBpNqEeJ.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +13 -11
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +2 -1
- package/dist/memory-cache.d.ts +2 -1
- package/dist/memory-controller.d.ts +2 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/memory-projection-store.d.ts +2 -1
- package/dist/memory-provenance.d.ts +2 -1
- package/dist/memory-snapshot.d.ts +2 -1
- package/dist/memory-subject-cli.d.ts +13 -11
- package/dist/memory-subject.d.ts +13 -11
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +2 -1
- package/dist/namespaces/migrate.d.ts +4 -3
- package/dist/namespaces/migrate.js +14 -14
- package/dist/namespaces/principal.d.ts +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +9 -9
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +13 -13
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/offline-sync-impression-drain.d.ts +2 -1
- package/dist/offline-sync.js +2 -2
- package/dist/operator-doctor-corpus.d.ts +2 -1
- package/dist/operator-doctor-corpus.js +16 -16
- package/dist/operator-doctor-replica.d.ts +2 -1
- package/dist/operator-toolkit.d.ts +4 -3
- package/dist/operator-toolkit.js +29 -28
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +21 -21
- package/dist/{orchestrator-Btq9lzAN.d.ts → orchestrator-DglY1H0w.d.ts} +8 -8
- package/dist/orchestrator.d.ts +10 -9
- package/dist/orchestrator.js +108 -97
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/{pipeline-CZoNdFb5.d.ts → pipeline-C7qRsy6g.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +2 -1
- package/dist/proactive-contention.d.ts +2 -1
- package/dist/provenance.d.ts +2 -1
- package/dist/{public-http-C9-CHc40.d.ts → public-http-CPpCsi35.d.ts} +1 -1
- package/dist/{qmd-VIjSCKIE.d.ts → qmd-YRLTa3AE.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +3 -2
- package/dist/qmd-recall-cache.d.ts +2 -1
- package/dist/qmd.d.ts +3 -2
- package/dist/recall-concurrency-config.d.ts +2 -1
- package/dist/recall-deep-expand-select.js +4 -44
- package/dist/recall-deep-expand-select.js.map +1 -1
- package/dist/recall-deep-frontier.js +4 -23
- package/dist/recall-deep-frontier.js.map +1 -1
- package/dist/recall-deep-rewrite.js +4 -23
- package/dist/recall-deep-rewrite.js.map +1 -1
- package/dist/recall-disclosure-escalation.d.ts +2 -1
- package/dist/recall-explain-renderer.d.ts +2 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +2 -1
- package/dist/recall-navigate-access.d.ts +2 -1
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.d.ts +2 -1
- package/dist/recall-navigate-disclosure.js +1 -1
- package/dist/recall-navigate.d.ts +2 -1
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-planner-llm.d.ts +2 -1
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-tag-filter.d.ts +2 -1
- package/dist/recall-timings.d.ts +2 -1
- package/dist/recall-xray-cli.d.ts +2 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +2 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +2 -1
- package/dist/reconcile/manifest.d.ts +2 -1
- package/dist/reconcile/plan.d.ts +2 -1
- package/dist/replay/normalizers/chatgpt.d.ts +2 -1
- package/dist/replay/normalizers/claude.d.ts +2 -1
- package/dist/replay/normalizers/openclaw.d.ts +2 -1
- package/dist/replay/normalizers/shared.d.ts +2 -1
- package/dist/replay/runner.d.ts +2 -1
- package/dist/replay/types.d.ts +2 -1
- package/dist/replica-divergence.d.ts +2 -1
- package/dist/replica-peers-config.d.ts +2 -1
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resume-bundles.js +7 -6
- package/dist/retrieval-agents.d.ts +3 -2
- package/dist/retrieval-tiers.d.ts +2 -1
- package/dist/routing/engine.d.ts +2 -1
- package/dist/routing/store.d.ts +2 -1
- package/dist/salvage-envelope.d.ts +2 -1
- package/dist/{scope-profiles-DqbxQXIS.d.ts → scope-profiles-BVvqVzJX.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +2 -1
- package/dist/search/factory.d.ts +2 -1
- package/dist/search/factory.js +8 -8
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +13 -13
- package/dist/search/lancedb-backend.d.ts +2 -1
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.d.ts +2 -1
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/orama-backend.d.ts +2 -1
- package/dist/search/orama-backend.js +2 -2
- package/dist/search/port.d.ts +2 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/{semantic-consolidation-DW3rEUoW.d.ts → semantic-consolidation-BzCI6Kuu.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -2
- package/dist/semantic-consolidation.js +14 -14
- package/dist/semantic-rule-promotion.js +13 -13
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +13 -13
- package/dist/{service-B2vJU_Bx.d.ts → service-DQ3Gscy5.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +2 -1
- package/dist/session-observer-state.d.ts +2 -1
- package/dist/shared-context/manager.d.ts +37 -1
- package/dist/shared-context/manager.js +2 -1
- package/dist/signal.d.ts +2 -1
- package/dist/source-agent-qualifier.d.ts +2 -1
- package/dist/source-agent-qualifier.js +13 -13
- package/dist/standup/build.js +13 -13
- package/dist/{storage-6fn7BPmb.d.ts → storage-DmTbQdD0.d.ts} +1 -1
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +12 -12
- package/dist/subject-config.d.ts +2 -1
- package/dist/summarizer.d.ts +2 -1
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/support-passport/index.d.ts +16 -14
- package/dist/support-passport/index.js +49 -37
- package/dist/temporal-supersession.d.ts +3 -2
- package/dist/temporal-timeline-recall.d.ts +2 -1
- package/dist/temporal-validity.d.ts +2 -1
- package/dist/threading.d.ts +2 -1
- package/dist/tier-migration.d.ts +3 -2
- package/dist/tier-routing.d.ts +2 -1
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.d.ts +2 -1
- package/dist/transfer/export-okf.js +14 -14
- package/dist/trust-score-stage.d.ts +2 -1
- package/dist/trust-score.d.ts +2 -1
- package/dist/{types-eM7QIcX2.d.ts → types-CLRTESSD.d.ts} +3 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/verified-recall.js +13 -13
- package/dist/who-knows-cli.d.ts +13 -11
- package/dist/who-knows-cli.js +14 -14
- package/dist/who-knows.d.ts +13 -11
- package/dist/who-knows.js +13 -13
- package/dist/write-envelope.d.ts +2 -1
- package/package.json +2 -2
- package/src/access-boundary.ts +1 -0
- package/src/access-http.ts +5 -5
- package/src/access-mcp-output-schemas.ts +1 -0
- package/src/access-mcp.ts +3 -3
- package/src/access-operations-batch.ts +3 -1
- package/src/access-schema.ts +12 -0
- package/src/access-service.ts +162 -5
- package/src/access-surface-catalog.ts +2 -0
- package/src/cli/deep-recall-commands.ts +60 -0
- package/src/cli.ts +2 -2
- package/src/config.test.ts +19 -0
- package/src/config.ts +7 -0
- package/src/deep-recall-config.ts +83 -0
- package/src/deep-recall-http-glue.ts +75 -0
- package/src/deep-recall-mcp-tools.ts +33 -0
- package/src/deep-recall-policy-llm.ts +65 -0
- package/src/deep-recall-renderer.ts +41 -0
- package/src/deep-recall-seeds.ts +134 -0
- package/src/deep-recall-surface.test.ts +902 -0
- package/src/deep-recall.test.ts +348 -0
- package/src/deep-recall.ts +572 -0
- package/src/harmonic-retrieval.ts +78 -25
- package/src/mcp-read-only-tools.ts +1 -0
- package/src/shared-context/envelope-at.test.ts +23 -0
- package/src/shared-context/envelope-at.ts +12 -6
- package/src/shared-context/envelope-io.ts +184 -0
- package/src/shared-context/envelope-wiring.test.ts +193 -0
- package/src/shared-context/governance.ts +28 -9
- package/src/shared-context/iso-instant.ts +43 -0
- package/src/shared-context/manager.ts +74 -15
- package/src/shared-context/provenance.ts +3 -26
- package/src/shared-context/write-origin.test.ts +145 -0
- package/src/types.ts +3 -1
- package/dist/chunk-26JWBSWD.js.map +0 -1
- package/dist/chunk-3DT2F5OI.js.map +0 -1
- package/dist/chunk-4OFKZAJG.js.map +0 -1
- package/dist/chunk-6RPB2TDG.js.map +0 -1
- package/dist/chunk-AYWPIH4M.js.map +0 -1
- package/dist/chunk-HXWOVCS6.js.map +0 -1
- package/dist/chunk-IVAW3HBF.js.map +0 -1
- package/dist/chunk-K4E3Y3ZX.js.map +0 -1
- package/dist/chunk-QL4U3SJA.js.map +0 -1
- package/dist/chunk-TBRG2SYY.js.map +0 -1
- package/dist/chunk-VI637ILW.js.map +0 -1
- package/dist/chunk-XXW32OL7.js.map +0 -1
- /package/dist/{chunk-D5VPIJN3.js.map → chunk-227WJVPY.js.map} +0 -0
- /package/dist/{chunk-Y3BWCIY2.js.map → chunk-2EHDPHMD.js.map} +0 -0
- /package/dist/{chunk-2LKW6OO7.js.map → chunk-2XJDAEAM.js.map} +0 -0
- /package/dist/{chunk-P23JWI3D.js.map → chunk-3ITTF7YH.js.map} +0 -0
- /package/dist/{chunk-NGP2FPB2.js.map → chunk-4UVDLNHQ.js.map} +0 -0
- /package/dist/{chunk-FJMIQTMH.js.map → chunk-5YQ7RFSO.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-EESYTBXV.js.map → chunk-7NCUHD5U.js.map} +0 -0
- /package/dist/{chunk-X574KX52.js.map → chunk-7ZMU4XQT.js.map} +0 -0
- /package/dist/{chunk-SG3Z67FB.js.map → chunk-APZXA4WI.js.map} +0 -0
- /package/dist/{chunk-2QSZNTDO.js.map → chunk-AU7Q3LSC.js.map} +0 -0
- /package/dist/{chunk-VGMRI4J6.js.map → chunk-B75VCEX5.js.map} +0 -0
- /package/dist/{chunk-D35XLYQ7.js.map → chunk-BE4Y6GK6.js.map} +0 -0
- /package/dist/{chunk-ELKD5PCD.js.map → chunk-BEXFNGQ3.js.map} +0 -0
- /package/dist/{chunk-U5SRTYFS.js.map → chunk-BFDOBESV.js.map} +0 -0
- /package/dist/{chunk-OLT3YTDH.js.map → chunk-BIJAWZYW.js.map} +0 -0
- /package/dist/{chunk-FU2NYFX6.js.map → chunk-BO4PWIJY.js.map} +0 -0
- /package/dist/{chunk-JMAG7WZ7.js.map → chunk-BX6GW4KC.js.map} +0 -0
- /package/dist/{chunk-J2R275FN.js.map → chunk-CTCGHNWN.js.map} +0 -0
- /package/dist/{chunk-X5PIDJ3L.js.map → chunk-DA4ZMCBU.js.map} +0 -0
- /package/dist/{chunk-H6RSANGQ.js.map → chunk-ETZ7KKOS.js.map} +0 -0
- /package/dist/{chunk-XZBXINXZ.js.map → chunk-GIC6BASP.js.map} +0 -0
- /package/dist/{chunk-SXQZMC7R.js.map → chunk-GR4C3FHT.js.map} +0 -0
- /package/dist/{chunk-7DYGPGCT.js.map → chunk-H5IIBGDM.js.map} +0 -0
- /package/dist/{chunk-CNNXMIS6.js.map → chunk-HFRGCNFY.js.map} +0 -0
- /package/dist/{chunk-MAG6M3B6.js.map → chunk-HTOWFFAI.js.map} +0 -0
- /package/dist/{chunk-FOCMJEHH.js.map → chunk-I4QAH4SY.js.map} +0 -0
- /package/dist/{chunk-FSGCXGK6.js.map → chunk-I6DUKBUI.js.map} +0 -0
- /package/dist/{chunk-6FUMA6AA.js.map → chunk-JGXMA6HL.js.map} +0 -0
- /package/dist/{chunk-TA7UZZMW.js.map → chunk-JHTF22NQ.js.map} +0 -0
- /package/dist/{chunk-DZ3CNJPB.js.map → chunk-LDOQE34V.js.map} +0 -0
- /package/dist/{chunk-MEW53VQJ.js.map → chunk-LDWIPYJ6.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
- /package/dist/{chunk-KJTSWJZN.js.map → chunk-LF6SHWVV.js.map} +0 -0
- /package/dist/{chunk-G6OZZX7P.js.map → chunk-LJAP4KSW.js.map} +0 -0
- /package/dist/{chunk-NV6BTBUI.js.map → chunk-LJNLLNEM.js.map} +0 -0
- /package/dist/{chunk-FFFZEF6B.js.map → chunk-LUDXSSTW.js.map} +0 -0
- /package/dist/{chunk-PCH2CVCS.js.map → chunk-LWBSEYW3.js.map} +0 -0
- /package/dist/{chunk-FMUJGGKW.js.map → chunk-M7DGN6JZ.js.map} +0 -0
- /package/dist/{chunk-TZIHB2LP.js.map → chunk-MNH2GM4O.js.map} +0 -0
- /package/dist/{chunk-RACZB5HT.js.map → chunk-N37X5RU7.js.map} +0 -0
- /package/dist/{chunk-LK4TOYPU.js.map → chunk-NF3NMAG7.js.map} +0 -0
- /package/dist/{chunk-AG46P24C.js.map → chunk-NNBZS3DY.js.map} +0 -0
- /package/dist/{chunk-LZ2JTO7N.js.map → chunk-OASGWNYL.js.map} +0 -0
- /package/dist/{chunk-C2JCVZWX.js.map → chunk-OLBZ2WGG.js.map} +0 -0
- /package/dist/{chunk-Z3SQEEB6.js.map → chunk-OUKBMQ2O.js.map} +0 -0
- /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-P6GKRT2H.js.map} +0 -0
- /package/dist/{chunk-UGA6PZTX.js.map → chunk-P7LVYPIX.js.map} +0 -0
- /package/dist/{chunk-VE45LRCE.js.map → chunk-QRDSXR3V.js.map} +0 -0
- /package/dist/{chunk-KS67VHXA.js.map → chunk-QUVWFZOU.js.map} +0 -0
- /package/dist/{chunk-AI4QFDPR.js.map → chunk-R7FXPG4T.js.map} +0 -0
- /package/dist/{chunk-X66BHMAU.js.map → chunk-RJ57OOCD.js.map} +0 -0
- /package/dist/{chunk-VXMKW7YN.js.map → chunk-TRLCMLX7.js.map} +0 -0
- /package/dist/{chunk-ELCMVOQT.js.map → chunk-V3HUBF7T.js.map} +0 -0
- /package/dist/{chunk-KMIAD7JR.js.map → chunk-VHAKBUBD.js.map} +0 -0
- /package/dist/{chunk-GS5IFIVE.js.map → chunk-VYD63IFH.js.map} +0 -0
- /package/dist/{chunk-WSFPNCRA.js.map → chunk-XFPHV65N.js.map} +0 -0
- /package/dist/{chunk-JCUG7AXZ.js.map → chunk-XJJYSX6F.js.map} +0 -0
- /package/dist/{chunk-I6DURYZI.js.map → chunk-XMIAU4CO.js.map} +0 -0
- /package/dist/{chunk-PJIGYPO5.js.map → chunk-XQGFIAG7.js.map} +0 -0
- /package/dist/{chunk-B2URC6LJ.js.map → chunk-YWN3GYI2.js.map} +0 -0
- /package/dist/{chunk-TG6JEJDV.js.map → chunk-Z33VUMKY.js.map} +0 -0
- /package/dist/{graph-edge-decay-DGTBFALQ.js.map → deep-recall-config.js.map} +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep-recall HTTP glue (issue #2332) — route body lives here so
|
|
3
|
+
* access-http.ts stays at its structural ceiling (same seam as
|
|
4
|
+
* meetings/http-glue.ts and location/http-glue.ts).
|
|
5
|
+
*
|
|
6
|
+
* Input errors map to 400; everything else rethrows so backend faults keep
|
|
7
|
+
* flowing to the global 500 handler. `deepRecall.enabled` gating lives in
|
|
8
|
+
* EngramAccessService — this module only translates transport shape.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
12
|
+
import { deepRecallRequestSchema } from "./access-schema.js";
|
|
13
|
+
import { EngramAccessInputError } from "./access-errors.js";
|
|
14
|
+
import type { EngramAccessService } from "./access-service.js";
|
|
15
|
+
|
|
16
|
+
type RespondJson = (res: ServerResponse, status: number, payload: unknown) => void;
|
|
17
|
+
type ReadJsonBody = (req: IncomingMessage) => Promise<unknown>;
|
|
18
|
+
|
|
19
|
+
function coerceMaxSteps(raw: unknown): number | undefined {
|
|
20
|
+
if (raw === undefined || raw === null) return undefined;
|
|
21
|
+
const value = typeof raw === "string" ? Number(raw) : raw;
|
|
22
|
+
if (typeof value !== "number" || !Number.isFinite(value) || !Number.isInteger(value) || value < 0) {
|
|
23
|
+
throw new EngramAccessInputError("maxSteps must be a non-negative integer");
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export async function respondDeepRecall(
|
|
29
|
+
req: IncomingMessage,
|
|
30
|
+
res: ServerResponse,
|
|
31
|
+
respondJson: RespondJson,
|
|
32
|
+
readJsonBody: ReadJsonBody,
|
|
33
|
+
service: EngramAccessService,
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the caller scope for a body-supplied namespace/sessionKey. The
|
|
36
|
+
* body `namespace` is user-controlled, so it MUST flow through the SAME
|
|
37
|
+
* effective-namespace allow-list gate as the query-string value (issue
|
|
38
|
+
* #1850 finding 2 / #2332 review): a scoped bearer that passes an allowed
|
|
39
|
+
* `?namespace=` while setting a different `namespace` in the body would
|
|
40
|
+
* otherwise read another tenant. access-http supplies the gate and applies
|
|
41
|
+
* the query-string fallback, so this module never selects a namespace of
|
|
42
|
+
* its own. Throws 403 when the effective namespace is not permitted.
|
|
43
|
+
*
|
|
44
|
+
* `authenticatedPrincipal` is the identity the transport authenticated, and
|
|
45
|
+
* it MUST reach the service: authorization and the audit trail derive from
|
|
46
|
+
* the presenting principal, never from the client-supplied `sessionKey`.
|
|
47
|
+
* Dropping it let a crafted key matching another principal rule read that
|
|
48
|
+
* principal's namespaces, and made a legitimate namespace-enabled request
|
|
49
|
+
* with no session key fail as unauthenticated.
|
|
50
|
+
*/
|
|
51
|
+
scopeFor: (
|
|
52
|
+
bodyNamespace?: string,
|
|
53
|
+
bodySessionKey?: string,
|
|
54
|
+
) => { namespace?: string; sessionKey?: string; authenticatedPrincipal?: string },
|
|
55
|
+
): Promise<void> {
|
|
56
|
+
const parsed = deepRecallRequestSchema.safeParse(await readJsonBody(req));
|
|
57
|
+
if (!parsed.success) {
|
|
58
|
+
respondJson(
|
|
59
|
+
res,
|
|
60
|
+
400,
|
|
61
|
+
{ error: "invalid_request", detail: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ") },
|
|
62
|
+
);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const maxSteps = coerceMaxSteps(parsed.data.maxSteps);
|
|
66
|
+
const scope = scopeFor(parsed.data.namespace, parsed.data.sessionKey);
|
|
67
|
+
const result = await service.deepRecall({
|
|
68
|
+
query: parsed.data.query,
|
|
69
|
+
...(maxSteps !== undefined ? { maxSteps } : {}),
|
|
70
|
+
namespace: scope.namespace,
|
|
71
|
+
sessionKey: scope.sessionKey,
|
|
72
|
+
authenticatedPrincipal: scope.authenticatedPrincipal,
|
|
73
|
+
});
|
|
74
|
+
respondJson(res, 200, result);
|
|
75
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep-recall MCP tool definition (issue #2332) — extracted from
|
|
3
|
+
* access-mcp.ts so the surface file stays at its structural ceiling.
|
|
4
|
+
* Spread back into `this.tools` (`...DEEP_RECALL_MCP_TOOLS`); the
|
|
5
|
+
* migrated-operation mapping spreads into MCP_MIGRATED_OPERATIONS.
|
|
6
|
+
* The `remnic.` canonical alias is minted by withToolAliases at
|
|
7
|
+
* tools/list time (same as meetings).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { McpTool } from "./access-mcp.js";
|
|
11
|
+
|
|
12
|
+
export const DEEP_RECALL_MCP_TOOLS: McpTool[] = [
|
|
13
|
+
{
|
|
14
|
+
name: "engram.deep_recall",
|
|
15
|
+
description:
|
|
16
|
+
"Budgeted REFINE/EXPAND/STOP multi-hop retrieval over the cue-anchor graph (issue #2332). Slow and thorough (seconds; several LLM calls) — opt in when a question warrants deep search, not for routine recall. Returns ranked entries plus a per-step trace. Typed error when deepRecall.enabled is off.",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
query: { type: "string", description: "The question to retrieve for. Required." },
|
|
21
|
+
maxSteps: {
|
|
22
|
+
type: "integer",
|
|
23
|
+
minimum: 0,
|
|
24
|
+
description: "Optional policy-step ceiling; cannot exceed the configured deepRecall.maxSteps.",
|
|
25
|
+
},
|
|
26
|
+
namespace: { type: "string", description: "Caller namespace to scope this operation to." },
|
|
27
|
+
sessionKey: { type: "string", description: "Session key for principal/namespace resolution." },
|
|
28
|
+
},
|
|
29
|
+
required: ["query"],
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
];
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy-call LLM routing for deep recall (issue #2332).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `extraction-judge.ts` `callJudgeLlm` exactly: local client first
|
|
5
|
+
* (json_object response format) unless modelSource is "gateway", then the
|
|
6
|
+
* fallback client with the shared background-task chain options. Never a
|
|
7
|
+
* raw OpenAI client. Returns null when both legs fail — the loop treats
|
|
8
|
+
* that as a stop, never a crash.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { gatewayTaskChainOptions, type FallbackLlmClient } from "./fallback-llm.js";
|
|
12
|
+
import type { LocalLlmClient } from "./local-llm.js";
|
|
13
|
+
import type { PluginConfig } from "./types.js";
|
|
14
|
+
|
|
15
|
+
export const DEEP_RECALL_POLICY_SYSTEM_PROMPT =
|
|
16
|
+
"You are the retrieval policy for a long-term memory system. Given the question, the current working set of retrieved memories, and the frontier of anchor-linked candidates, choose exactly one action: REFINE (rewrite the query), EXPAND (follow named frontier nodes), or STOP. Respond with JSON only.";
|
|
17
|
+
|
|
18
|
+
export async function callDeepRecallPolicyLlm(input: {
|
|
19
|
+
statePrompt: string;
|
|
20
|
+
config: PluginConfig;
|
|
21
|
+
localLlm: LocalLlmClient | null;
|
|
22
|
+
fallbackLlm: FallbackLlmClient | null;
|
|
23
|
+
timeoutMs: number;
|
|
24
|
+
}): Promise<string | null> {
|
|
25
|
+
const messages: Array<{ role: "system" | "user"; content: string }> = [
|
|
26
|
+
{ role: "system", content: DEEP_RECALL_POLICY_SYSTEM_PROMPT },
|
|
27
|
+
{ role: "user", content: input.statePrompt },
|
|
28
|
+
];
|
|
29
|
+
const timeout = input.timeoutMs > 0 ? input.timeoutMs : undefined;
|
|
30
|
+
const skipLocal = input.config.modelSource === "gateway";
|
|
31
|
+
const gatewayChain = gatewayTaskChainOptions(input.config);
|
|
32
|
+
|
|
33
|
+
if (input.localLlm && !skipLocal) {
|
|
34
|
+
try {
|
|
35
|
+
const result = await input.localLlm.chatCompletion(messages, {
|
|
36
|
+
temperature: 0.1,
|
|
37
|
+
maxTokens: 1024,
|
|
38
|
+
...(timeout ? { timeoutMs: timeout } : {}),
|
|
39
|
+
responseFormat: { type: "json_object" },
|
|
40
|
+
operation: "deep-recall-policy",
|
|
41
|
+
});
|
|
42
|
+
if (result?.content) return result.content;
|
|
43
|
+
} catch {
|
|
44
|
+
// fall through to the gateway leg
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (input.fallbackLlm) {
|
|
49
|
+
try {
|
|
50
|
+
const result = await input.fallbackLlm.chatCompletion(
|
|
51
|
+
messages as Array<{ role: "system" | "user" | "assistant"; content: string }>,
|
|
52
|
+
{
|
|
53
|
+
temperature: 0.1,
|
|
54
|
+
maxTokens: 1024,
|
|
55
|
+
...(timeout ? { timeoutMs: timeout } : {}),
|
|
56
|
+
...gatewayChain,
|
|
57
|
+
},
|
|
58
|
+
);
|
|
59
|
+
if (result?.content) return result.content;
|
|
60
|
+
} catch {
|
|
61
|
+
// both legs failed — caller treats null as a stop
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared markdown renderer for deep recall (issue #2332).
|
|
3
|
+
*
|
|
4
|
+
* Rule 22 (AGENTS.md): never fork formatting — CLI text output, MCP text
|
|
5
|
+
* output, and any later surface all render through this one module.
|
|
6
|
+
* Deterministic: entries in result order, trace in step order.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { DeepRecallResult } from "./deep-recall.js";
|
|
10
|
+
|
|
11
|
+
export function renderDeepRecallResult(result: DeepRecallResult): string {
|
|
12
|
+
if (!result.ok) {
|
|
13
|
+
return [`# Deep recall`, ``, `- error: ${result.error ?? "unknown"}`, ``].join("\n");
|
|
14
|
+
}
|
|
15
|
+
const lines: string[] = ["# Deep recall", ""];
|
|
16
|
+
if (result.entries.length === 0) {
|
|
17
|
+
lines.push("No memories retrieved.", "");
|
|
18
|
+
} else {
|
|
19
|
+
lines.push("## Memories", "");
|
|
20
|
+
for (const [index, entry] of result.entries.entries()) {
|
|
21
|
+
const via = entry.viaAnchor ? ` via anchor "${entry.viaAnchor}"` : "";
|
|
22
|
+
lines.push(
|
|
23
|
+
`${index + 1}. **${entry.memoryId}** (score ${entry.score.toFixed(3)}, origin ${entry.origin}${via})`,
|
|
24
|
+
);
|
|
25
|
+
lines.push(` ${entry.content.replace(/\s+/g, " ").trim().slice(0, 400)}`);
|
|
26
|
+
}
|
|
27
|
+
lines.push("");
|
|
28
|
+
}
|
|
29
|
+
lines.push("## Trace", "");
|
|
30
|
+
if (result.trace.length === 0) {
|
|
31
|
+
lines.push("(empty)");
|
|
32
|
+
} else {
|
|
33
|
+
for (const step of result.trace) {
|
|
34
|
+
lines.push(
|
|
35
|
+
`- step ${step.step}: ${step.action} — ${step.detail} (workingSet=${step.workingSetSize}, frontier=${step.frontierSize}, ${step.durationMs}ms)`,
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
lines.push("");
|
|
40
|
+
return lines.join("\n");
|
|
41
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep-recall seed retrieval (issue #2332 review).
|
|
3
|
+
*
|
|
4
|
+
* Seeds route through the SAME namespace search router the rest of the read
|
|
5
|
+
* path uses, so a non-default caller searches its own suffixed collection
|
|
6
|
+
* instead of the base (default-namespace) collection — read and write resolve
|
|
7
|
+
* through one resolver, never two (§30).
|
|
8
|
+
*
|
|
9
|
+
* Each hit is resolved to a real memory id through the shared QMD result
|
|
10
|
+
* resolver (`QmdResultResolver.readQmdResultMemory`), per hit and bounded by
|
|
11
|
+
* the requested limit, instead of pre-scanning the whole namespace corpus to
|
|
12
|
+
* build a path index. With namespaces disabled the fanout queries the QMD
|
|
13
|
+
* backend directly, so hits keep the indexer's raw path forms; the resolver
|
|
14
|
+
* decodes `qmd://<collection>/` URIs and `<collection>/`-prefixed relatives,
|
|
15
|
+
* and the two forms it cannot decode (`qmd:///`, a leading `/`) are stripped
|
|
16
|
+
* for one retry. A hit with no path is dropped: its namespace membership
|
|
17
|
+
* cannot be verified, and a bare docid from a foreign collection must never
|
|
18
|
+
* enter the working set as a resolved memory.
|
|
19
|
+
*
|
|
20
|
+
* An unavailable namespace backend (or a missing collection) contributes an
|
|
21
|
+
* empty result set and reports itself only through `execution.onDegradation`,
|
|
22
|
+
* so the observer is REQUIRED here: without it a dead index is indistinguishable
|
|
23
|
+
* from a healthy empty one and deep recall would answer `ok: true` with zero
|
|
24
|
+
* entries instead of the advertised `backend_unavailable` failure.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import type { DeepRecallSeedHit } from "./deep-recall.js";
|
|
28
|
+
import type { SearchDegradation } from "./search/port.js";
|
|
29
|
+
|
|
30
|
+
/** Namespace-scoped search entrypoint (satisfied by `Orchestrator.searchAcrossNamespaces`). */
|
|
31
|
+
export interface DeepRecallSeedRouter {
|
|
32
|
+
searchAcrossNamespaces(options: {
|
|
33
|
+
query: string;
|
|
34
|
+
namespaces: string[];
|
|
35
|
+
maxResults?: number;
|
|
36
|
+
execution?: { onDegradation?: (degradation: SearchDegradation) => void };
|
|
37
|
+
}): Promise<ReadonlyArray<{ path?: string; docid?: string; score?: number }>>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Namespace-scoped storage read (satisfied by `StorageManager`). */
|
|
41
|
+
export interface DeepRecallSeedStorage {
|
|
42
|
+
readonly dir: string;
|
|
43
|
+
readMemoryByPath(filePath: string): Promise<{ frontmatter: { id?: string } } | null>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Full QMD hit -> memory resolver (satisfied by `QmdResultResolver#readQmdResultMemory`). */
|
|
47
|
+
export interface DeepRecallSeedResultResolver {
|
|
48
|
+
readQmdResultMemory(
|
|
49
|
+
resultPath: string,
|
|
50
|
+
fallbackStorage: DeepRecallSeedStorage,
|
|
51
|
+
recallNamespaces?: readonly string[],
|
|
52
|
+
preferredNamespace?: string,
|
|
53
|
+
): Promise<{ frontmatter: { id?: string } } | null>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Strip the collection-qualified forms the indexer can emit but
|
|
58
|
+
* `readQmdResultMemory` cannot decode: the empty-hostname `qmd:///` URI and
|
|
59
|
+
* the root-relative `/` path both reach its fallback probe still prefixed and
|
|
60
|
+
* miss. Returns `null` when the path carries no such prefix — including a
|
|
61
|
+
* decodable `qmd://<collection>/` or `<collection>/` form, which the resolver
|
|
62
|
+
* owns, and a foreign collection prefix, which must stay a miss.
|
|
63
|
+
*/
|
|
64
|
+
function collectionPrefixStrippedPath(resultPath: string): string | null {
|
|
65
|
+
const trimmed = resultPath.trim();
|
|
66
|
+
if (trimmed.startsWith("qmd:///")) {
|
|
67
|
+
const relative = trimmed.slice("qmd:///".length).replace(/^\/+/, "");
|
|
68
|
+
return relative.length > 0 ? relative : null;
|
|
69
|
+
}
|
|
70
|
+
if (trimmed.startsWith("/")) {
|
|
71
|
+
const relative = trimmed.replace(/^\/+/, "");
|
|
72
|
+
return relative.length > 0 ? relative : null;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function resolveSeedMemoryId(
|
|
78
|
+
resolver: DeepRecallSeedResultResolver,
|
|
79
|
+
storage: DeepRecallSeedStorage,
|
|
80
|
+
namespace: string,
|
|
81
|
+
resultPath: string | undefined,
|
|
82
|
+
): Promise<string | null> {
|
|
83
|
+
if (typeof resultPath !== "string" || resultPath.length === 0) return null;
|
|
84
|
+
const attempts = [resultPath];
|
|
85
|
+
const stripped = collectionPrefixStrippedPath(resultPath);
|
|
86
|
+
if (stripped !== null) attempts.push(stripped);
|
|
87
|
+
for (const attempt of attempts) {
|
|
88
|
+
const memory = await resolver.readQmdResultMemory(attempt, storage, [namespace]);
|
|
89
|
+
const id = memory?.frontmatter?.id;
|
|
90
|
+
if (typeof id === "string" && id.length > 0) return id;
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function createDeepRecallSeedSearch(deps: {
|
|
96
|
+
namespace: string;
|
|
97
|
+
storage: DeepRecallSeedStorage;
|
|
98
|
+
router: DeepRecallSeedRouter;
|
|
99
|
+
resolver: DeepRecallSeedResultResolver;
|
|
100
|
+
}): (query: string, limit: number) => Promise<DeepRecallSeedHit[]> {
|
|
101
|
+
return async (query, limit) => {
|
|
102
|
+
if (limit <= 0) return [];
|
|
103
|
+
const unavailable: SearchDegradation[] = [];
|
|
104
|
+
const hits = await deps.router.searchAcrossNamespaces({
|
|
105
|
+
query,
|
|
106
|
+
namespaces: [deps.namespace],
|
|
107
|
+
maxResults: limit,
|
|
108
|
+
execution: {
|
|
109
|
+
onDegradation: (degradation) => {
|
|
110
|
+
if (degradation.code === "backend_unavailable") unavailable.push(degradation);
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
// The requested namespace has no usable index: a seed-search failure, which
|
|
115
|
+
// is the one condition deep recall reports as `backend_unavailable`.
|
|
116
|
+
if (unavailable.length > 0) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`deep recall seed search unavailable: ${unavailable.map((d) => d.detail ?? d.code).join("; ")}`,
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const seeds: DeepRecallSeedHit[] = [];
|
|
122
|
+
for (const hit of hits) {
|
|
123
|
+
if (typeof hit.path !== "string" || hit.path.length === 0) continue;
|
|
124
|
+
const memoryId =
|
|
125
|
+
(await resolveSeedMemoryId(deps.resolver, deps.storage, deps.namespace, hit.path)) ?? hit.docid;
|
|
126
|
+
if (typeof memoryId !== "string" || memoryId.length === 0) continue;
|
|
127
|
+
seeds.push({
|
|
128
|
+
memoryId,
|
|
129
|
+
score: typeof hit.score === "number" && Number.isFinite(hit.score) ? hit.score : 0,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return seeds;
|
|
133
|
+
};
|
|
134
|
+
}
|