@remnic/core 9.3.684 → 9.3.686
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-boundary.d.ts +4 -3
- package/dist/access-boundary.js +23 -23
- package/dist/access-cli.js +152 -71
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +3 -2
- package/dist/access-http.js +26 -26
- package/dist/access-mcp.d.ts +14 -3
- package/dist/access-mcp.js +25 -25
- package/dist/access-operations.d.ts +10 -4
- package/dist/access-operations.js +26 -24
- package/dist/access-schema.d.ts +4 -4
- package/dist/{access-service-D-siI-xJ.d.ts → access-service-DmCHJ4cH.d.ts} +106 -39
- package/dist/access-service.d.ts +3 -2
- package/dist/access-service.js +22 -22
- package/dist/access-surface-catalog.d.ts +3 -2
- package/dist/access-surface-catalog.js +2 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +2 -2
- package/dist/{auto-sync-5CJBJMPZ.js → auto-sync-NUQWSFQD.js} +7 -7
- package/dist/bootstrap.d.ts +2 -1
- package/dist/bootstrap.js +2 -2
- package/dist/boxes.js +2 -2
- package/dist/briefing.js +3 -3
- package/dist/buffer.js +2 -2
- package/dist/calibration.js +4 -4
- package/dist/catalog-COqWZlZ6.d.ts +456 -0
- package/dist/causal-behavior.js +4 -4
- package/dist/causal-chain.js +4 -4
- package/dist/causal-consolidation.js +11 -11
- package/dist/causal-retrieval.js +4 -4
- package/dist/causal-trajectory-graph.js +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-ROHLEUTH.js → chunk-2KAYTPPT.js} +10 -10
- package/dist/{chunk-NHQGDVJF.js → chunk-2SJCWLQD.js} +3 -3
- package/dist/{chunk-YTWNKQ2G.js → chunk-3FC6LW6T.js} +2 -2
- package/dist/{chunk-5OE4PYY5.js → chunk-473JIN2U.js} +61 -11
- package/dist/chunk-473JIN2U.js.map +1 -0
- package/dist/{chunk-XEA4Z7JU.js → chunk-4FE2K57M.js} +3 -3
- package/dist/{chunk-WI7JKV2T.js → chunk-4N3TFFPH.js} +2 -2
- package/dist/{chunk-BTVX7ZXZ.js → chunk-4NFVPDIL.js} +4 -4
- package/dist/{chunk-OUWAQVDJ.js → chunk-5CEJH5ZN.js} +2 -2
- package/dist/{chunk-6QM24CP7.js → chunk-6GJS4BFH.js} +2 -2
- package/dist/{chunk-J2FBJ63F.js → chunk-6O6A6YUO.js} +4 -4
- package/dist/{chunk-HQ6NIBL6.js → chunk-7FL4CNPV.js} +2 -2
- package/dist/{chunk-5VDJMYTF.js → chunk-7WWURLG6.js} +3 -3
- package/dist/{chunk-QWRC7GIO.js → chunk-A4HH2EWA.js} +5 -5
- package/dist/{chunk-4SKKVWLQ.js → chunk-AGJH5ISO.js} +2 -2
- package/dist/{chunk-2L3KLWOV.js → chunk-B43NZNMG.js} +54 -92
- package/dist/chunk-B43NZNMG.js.map +1 -0
- package/dist/{chunk-WRE3JPAW.js → chunk-B4XVLHJA.js} +3 -3
- package/dist/{chunk-53FDU4CE.js → chunk-BLIWOONZ.js} +39 -36
- package/dist/chunk-BLIWOONZ.js.map +1 -0
- package/dist/{chunk-AJU4PJGY.js → chunk-BVKCV2ZY.js} +2 -2
- package/dist/{chunk-DQY7NJ5L.js → chunk-CTOQEZSN.js} +2 -2
- package/dist/{chunk-7OGJQP7T.js → chunk-DCWIQFNA.js} +4 -4
- package/dist/{chunk-MHQC2WU2.js → chunk-DKTSR7EK.js} +2 -2
- package/dist/{chunk-RN7MUWON.js → chunk-EHISUJFN.js} +2 -2
- package/dist/{chunk-WLEB7WCG.js → chunk-EO5QWINU.js} +2 -2
- package/dist/{chunk-XKXKSQU7.js → chunk-EXM3CQTZ.js} +2 -2
- package/dist/{chunk-M3FWYURP.js → chunk-FE6DQUNJ.js} +9 -9
- package/dist/{chunk-LCC5EZTT.js → chunk-FIVDN2SM.js} +4 -4
- package/dist/{chunk-3MY4W5V4.js → chunk-FUCUR2OZ.js} +550 -63
- package/dist/chunk-FUCUR2OZ.js.map +1 -0
- package/dist/{chunk-452WDNFO.js → chunk-GG6AJN7A.js} +2 -2
- package/dist/{chunk-2IBGHRIO.js → chunk-GS55WYRL.js} +3 -3
- package/dist/{chunk-IBTZEBUD.js → chunk-HYNHLBKA.js} +2 -2
- package/dist/{chunk-EVWIEEKZ.js → chunk-IQ7WCZRW.js} +2 -2
- package/dist/{chunk-B5XMS73R.js → chunk-IQVQJJL7.js} +2 -2
- package/dist/{chunk-6RHNCKHG.js → chunk-K43PI6DQ.js} +2 -2
- package/dist/{chunk-OIF36KGD.js → chunk-KCQA46NR.js} +2 -2
- package/dist/{chunk-2LDBXPLB.js → chunk-KF74X62T.js} +1 -1
- package/dist/{chunk-3EVIMVQU.js → chunk-KFBOZYME.js} +42 -3
- package/dist/chunk-KFBOZYME.js.map +1 -0
- package/dist/{chunk-MAV46GWQ.js → chunk-KYYL4U6X.js} +2 -2
- package/dist/{chunk-6GC5SGFE.js → chunk-L24JROPR.js} +2 -2
- package/dist/{chunk-Q5ZU3RNY.js → chunk-LQ6JI4VH.js} +2 -2
- package/dist/{chunk-GWKCEM3S.js → chunk-MCQDSY4G.js} +3 -3
- package/dist/{chunk-HP5FMB6L.js → chunk-MDJURR27.js} +2 -2
- package/dist/{chunk-FYEVFGJD.js → chunk-NN7QYW5W.js} +2 -2
- package/dist/chunk-NN7QYW5W.js.map +1 -0
- package/dist/{chunk-2ODBA7MQ.js → chunk-NU3CSQ4H.js} +5 -5
- package/dist/chunk-NU3CSQ4H.js.map +1 -0
- package/dist/{chunk-T2PO5MUF.js → chunk-O7GOFAM3.js} +2 -2
- package/dist/{chunk-Z2OXSMZK.js → chunk-OBXTMFZQ.js} +3 -3
- package/dist/{chunk-K6ZN34WC.js → chunk-OV4D5T7V.js} +3 -3
- package/dist/{chunk-OMLIFZ4I.js → chunk-PH3HOKYW.js} +2 -2
- package/dist/{chunk-C3IW2F5Z.js → chunk-PLBIPT6I.js} +2 -2
- package/dist/{chunk-QY7YA7OL.js → chunk-PNLCEFE4.js} +2 -2
- package/dist/{chunk-AGRPGAKR.js → chunk-PONNZ54D.js} +2 -2
- package/dist/{chunk-XZ4WBBB5.js → chunk-PWFWCGOO.js} +2 -2
- package/dist/{chunk-XWEXT4XU.js → chunk-QANVLERJ.js} +4 -4
- package/dist/{chunk-W4RVMTHR.js → chunk-QRDOSYOR.js} +2 -2
- package/dist/{chunk-OXNOINIP.js → chunk-QVMXQGT7.js} +24 -24
- package/dist/chunk-QVMXQGT7.js.map +1 -0
- package/dist/{chunk-6IMKOIZ6.js → chunk-R6OVFAX6.js} +2 -2
- package/dist/{chunk-5N5DXYDW.js → chunk-S2OU5DZY.js} +31 -10
- package/dist/chunk-S2OU5DZY.js.map +1 -0
- package/dist/{chunk-JOASJWQR.js → chunk-SANZHXY2.js} +2 -2
- package/dist/{chunk-7DTASS5T.js → chunk-SJHM6I4J.js} +2 -2
- package/dist/{chunk-M6BVYHBU.js → chunk-STOEE37X.js} +4 -4
- package/dist/{chunk-GKKAXVAJ.js → chunk-U33LWTQQ.js} +1 -7
- package/dist/chunk-U33LWTQQ.js.map +1 -0
- package/dist/{chunk-LXH3DIF2.js → chunk-U7D7NP4J.js} +2 -2
- package/dist/{chunk-DRD2Q7HQ.js → chunk-UFS7OXGL.js} +2 -2
- package/dist/{chunk-H3HDXD3U.js → chunk-UPTZYUYJ.js} +2 -2
- package/dist/{chunk-3Z7NPD5T.js → chunk-UTYBJR7M.js} +2 -2
- package/dist/{chunk-LN4YGHTM.js → chunk-UUH4YQOF.js} +2 -2
- package/dist/{chunk-6VF75M3X.js → chunk-VGUOEDTU.js} +2 -2
- package/dist/{chunk-44VFF3BB.js → chunk-VILEUJXC.js} +2 -2
- package/dist/{chunk-7SI52C65.js → chunk-VL7DP3OW.js} +2 -2
- package/dist/{chunk-7DHTMOND.js → chunk-VQ34TERH.js} +2 -2
- package/dist/{chunk-6VMIHVGO.js → chunk-VX6OBUDW.js} +2 -2
- package/dist/{chunk-EW5KFXHL.js → chunk-WDXCNJSF.js} +7 -7
- package/dist/{chunk-FMEKEF47.js → chunk-WIHPNY65.js} +79 -3
- package/dist/chunk-WIHPNY65.js.map +1 -0
- package/dist/{chunk-X6IRLNOO.js → chunk-WIWPSQYU.js} +2 -2
- package/dist/{chunk-DOCTITOP.js → chunk-WRFKZEO6.js} +2 -2
- package/dist/{chunk-E6ZDCOHM.js → chunk-XBZQRZ6G.js} +2 -2
- package/dist/{chunk-7YX23JBA.js → chunk-XHYGJVXL.js} +2 -2
- package/dist/{chunk-JD4SCARD.js → chunk-YN4ZT4CW.js} +1 -1
- package/dist/{chunk-YXWAILM4.js → chunk-YOI3ELXF.js} +2 -2
- package/dist/{chunk-XCAZF7KQ.js → chunk-ZA2S2VLL.js} +2 -2
- package/dist/{chunk-BEUDU7Y4.js → chunk-ZCWIH4LH.js} +2 -2
- package/dist/{chunk-V25ZAOSB.js → chunk-ZPTISBQU.js} +5 -5
- package/dist/{cli-ooj6JQBS.d.ts → cli-D8nZ2MPH.d.ts} +2 -2
- package/dist/cli.d.ts +4 -3
- package/dist/cli.js +44 -44
- package/dist/compounding/engine.js +4 -4
- package/dist/compounding/preference-consolidator.js +1 -1
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.js +4 -4
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.js +5 -5
- package/dist/contradiction/index.js +3 -3
- package/dist/{contradiction-scan-AZTGFMPY.js → contradiction-scan-HWGEOUDS.js} +3 -3
- package/dist/conversation-index/backend.js +5 -5
- package/dist/conversation-index/cleanup.js +2 -2
- package/dist/conversation-index/faiss-adapter.js +2 -2
- package/dist/conversation-index/indexer.js +2 -2
- package/dist/conversation-index/search.js +2 -2
- package/dist/day-summary.js +2 -2
- package/dist/embedding-fallback.js +2 -2
- package/dist/entity-retrieval.js +4 -4
- package/dist/explicit-capture.d.ts +2 -1
- package/dist/explicit-capture.js +1 -1
- package/dist/extraction-judge-telemetry.js +2 -2
- package/dist/extraction-judge-training.js +2 -2
- package/dist/extraction-judge.js +5 -5
- package/dist/extraction.js +9 -9
- package/dist/fallback-llm.js +4 -4
- package/dist/{graph-edge-decay-KSVJGCZW.js → graph-edge-decay-D7OESCBR.js} +2 -2
- package/dist/graph-snapshot.js +2 -2
- package/dist/graph.js +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +80 -80
- package/dist/lcm/archive.js +2 -2
- package/dist/lcm/engine.js +5 -5
- package/dist/lcm/index.js +5 -5
- package/dist/lcm/schema.js +2 -2
- package/dist/lcm/summarizer.js +3 -3
- package/dist/local-llm.js +2 -2
- package/dist/logger.js +1 -1
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection.js +5 -5
- package/dist/mcp-memory-inspector-app.d.ts +3 -2
- package/dist/model-registry.js +2 -2
- package/dist/models-json.js +2 -2
- package/dist/namespaces/migrate.d.ts +1 -0
- package/dist/namespaces/migrate.js +16 -16
- package/dist/namespaces/search.js +13 -13
- package/dist/namespaces/storage.d.ts +42 -1
- package/dist/namespaces/storage.js +3 -3
- package/dist/native-knowledge.js +2 -2
- package/dist/negative.js +2 -2
- package/dist/operator-toolkit.js +22 -22
- package/dist/{orchestrator-DIDDvwDw.d.ts → orchestrator-CA6ouzBn.d.ts} +3 -464
- package/dist/orchestrator.d.ts +2 -1
- package/dist/orchestrator.js +61 -61
- package/dist/profiling.js +2 -2
- package/dist/qmd.js +2 -2
- package/dist/recall-planner-llm.js +4 -4
- package/dist/recall-qos.js +2 -2
- package/dist/recall-state.js +2 -2
- package/dist/relevance.js +2 -2
- package/dist/{resolution-IDTEBJFS.js → resolution-MN36NW5P.js} +3 -3
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +4 -4
- package/dist/retrieval-agents.js +2 -2
- package/dist/routing/store.js +2 -2
- package/dist/schemas.d.ts +38 -38
- package/dist/search/embed-helper.js +2 -2
- package/dist/search/factory.js +12 -12
- package/dist/search/index.js +12 -12
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/orama-backend.js +2 -2
- package/dist/search/remote-backend.js +2 -2
- package/dist/semantic-consolidation.js +5 -5
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/session-observer-state.js +2 -2
- package/dist/session-transcript-migration.js +2 -2
- package/dist/shared-context/manager.js +2 -2
- package/dist/storage.d.ts +4 -0
- package/dist/storage.js +2 -2
- package/dist/summarizer.js +7 -7
- package/dist/temporal-supersession.js +2 -2
- package/dist/threading.js +2 -2
- package/dist/transcript.js +2 -2
- package/dist/transfer/types.d.ts +22 -22
- package/dist/verified-recall.js +4 -4
- package/package.json +2 -2
- package/src/access-boundary.ts +2 -1
- package/src/access-cli.ts +94 -4
- package/src/access-http.ts +40 -2
- package/src/access-mcp.ts +55 -2
- package/src/access-operations.ts +66 -0
- package/src/access-service.ts +148 -73
- package/src/access-surface-catalog.test.ts +1 -1
- package/src/access-surface-catalog.ts +2 -0
- package/src/cli.ts +2 -1
- package/src/coding/decision-surfaces.test.ts +279 -0
- package/src/coding/decision-surfaces.ts +475 -0
- package/src/explicit-capture.ts +3 -12
- package/src/logger.ts +13 -4
- package/src/namespaces/catalog.test.ts +2 -2
- package/src/namespaces/storage.ts +81 -0
- package/src/orchestrator.ts +22 -64
- package/src/storage.ts +36 -36
- package/dist/chunk-2L3KLWOV.js.map +0 -1
- package/dist/chunk-2ODBA7MQ.js.map +0 -1
- package/dist/chunk-3EVIMVQU.js.map +0 -1
- package/dist/chunk-3MY4W5V4.js.map +0 -1
- package/dist/chunk-53FDU4CE.js.map +0 -1
- package/dist/chunk-5N5DXYDW.js.map +0 -1
- package/dist/chunk-5OE4PYY5.js.map +0 -1
- package/dist/chunk-FMEKEF47.js.map +0 -1
- package/dist/chunk-FYEVFGJD.js.map +0 -1
- package/dist/chunk-GKKAXVAJ.js.map +0 -1
- package/dist/chunk-OXNOINIP.js.map +0 -1
- /package/dist/{auto-sync-5CJBJMPZ.js.map → auto-sync-NUQWSFQD.js.map} +0 -0
- /package/dist/{chunk-ROHLEUTH.js.map → chunk-2KAYTPPT.js.map} +0 -0
- /package/dist/{chunk-NHQGDVJF.js.map → chunk-2SJCWLQD.js.map} +0 -0
- /package/dist/{chunk-YTWNKQ2G.js.map → chunk-3FC6LW6T.js.map} +0 -0
- /package/dist/{chunk-XEA4Z7JU.js.map → chunk-4FE2K57M.js.map} +0 -0
- /package/dist/{chunk-WI7JKV2T.js.map → chunk-4N3TFFPH.js.map} +0 -0
- /package/dist/{chunk-BTVX7ZXZ.js.map → chunk-4NFVPDIL.js.map} +0 -0
- /package/dist/{chunk-OUWAQVDJ.js.map → chunk-5CEJH5ZN.js.map} +0 -0
- /package/dist/{chunk-6QM24CP7.js.map → chunk-6GJS4BFH.js.map} +0 -0
- /package/dist/{chunk-J2FBJ63F.js.map → chunk-6O6A6YUO.js.map} +0 -0
- /package/dist/{chunk-HQ6NIBL6.js.map → chunk-7FL4CNPV.js.map} +0 -0
- /package/dist/{chunk-5VDJMYTF.js.map → chunk-7WWURLG6.js.map} +0 -0
- /package/dist/{chunk-QWRC7GIO.js.map → chunk-A4HH2EWA.js.map} +0 -0
- /package/dist/{chunk-4SKKVWLQ.js.map → chunk-AGJH5ISO.js.map} +0 -0
- /package/dist/{chunk-WRE3JPAW.js.map → chunk-B4XVLHJA.js.map} +0 -0
- /package/dist/{chunk-AJU4PJGY.js.map → chunk-BVKCV2ZY.js.map} +0 -0
- /package/dist/{chunk-DQY7NJ5L.js.map → chunk-CTOQEZSN.js.map} +0 -0
- /package/dist/{chunk-7OGJQP7T.js.map → chunk-DCWIQFNA.js.map} +0 -0
- /package/dist/{chunk-MHQC2WU2.js.map → chunk-DKTSR7EK.js.map} +0 -0
- /package/dist/{chunk-RN7MUWON.js.map → chunk-EHISUJFN.js.map} +0 -0
- /package/dist/{chunk-WLEB7WCG.js.map → chunk-EO5QWINU.js.map} +0 -0
- /package/dist/{chunk-XKXKSQU7.js.map → chunk-EXM3CQTZ.js.map} +0 -0
- /package/dist/{chunk-M3FWYURP.js.map → chunk-FE6DQUNJ.js.map} +0 -0
- /package/dist/{chunk-LCC5EZTT.js.map → chunk-FIVDN2SM.js.map} +0 -0
- /package/dist/{chunk-452WDNFO.js.map → chunk-GG6AJN7A.js.map} +0 -0
- /package/dist/{chunk-2IBGHRIO.js.map → chunk-GS55WYRL.js.map} +0 -0
- /package/dist/{chunk-IBTZEBUD.js.map → chunk-HYNHLBKA.js.map} +0 -0
- /package/dist/{chunk-EVWIEEKZ.js.map → chunk-IQ7WCZRW.js.map} +0 -0
- /package/dist/{chunk-B5XMS73R.js.map → chunk-IQVQJJL7.js.map} +0 -0
- /package/dist/{chunk-6RHNCKHG.js.map → chunk-K43PI6DQ.js.map} +0 -0
- /package/dist/{chunk-OIF36KGD.js.map → chunk-KCQA46NR.js.map} +0 -0
- /package/dist/{chunk-2LDBXPLB.js.map → chunk-KF74X62T.js.map} +0 -0
- /package/dist/{chunk-MAV46GWQ.js.map → chunk-KYYL4U6X.js.map} +0 -0
- /package/dist/{chunk-6GC5SGFE.js.map → chunk-L24JROPR.js.map} +0 -0
- /package/dist/{chunk-Q5ZU3RNY.js.map → chunk-LQ6JI4VH.js.map} +0 -0
- /package/dist/{chunk-GWKCEM3S.js.map → chunk-MCQDSY4G.js.map} +0 -0
- /package/dist/{chunk-HP5FMB6L.js.map → chunk-MDJURR27.js.map} +0 -0
- /package/dist/{chunk-T2PO5MUF.js.map → chunk-O7GOFAM3.js.map} +0 -0
- /package/dist/{chunk-Z2OXSMZK.js.map → chunk-OBXTMFZQ.js.map} +0 -0
- /package/dist/{chunk-K6ZN34WC.js.map → chunk-OV4D5T7V.js.map} +0 -0
- /package/dist/{chunk-OMLIFZ4I.js.map → chunk-PH3HOKYW.js.map} +0 -0
- /package/dist/{chunk-C3IW2F5Z.js.map → chunk-PLBIPT6I.js.map} +0 -0
- /package/dist/{chunk-QY7YA7OL.js.map → chunk-PNLCEFE4.js.map} +0 -0
- /package/dist/{chunk-AGRPGAKR.js.map → chunk-PONNZ54D.js.map} +0 -0
- /package/dist/{chunk-XZ4WBBB5.js.map → chunk-PWFWCGOO.js.map} +0 -0
- /package/dist/{chunk-XWEXT4XU.js.map → chunk-QANVLERJ.js.map} +0 -0
- /package/dist/{chunk-W4RVMTHR.js.map → chunk-QRDOSYOR.js.map} +0 -0
- /package/dist/{chunk-6IMKOIZ6.js.map → chunk-R6OVFAX6.js.map} +0 -0
- /package/dist/{chunk-JOASJWQR.js.map → chunk-SANZHXY2.js.map} +0 -0
- /package/dist/{chunk-7DTASS5T.js.map → chunk-SJHM6I4J.js.map} +0 -0
- /package/dist/{chunk-M6BVYHBU.js.map → chunk-STOEE37X.js.map} +0 -0
- /package/dist/{chunk-LXH3DIF2.js.map → chunk-U7D7NP4J.js.map} +0 -0
- /package/dist/{chunk-DRD2Q7HQ.js.map → chunk-UFS7OXGL.js.map} +0 -0
- /package/dist/{chunk-H3HDXD3U.js.map → chunk-UPTZYUYJ.js.map} +0 -0
- /package/dist/{chunk-3Z7NPD5T.js.map → chunk-UTYBJR7M.js.map} +0 -0
- /package/dist/{chunk-LN4YGHTM.js.map → chunk-UUH4YQOF.js.map} +0 -0
- /package/dist/{chunk-6VF75M3X.js.map → chunk-VGUOEDTU.js.map} +0 -0
- /package/dist/{chunk-44VFF3BB.js.map → chunk-VILEUJXC.js.map} +0 -0
- /package/dist/{chunk-7SI52C65.js.map → chunk-VL7DP3OW.js.map} +0 -0
- /package/dist/{chunk-7DHTMOND.js.map → chunk-VQ34TERH.js.map} +0 -0
- /package/dist/{chunk-6VMIHVGO.js.map → chunk-VX6OBUDW.js.map} +0 -0
- /package/dist/{chunk-EW5KFXHL.js.map → chunk-WDXCNJSF.js.map} +0 -0
- /package/dist/{chunk-X6IRLNOO.js.map → chunk-WIWPSQYU.js.map} +0 -0
- /package/dist/{chunk-DOCTITOP.js.map → chunk-WRFKZEO6.js.map} +0 -0
- /package/dist/{chunk-E6ZDCOHM.js.map → chunk-XBZQRZ6G.js.map} +0 -0
- /package/dist/{chunk-7YX23JBA.js.map → chunk-XHYGJVXL.js.map} +0 -0
- /package/dist/{chunk-JD4SCARD.js.map → chunk-YN4ZT4CW.js.map} +0 -0
- /package/dist/{chunk-YXWAILM4.js.map → chunk-YOI3ELXF.js.map} +0 -0
- /package/dist/{chunk-XCAZF7KQ.js.map → chunk-ZA2S2VLL.js.map} +0 -0
- /package/dist/{chunk-BEUDU7Y4.js.map → chunk-ZCWIH4LH.js.map} +0 -0
- /package/dist/{chunk-V25ZAOSB.js.map → chunk-ZPTISBQU.js.map} +0 -0
- /package/dist/{contradiction-scan-AZTGFMPY.js.map → contradiction-scan-HWGEOUDS.js.map} +0 -0
- /package/dist/{graph-edge-decay-KSVJGCZW.js.map → graph-edge-decay-D7OESCBR.js.map} +0 -0
- /package/dist/{resolution-IDTEBJFS.js.map → resolution-MN36NW5P.js.map} +0 -0
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
shouldFilterSupersededFromRecall,
|
|
7
7
|
shouldSupersedeExisting,
|
|
8
8
|
supersessionKeysForFact
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3FC6LW6T.js";
|
|
10
10
|
import "./chunk-MDYG7VI7.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-NU3CSQ4H.js";
|
|
12
12
|
import "./chunk-PZ5AY32C.js";
|
|
13
13
|
export {
|
|
14
14
|
applyTemporalSupersession,
|
package/dist/threading.js
CHANGED
package/dist/transcript.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TranscriptManager,
|
|
3
3
|
utcDayRange
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PONNZ54D.js";
|
|
5
5
|
import "./chunk-S4DDLTPX.js";
|
|
6
6
|
import "./chunk-KFY3SGN7.js";
|
|
7
7
|
import "./chunk-FF4KLI5W.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-NU3CSQ4H.js";
|
|
9
9
|
import "./chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
11
11
|
TranscriptManager,
|
package/dist/transfer/types.d.ts
CHANGED
|
@@ -108,6 +108,10 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
108
108
|
path: string;
|
|
109
109
|
}>, "many">;
|
|
110
110
|
}, "strip", z.ZodTypeAny, {
|
|
111
|
+
records: {
|
|
112
|
+
content: string;
|
|
113
|
+
path: string;
|
|
114
|
+
}[];
|
|
111
115
|
manifest: {
|
|
112
116
|
schemaVersion: 1;
|
|
113
117
|
createdAt: string;
|
|
@@ -120,11 +124,11 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
120
124
|
pluginVersion: string;
|
|
121
125
|
includesTranscripts: boolean;
|
|
122
126
|
};
|
|
127
|
+
}, {
|
|
123
128
|
records: {
|
|
124
129
|
content: string;
|
|
125
130
|
path: string;
|
|
126
131
|
}[];
|
|
127
|
-
}, {
|
|
128
132
|
manifest: {
|
|
129
133
|
schemaVersion: 1;
|
|
130
134
|
createdAt: string;
|
|
@@ -137,10 +141,6 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
137
141
|
pluginVersion: string;
|
|
138
142
|
includesTranscripts: boolean;
|
|
139
143
|
};
|
|
140
|
-
records: {
|
|
141
|
-
content: string;
|
|
142
|
-
path: string;
|
|
143
|
-
}[];
|
|
144
144
|
}>;
|
|
145
145
|
type ExportBundleV1 = z.infer<typeof ExportBundleV1Schema>;
|
|
146
146
|
/**
|
|
@@ -313,13 +313,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
313
313
|
peerProfiles: boolean;
|
|
314
314
|
}>;
|
|
315
315
|
}, "strip", z.ZodTypeAny, {
|
|
316
|
+
schemaVersion: string;
|
|
316
317
|
includes: {
|
|
317
318
|
procedural: boolean;
|
|
318
319
|
taxonomy: boolean;
|
|
319
320
|
identityAnchors: boolean;
|
|
320
321
|
peerProfiles: boolean;
|
|
321
322
|
};
|
|
322
|
-
schemaVersion: string;
|
|
323
323
|
id: string;
|
|
324
324
|
description: string;
|
|
325
325
|
version: string;
|
|
@@ -334,13 +334,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
334
334
|
directAnswerEnabled: boolean;
|
|
335
335
|
};
|
|
336
336
|
}, {
|
|
337
|
+
schemaVersion: string;
|
|
337
338
|
includes: {
|
|
338
339
|
procedural: boolean;
|
|
339
340
|
taxonomy: boolean;
|
|
340
341
|
identityAnchors: boolean;
|
|
341
342
|
peerProfiles: boolean;
|
|
342
343
|
};
|
|
343
|
-
schemaVersion: string;
|
|
344
344
|
id: string;
|
|
345
345
|
description: string;
|
|
346
346
|
version: string;
|
|
@@ -464,13 +464,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
464
464
|
peerProfiles: boolean;
|
|
465
465
|
}>;
|
|
466
466
|
}, "strip", z.ZodTypeAny, {
|
|
467
|
+
schemaVersion: string;
|
|
467
468
|
includes: {
|
|
468
469
|
procedural: boolean;
|
|
469
470
|
taxonomy: boolean;
|
|
470
471
|
identityAnchors: boolean;
|
|
471
472
|
peerProfiles: boolean;
|
|
472
473
|
};
|
|
473
|
-
schemaVersion: string;
|
|
474
474
|
id: string;
|
|
475
475
|
description: string;
|
|
476
476
|
version: string;
|
|
@@ -485,13 +485,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
485
485
|
directAnswerEnabled: boolean;
|
|
486
486
|
};
|
|
487
487
|
}, {
|
|
488
|
+
schemaVersion: string;
|
|
488
489
|
includes: {
|
|
489
490
|
procedural: boolean;
|
|
490
491
|
taxonomy: boolean;
|
|
491
492
|
identityAnchors: boolean;
|
|
492
493
|
peerProfiles: boolean;
|
|
493
494
|
};
|
|
494
|
-
schemaVersion: string;
|
|
495
495
|
id: string;
|
|
496
496
|
description: string;
|
|
497
497
|
version: string;
|
|
@@ -518,13 +518,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
518
518
|
pluginVersion: string;
|
|
519
519
|
includesTranscripts: boolean;
|
|
520
520
|
capsule: {
|
|
521
|
+
schemaVersion: string;
|
|
521
522
|
includes: {
|
|
522
523
|
procedural: boolean;
|
|
523
524
|
taxonomy: boolean;
|
|
524
525
|
identityAnchors: boolean;
|
|
525
526
|
peerProfiles: boolean;
|
|
526
527
|
};
|
|
527
|
-
schemaVersion: string;
|
|
528
528
|
id: string;
|
|
529
529
|
description: string;
|
|
530
530
|
version: string;
|
|
@@ -551,13 +551,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
551
551
|
pluginVersion: string;
|
|
552
552
|
includesTranscripts: boolean;
|
|
553
553
|
capsule: {
|
|
554
|
+
schemaVersion: string;
|
|
554
555
|
includes: {
|
|
555
556
|
procedural: boolean;
|
|
556
557
|
taxonomy: boolean;
|
|
557
558
|
identityAnchors: boolean;
|
|
558
559
|
peerProfiles: boolean;
|
|
559
560
|
};
|
|
560
|
-
schemaVersion: string;
|
|
561
561
|
id: string;
|
|
562
562
|
description: string;
|
|
563
563
|
version: string;
|
|
@@ -683,13 +683,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
683
683
|
peerProfiles: boolean;
|
|
684
684
|
}>;
|
|
685
685
|
}, "strip", z.ZodTypeAny, {
|
|
686
|
+
schemaVersion: string;
|
|
686
687
|
includes: {
|
|
687
688
|
procedural: boolean;
|
|
688
689
|
taxonomy: boolean;
|
|
689
690
|
identityAnchors: boolean;
|
|
690
691
|
peerProfiles: boolean;
|
|
691
692
|
};
|
|
692
|
-
schemaVersion: string;
|
|
693
693
|
id: string;
|
|
694
694
|
description: string;
|
|
695
695
|
version: string;
|
|
@@ -704,13 +704,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
704
704
|
directAnswerEnabled: boolean;
|
|
705
705
|
};
|
|
706
706
|
}, {
|
|
707
|
+
schemaVersion: string;
|
|
707
708
|
includes: {
|
|
708
709
|
procedural: boolean;
|
|
709
710
|
taxonomy: boolean;
|
|
710
711
|
identityAnchors: boolean;
|
|
711
712
|
peerProfiles: boolean;
|
|
712
713
|
};
|
|
713
|
-
schemaVersion: string;
|
|
714
714
|
id: string;
|
|
715
715
|
description: string;
|
|
716
716
|
version: string;
|
|
@@ -737,13 +737,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
737
737
|
pluginVersion: string;
|
|
738
738
|
includesTranscripts: boolean;
|
|
739
739
|
capsule: {
|
|
740
|
+
schemaVersion: string;
|
|
740
741
|
includes: {
|
|
741
742
|
procedural: boolean;
|
|
742
743
|
taxonomy: boolean;
|
|
743
744
|
identityAnchors: boolean;
|
|
744
745
|
peerProfiles: boolean;
|
|
745
746
|
};
|
|
746
|
-
schemaVersion: string;
|
|
747
747
|
id: string;
|
|
748
748
|
description: string;
|
|
749
749
|
version: string;
|
|
@@ -770,13 +770,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
770
770
|
pluginVersion: string;
|
|
771
771
|
includesTranscripts: boolean;
|
|
772
772
|
capsule: {
|
|
773
|
+
schemaVersion: string;
|
|
773
774
|
includes: {
|
|
774
775
|
procedural: boolean;
|
|
775
776
|
taxonomy: boolean;
|
|
776
777
|
identityAnchors: boolean;
|
|
777
778
|
peerProfiles: boolean;
|
|
778
779
|
};
|
|
779
|
-
schemaVersion: string;
|
|
780
780
|
id: string;
|
|
781
781
|
description: string;
|
|
782
782
|
version: string;
|
|
@@ -803,6 +803,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
803
803
|
path: string;
|
|
804
804
|
}>, "many">;
|
|
805
805
|
}, "strip", z.ZodTypeAny, {
|
|
806
|
+
records: {
|
|
807
|
+
content: string;
|
|
808
|
+
path: string;
|
|
809
|
+
}[];
|
|
806
810
|
manifest: {
|
|
807
811
|
schemaVersion: 2;
|
|
808
812
|
createdAt: string;
|
|
@@ -815,13 +819,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
815
819
|
pluginVersion: string;
|
|
816
820
|
includesTranscripts: boolean;
|
|
817
821
|
capsule: {
|
|
822
|
+
schemaVersion: string;
|
|
818
823
|
includes: {
|
|
819
824
|
procedural: boolean;
|
|
820
825
|
taxonomy: boolean;
|
|
821
826
|
identityAnchors: boolean;
|
|
822
827
|
peerProfiles: boolean;
|
|
823
828
|
};
|
|
824
|
-
schemaVersion: string;
|
|
825
829
|
id: string;
|
|
826
830
|
description: string;
|
|
827
831
|
version: string;
|
|
@@ -837,11 +841,11 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
837
841
|
};
|
|
838
842
|
};
|
|
839
843
|
};
|
|
844
|
+
}, {
|
|
840
845
|
records: {
|
|
841
846
|
content: string;
|
|
842
847
|
path: string;
|
|
843
848
|
}[];
|
|
844
|
-
}, {
|
|
845
849
|
manifest: {
|
|
846
850
|
schemaVersion: 2;
|
|
847
851
|
createdAt: string;
|
|
@@ -854,13 +858,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
854
858
|
pluginVersion: string;
|
|
855
859
|
includesTranscripts: boolean;
|
|
856
860
|
capsule: {
|
|
861
|
+
schemaVersion: string;
|
|
857
862
|
includes: {
|
|
858
863
|
procedural: boolean;
|
|
859
864
|
taxonomy: boolean;
|
|
860
865
|
identityAnchors: boolean;
|
|
861
866
|
peerProfiles: boolean;
|
|
862
867
|
};
|
|
863
|
-
schemaVersion: string;
|
|
864
868
|
id: string;
|
|
865
869
|
description: string;
|
|
866
870
|
version: string;
|
|
@@ -876,10 +880,6 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
876
880
|
} | null | undefined;
|
|
877
881
|
};
|
|
878
882
|
};
|
|
879
|
-
records: {
|
|
880
|
-
content: string;
|
|
881
|
-
path: string;
|
|
882
|
-
}[];
|
|
883
883
|
}>;
|
|
884
884
|
type ExportBundleV2 = z.infer<typeof ExportBundleV2Schema>;
|
|
885
885
|
type AnyExportManifest = ExportManifestV1 | ExportManifestV2;
|
package/dist/verified-recall.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-4FE2K57M.js";
|
|
5
|
+
import "./chunk-7FL4CNPV.js";
|
|
6
|
+
import "./chunk-BLIWOONZ.js";
|
|
7
7
|
import "./chunk-M7XQSUBB.js";
|
|
8
8
|
import "./chunk-5UZXUTVO.js";
|
|
9
9
|
import "./chunk-5GPPACXK.js";
|
|
@@ -27,7 +27,7 @@ import "./chunk-VS2IYZRU.js";
|
|
|
27
27
|
import "./chunk-ZPQVJEVQ.js";
|
|
28
28
|
import "./chunk-4DJQYKMN.js";
|
|
29
29
|
import "./chunk-JUC24CTX.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-NU3CSQ4H.js";
|
|
31
31
|
import "./chunk-ZBJMUXZH.js";
|
|
32
32
|
import "./chunk-PZ5AY32C.js";
|
|
33
33
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.3.
|
|
3
|
+
"version": "9.3.686",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -2931,7 +2931,7 @@
|
|
|
2931
2931
|
"core"
|
|
2932
2932
|
],
|
|
2933
2933
|
"peerDependencies": {
|
|
2934
|
-
"@remnic/coding-graph": "^9.3.
|
|
2934
|
+
"@remnic/coding-graph": "^9.3.686"
|
|
2935
2935
|
},
|
|
2936
2936
|
"peerDependenciesMeta": {
|
|
2937
2937
|
"@remnic/coding-graph": {
|
package/src/access-boundary.ts
CHANGED
|
@@ -33,7 +33,8 @@ import { expandTildePath } from "./utils/path.js";
|
|
|
33
33
|
export type OperationName =
|
|
34
34
|
| "memory_get"
|
|
35
35
|
| "memory_search"
|
|
36
|
-
| "memory_store"
|
|
36
|
+
| "memory_store"
|
|
37
|
+
| "coding_decision";
|
|
37
38
|
|
|
38
39
|
// ---------------------------------------------------------------------------
|
|
39
40
|
// Operation context — what every handler receives
|
package/src/access-cli.ts
CHANGED
|
@@ -11,10 +11,11 @@ import { getOperation } from "./access-boundary.js";
|
|
|
11
11
|
// Importing access-operations registers the pilot boundary operations as a
|
|
12
12
|
// side effect; the store command dispatches through the registry (issue #1525).
|
|
13
13
|
import "./access-operations.js";
|
|
14
|
+
import { projectTagProjectId } from "./coding/coding-namespace.js";
|
|
14
15
|
|
|
15
16
|
const OPENCLAW_REMNIC_PLUGIN_IDS = ["openclaw-remnic", "openclaw-engram"] as const;
|
|
16
17
|
|
|
17
|
-
type CommandName = "browse" | "store";
|
|
18
|
+
type CommandName = "browse" | "store" | "decision";
|
|
18
19
|
|
|
19
20
|
type ParsedArgs = {
|
|
20
21
|
command: CommandName;
|
|
@@ -133,9 +134,9 @@ function writeCliOutput(text: string = ""): void {
|
|
|
133
134
|
|
|
134
135
|
function usage(): string {
|
|
135
136
|
return [
|
|
136
|
-
"Usage:",
|
|
137
137
|
" engram-access browse [options]",
|
|
138
138
|
" engram-access store [options]",
|
|
139
|
+
" engram-access decision [options]",
|
|
139
140
|
"",
|
|
140
141
|
"Browse options:",
|
|
141
142
|
" --namespace <name>",
|
|
@@ -160,6 +161,21 @@ function usage(): string {
|
|
|
160
161
|
" --source-reason <text>",
|
|
161
162
|
" --idempotency-key <key>",
|
|
162
163
|
" --dry-run",
|
|
164
|
+
"",
|
|
165
|
+
"Decision options:",
|
|
166
|
+
" --subcommand <list|get|record|supersede>",
|
|
167
|
+
" --namespace <name>",
|
|
168
|
+
" --session-key <key>",
|
|
169
|
+
" --principal <principal>",
|
|
170
|
+
" --id <id> (get/supersede)",
|
|
171
|
+
" --title <title> (record/supersede)",
|
|
172
|
+
" --status <proposed|accepted|superseded|rejected> (record)",
|
|
173
|
+
" --context <text> (record/supersede)",
|
|
174
|
+
" --decision <text> (record/supersede)",
|
|
175
|
+
" --consequences <text> (record/supersede)",
|
|
176
|
+
" --entity-ref <ref> (repeatable)",
|
|
177
|
+
" --project-tag <tag> (attach coding context for this invocation)",
|
|
178
|
+
" --supersedes-id <id> (alias for --id on supersede)",
|
|
163
179
|
].join("\n");
|
|
164
180
|
}
|
|
165
181
|
|
|
@@ -194,8 +210,25 @@ const COMMAND_SPECS: Record<CommandName, CommandSpec> = {
|
|
|
194
210
|
]),
|
|
195
211
|
flagOptions: new Set(["dry-run"]),
|
|
196
212
|
},
|
|
213
|
+
decision: {
|
|
214
|
+
valueOptions: new Set([
|
|
215
|
+
"subcommand",
|
|
216
|
+
"namespace",
|
|
217
|
+
"session-key",
|
|
218
|
+
"principal",
|
|
219
|
+
"id",
|
|
220
|
+
"title",
|
|
221
|
+
"status",
|
|
222
|
+
"context",
|
|
223
|
+
"decision",
|
|
224
|
+
"consequences",
|
|
225
|
+
"entity-ref",
|
|
226
|
+
"project-tag",
|
|
227
|
+
"supersedes-id",
|
|
228
|
+
]),
|
|
229
|
+
flagOptions: new Set(),
|
|
230
|
+
},
|
|
197
231
|
};
|
|
198
|
-
|
|
199
232
|
const BROWSE_SORT_VALUES = Object.freeze([
|
|
200
233
|
"updated_desc",
|
|
201
234
|
"updated_asc",
|
|
@@ -207,7 +240,7 @@ type BrowseSort = (typeof BROWSE_SORT_VALUES)[number];
|
|
|
207
240
|
|
|
208
241
|
function parseArgs(argv: string[]): ParsedArgs {
|
|
209
242
|
const [commandRaw, ...rest] = argv;
|
|
210
|
-
if (commandRaw !== "browse" && commandRaw !== "store") {
|
|
243
|
+
if (commandRaw !== "browse" && commandRaw !== "store" && commandRaw !== "decision") {
|
|
211
244
|
throw new UsageError("unsupported-command");
|
|
212
245
|
}
|
|
213
246
|
const spec = COMMAND_SPECS[commandRaw];
|
|
@@ -466,6 +499,59 @@ function expandOptionalPath(value: string | undefined): string | undefined {
|
|
|
466
499
|
return value === undefined ? undefined : expandTildePath(value);
|
|
467
500
|
}
|
|
468
501
|
|
|
502
|
+
/**
|
|
503
|
+
* Decision-record surface (issue #1548 Track A PR 2). Dispatches through the
|
|
504
|
+
* same `coding_decision` operation as the MCP tool and HTTP route — one
|
|
505
|
+
* validation boundary, three transports.
|
|
506
|
+
*/
|
|
507
|
+
async function runDecision(args: ParsedArgs, preferredId?: string): Promise<void> {
|
|
508
|
+
const subcommand = requireOption(args, "subcommand");
|
|
509
|
+
const { config, service } = buildRuntime(preferredId);
|
|
510
|
+
// The CLI creates a fresh Orchestrator per invocation, so the session
|
|
511
|
+
// coding-context map is empty. If --project-tag + --session-key are
|
|
512
|
+
// provided, attach a coding context BEFORE dispatching so the gate
|
|
513
|
+
// passes and project-scoped writes resolve to the right namespace
|
|
514
|
+
// (review P2).
|
|
515
|
+
const projectTag = getLastOption(args, "project-tag");
|
|
516
|
+
const sessionKey = getLastOption(args, "session-key");
|
|
517
|
+
if (projectTag && projectTag.trim().length > 0 && sessionKey && sessionKey.trim().length > 0) {
|
|
518
|
+
const projectId = projectTagProjectId(projectTag.trim());
|
|
519
|
+
service.setCodingContext({
|
|
520
|
+
sessionKey,
|
|
521
|
+
codingContext: {
|
|
522
|
+
projectId,
|
|
523
|
+
branch: null,
|
|
524
|
+
rootPath: projectId,
|
|
525
|
+
defaultBranch: null,
|
|
526
|
+
},
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
const op = getOperation("coding_decision");
|
|
530
|
+
if (!op) {
|
|
531
|
+
throw new Error("access-boundary: operation not registered: coding_decision");
|
|
532
|
+
}
|
|
533
|
+
const output = (await op.run(
|
|
534
|
+
{
|
|
535
|
+
subcommand,
|
|
536
|
+
namespace: getLastOption(args, "namespace"),
|
|
537
|
+
sessionKey,
|
|
538
|
+
id: getLastOption(args, "id"),
|
|
539
|
+
supersedesId: getLastOption(args, "supersedes-id"),
|
|
540
|
+
title: getLastOption(args, "title"),
|
|
541
|
+
status: getLastOption(args, "status"),
|
|
542
|
+
context: getLastOption(args, "context"),
|
|
543
|
+
decision: getLastOption(args, "decision"),
|
|
544
|
+
consequences: getLastOption(args, "consequences"),
|
|
545
|
+
entityRefs: getAllOptions(args, "entity-ref"),
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
service,
|
|
549
|
+
authenticatedPrincipal: getLastOption(args, "principal") ?? config.agentAccessHttp.principal,
|
|
550
|
+
},
|
|
551
|
+
)) as { result: unknown };
|
|
552
|
+
console.log(JSON.stringify(output.result, null, 2));
|
|
553
|
+
}
|
|
554
|
+
|
|
469
555
|
export async function main(
|
|
470
556
|
argv: string[] = process.argv.slice(2),
|
|
471
557
|
options: AccessCliOptions = {},
|
|
@@ -475,6 +561,10 @@ export async function main(
|
|
|
475
561
|
await runBrowse(args, options.preferredId);
|
|
476
562
|
return;
|
|
477
563
|
}
|
|
564
|
+
if (args.command === "decision") {
|
|
565
|
+
await runDecision(args, options.preferredId);
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
478
568
|
await runStore(args, options.preferredId);
|
|
479
569
|
}
|
|
480
570
|
|
package/src/access-http.ts
CHANGED
|
@@ -315,6 +315,7 @@ export class EngramAccessHttpServer {
|
|
|
315
315
|
citationsEnabled: options.citationsEnabled,
|
|
316
316
|
citationsAutoDetect: options.citationsAutoDetect,
|
|
317
317
|
emitLegacyTools: options.emitLegacyTools,
|
|
318
|
+
codingDecisionVisible: this.service.decisionRecordSurfaceVisible,
|
|
318
319
|
});
|
|
319
320
|
}
|
|
320
321
|
|
|
@@ -1331,6 +1332,35 @@ export class EngramAccessHttpServer {
|
|
|
1331
1332
|
return;
|
|
1332
1333
|
}
|
|
1333
1334
|
|
|
1335
|
+
if (req.method === "POST" && pathname === "/engram/v1/coding/decisions") {
|
|
1336
|
+
// Migrated through the access boundary (issue #1525/#1548): the
|
|
1337
|
+
// registry entry owns schema validation and service dispatch. HTTP
|
|
1338
|
+
// resolves the request principal; the boundary re-validates the
|
|
1339
|
+
// cleaned envelope. record/supersede persist decision memories, so they
|
|
1340
|
+
// are gated by the same 30/min write quota as /engram/v1/memories,
|
|
1341
|
+
// suggestions, and observe; list/get are pure reads and stay uncounted
|
|
1342
|
+
// (review P2: apply write quotas to decision writes).
|
|
1343
|
+
const body = await this.readJsonBody(req);
|
|
1344
|
+
const isWriteSubcommand =
|
|
1345
|
+
body.subcommand === "record" || body.subcommand === "supersede";
|
|
1346
|
+
if (isWriteSubcommand) {
|
|
1347
|
+
this.ensureWriteRateLimitAvailable();
|
|
1348
|
+
}
|
|
1349
|
+
const op = getOperation("coding_decision");
|
|
1350
|
+
if (!op) {
|
|
1351
|
+
throw new EngramAccessInputError("access-boundary: operation not registered: coding_decision");
|
|
1352
|
+
}
|
|
1353
|
+
const output = (await op.run(body, {
|
|
1354
|
+
service: this.service,
|
|
1355
|
+
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
1356
|
+
})) as { result: unknown };
|
|
1357
|
+
if (isWriteSubcommand) {
|
|
1358
|
+
this.recordWriteRateLimitHit();
|
|
1359
|
+
}
|
|
1360
|
+
this.respondJson(res, 200, output.result);
|
|
1361
|
+
return;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1334
1364
|
if (req.method === "POST" && pathname === "/engram/v1/suggestions") {
|
|
1335
1365
|
const body = await this.readValidatedBody(req, "suggestionSubmit");
|
|
1336
1366
|
const request = {
|
|
@@ -1707,7 +1737,7 @@ export class EngramAccessHttpServer {
|
|
|
1707
1737
|
// extraction write path. Record it so QMD maintenance / writtenSince
|
|
1708
1738
|
// don't miss the write. Best-effort and failure-tolerant.
|
|
1709
1739
|
onMergedMemoryWritten: (namespace, storageDir) => {
|
|
1710
|
-
|
|
1740
|
+
// #1522: catalog touch handled at the storage chokepoint.
|
|
1711
1741
|
},
|
|
1712
1742
|
});
|
|
1713
1743
|
this.respondJson(res, 200, result);
|
|
@@ -2183,6 +2213,13 @@ export class EngramAccessHttpServer {
|
|
|
2183
2213
|
typeof toolArgs === "object" &&
|
|
2184
2214
|
!Array.isArray(toolArgs) &&
|
|
2185
2215
|
(toolArgs as { dryRun?: unknown }).dryRun === true;
|
|
2216
|
+
const codingDecisionWrite =
|
|
2217
|
+
(toolName === "engram.coding_decision" || toolName === "remnic.coding_decision") &&
|
|
2218
|
+
toolArgs !== null &&
|
|
2219
|
+
typeof toolArgs === "object" &&
|
|
2220
|
+
!Array.isArray(toolArgs) &&
|
|
2221
|
+
((toolArgs as { subcommand?: unknown }).subcommand === "record" ||
|
|
2222
|
+
(toolArgs as { subcommand?: unknown }).subcommand === "supersede");
|
|
2186
2223
|
const isMcpWrite =
|
|
2187
2224
|
request.method === "tools/call" &&
|
|
2188
2225
|
(
|
|
@@ -2210,7 +2247,8 @@ export class EngramAccessHttpServer {
|
|
|
2210
2247
|
toolName === "engram.memory_action_apply" ||
|
|
2211
2248
|
toolName === "remnic.memory_action_apply"
|
|
2212
2249
|
)
|
|
2213
|
-
)
|
|
2250
|
+
) ||
|
|
2251
|
+
codingDecisionWrite
|
|
2214
2252
|
);
|
|
2215
2253
|
if (isMcpWrite) {
|
|
2216
2254
|
this.ensureWriteRateLimitAvailable();
|
package/src/access-mcp.ts
CHANGED
|
@@ -109,6 +109,7 @@ const MCP_MIGRATED_OPERATIONS: Readonly<Record<string, OperationName>> = {
|
|
|
109
109
|
"engram.memory_get": "memory_get",
|
|
110
110
|
"engram.memory_search": "memory_search",
|
|
111
111
|
"engram.memory_store": "memory_store",
|
|
112
|
+
"engram.coding_decision": "coding_decision",
|
|
112
113
|
};
|
|
113
114
|
|
|
114
115
|
function resolveChatGptInspectorRecallSessionKey(
|
|
@@ -304,7 +305,9 @@ export class EngramMcpServer {
|
|
|
304
305
|
*/
|
|
305
306
|
private initSessionIds = new Map<string, string>();
|
|
306
307
|
|
|
307
|
-
/**
|
|
308
|
+
/**
|
|
309
|
+
* Whether oai-mem-citation guidance is explicitly enabled via config.
|
|
310
|
+
*/
|
|
308
311
|
private readonly citationsEnabled: boolean;
|
|
309
312
|
/** Whether to auto-enable citations for Codex adapter connections. */
|
|
310
313
|
private readonly citationsAutoDetect: boolean;
|
|
@@ -314,6 +317,13 @@ export class EngramMcpServer {
|
|
|
314
317
|
* set false to halve the advertised `tools/list` surface.
|
|
315
318
|
*/
|
|
316
319
|
private readonly emitLegacyTools: boolean;
|
|
320
|
+
/**
|
|
321
|
+
* Whether the `coding_decision` tool should appear in `tools/list`. Gated on
|
|
322
|
+
* `codingKnowledge.enabled && codingKnowledge.decisionRecords` (issue #1548
|
|
323
|
+
* Track A PR 2, rule 39). When false the tools array is byte-identical to
|
|
324
|
+
* pre-feature.
|
|
325
|
+
*/
|
|
326
|
+
private readonly codingDecisionVisible: boolean;
|
|
317
327
|
|
|
318
328
|
constructor(
|
|
319
329
|
private readonly service: EngramAccessService,
|
|
@@ -322,11 +332,13 @@ export class EngramMcpServer {
|
|
|
322
332
|
citationsEnabled?: boolean;
|
|
323
333
|
citationsAutoDetect?: boolean;
|
|
324
334
|
emitLegacyTools?: boolean;
|
|
335
|
+
codingDecisionVisible?: boolean;
|
|
325
336
|
} = {},
|
|
326
337
|
) {
|
|
327
338
|
this.citationsEnabled = options.citationsEnabled === true;
|
|
328
339
|
this.citationsAutoDetect = options.citationsAutoDetect !== false;
|
|
329
340
|
this.emitLegacyTools = options.emitLegacyTools !== false;
|
|
341
|
+
this.codingDecisionVisible = options.codingDecisionVisible === true;
|
|
330
342
|
this.authenticatedPrincipal =
|
|
331
343
|
options.principal?.trim() ||
|
|
332
344
|
readEnvVar("OPENCLAW_ENGRAM_ACCESS_PRINCIPAL")?.trim() ||
|
|
@@ -1946,6 +1958,47 @@ export class EngramMcpServer {
|
|
|
1946
1958
|
},
|
|
1947
1959
|
},
|
|
1948
1960
|
].flatMap((tool) => withToolAliases(tool, this.emitLegacyTools));
|
|
1961
|
+
if (this.codingDecisionVisible) {
|
|
1962
|
+
const codingDecisionTools = withToolAliases(
|
|
1963
|
+
{
|
|
1964
|
+
name: "engram.coding_decision",
|
|
1965
|
+
description:
|
|
1966
|
+
"List, get, record, or supersede decision records in the session's coding namespace (issue #1548 Track A). Subcommands: list, get, record, supersede.",
|
|
1967
|
+
inputSchema: {
|
|
1968
|
+
type: "object",
|
|
1969
|
+
properties: {
|
|
1970
|
+
subcommand: {
|
|
1971
|
+
type: "string",
|
|
1972
|
+
enum: ["list", "get", "record", "supersede"],
|
|
1973
|
+
description: "Which decision-record operation to run.",
|
|
1974
|
+
},
|
|
1975
|
+
sessionKey: { type: "string", description: "Session identifier whose coding context scopes the operation." },
|
|
1976
|
+
namespace: { type: "string", description: "Optional explicit namespace (overrides coding-context overlay)." },
|
|
1977
|
+
id: { type: "string", description: "Decision record id (required for get and supersede)." },
|
|
1978
|
+
title: { type: "string", description: "Decision title (required for record and supersede)." },
|
|
1979
|
+
status: {
|
|
1980
|
+
type: "string",
|
|
1981
|
+
enum: ["proposed", "accepted", "superseded", "rejected"],
|
|
1982
|
+
description: "Decision status (record only; defaults to proposed).",
|
|
1983
|
+
},
|
|
1984
|
+
context: { type: "string", description: "Context/background for the decision." },
|
|
1985
|
+
decision: { type: "string", description: "The decision itself (required for record and supersede)." },
|
|
1986
|
+
consequences: { type: "string", description: "Consequences of the decision." },
|
|
1987
|
+
entityRefs: {
|
|
1988
|
+
type: "array",
|
|
1989
|
+
items: { type: "string" },
|
|
1990
|
+
description: "Entity references the decision relates to.",
|
|
1991
|
+
},
|
|
1992
|
+
supersedesId: { type: "string", description: "Id of the record this decision supersedes (supersede only)." },
|
|
1993
|
+
},
|
|
1994
|
+
required: ["subcommand"],
|
|
1995
|
+
additionalProperties: false,
|
|
1996
|
+
},
|
|
1997
|
+
},
|
|
1998
|
+
this.emitLegacyTools,
|
|
1999
|
+
);
|
|
2000
|
+
this.tools = [...this.tools, ...codingDecisionTools];
|
|
2001
|
+
}
|
|
1949
2002
|
}
|
|
1950
2003
|
|
|
1951
2004
|
/** Get clientInfo for a specific MCP session. Returns undefined for non-MCP requests. */
|
|
@@ -3231,7 +3284,7 @@ export class EngramMcpServer {
|
|
|
3231
3284
|
// extraction write path. Record it so QMD maintenance / writtenSince
|
|
3232
3285
|
// don't miss the write. Best-effort and failure-tolerant.
|
|
3233
3286
|
onMergedMemoryWritten: (namespace, storageDir) => {
|
|
3234
|
-
|
|
3287
|
+
// #1522: catalog touch handled at the storage chokepoint.
|
|
3235
3288
|
},
|
|
3236
3289
|
});
|
|
3237
3290
|
}
|