@remnic/core 9.4.2 → 9.6.0
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 +6 -6
- package/dist/access-admin-ops-surface.js +28 -28
- package/dist/access-boundary.d.ts +27 -8
- package/dist/access-boundary.js +33 -29
- package/dist/access-cli.js +83 -81
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +52 -6
- package/dist/access-http.js +40 -38
- package/dist/access-identity-continuity-surface.d.ts +5 -5
- package/dist/access-identity-continuity-surface.js +28 -28
- package/dist/access-lcm-surface.d.ts +6 -6
- package/dist/access-lcm-surface.js +28 -28
- package/dist/access-mcp.d.ts +16 -6
- package/dist/access-mcp.js +37 -35
- package/dist/access-observe-write-surface.d.ts +6 -6
- package/dist/access-observe-write-surface.js +28 -28
- package/dist/access-operations-batch.js +33 -32
- package/dist/access-operations.d.ts +9 -9
- package/dist/access-operations.js +35 -34
- package/dist/access-recall-surface.d.ts +6 -6
- package/dist/access-recall-surface.js +28 -28
- package/dist/access-schema.d.ts +4 -4
- package/dist/access-schema.js +4 -4
- package/dist/{access-service-m-2VO_Ig.d.ts → access-service-CXJaql3A.d.ts} +4 -4
- package/dist/access-service.d.ts +6 -6
- package/dist/access-service.js +28 -28
- package/dist/access-surface-catalog.d.ts +6 -6
- package/dist/access-surface-catalog.js +1 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-token-capabilities.d.ts +174 -0
- package/dist/access-token-capabilities.js +33 -0
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +2 -2
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/{auto-sync-HMHQHUAG.js → auto-sync-4A5YBWYO.js} +4 -4
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +5 -5
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +9 -9
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-crypto-CZJSLEFG.js → capsule-crypto-RAARDY3M.js} +2 -2
- package/dist/capsule-crypto-RAARDY3M.js.map +1 -0
- package/dist/{catalog-BxWokdC2.d.ts → catalog-C9cu67Ig.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +5 -5
- package/dist/causal-chain.js +3 -3
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +13 -13
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-6ZIETXZ2.js → chunk-23JFRB73.js} +2 -2
- package/dist/{chunk-IC6QX5TC.js → chunk-3XIY7MDQ.js} +6 -6
- package/dist/{chunk-FZGGZAAU.js → chunk-4GNEDXDI.js} +146 -2
- package/dist/chunk-4GNEDXDI.js.map +1 -0
- package/dist/{chunk-LOR6ZM5R.js → chunk-4LV23CHK.js} +2 -2
- package/dist/{chunk-E2SPGGUI.js → chunk-4OKLXWDZ.js} +13 -6
- package/dist/chunk-4OKLXWDZ.js.map +1 -0
- package/dist/{chunk-AER6MT24.js → chunk-6SXVCD7W.js} +2 -2
- package/dist/{chunk-OHDJ34CC.js → chunk-72WG5QKN.js} +2 -2
- package/dist/{chunk-CZAZX7JP.js → chunk-7MW3CVLD.js} +4 -4
- package/dist/{chunk-CXLNZXG5.js → chunk-7XGSIUP5.js} +1 -1
- package/dist/{chunk-CZAA5N5S.js → chunk-AYZJID4S.js} +2 -2
- package/dist/{chunk-M7XQSUBB.js → chunk-B3ABVQ36.js} +116 -9
- package/dist/chunk-B3ABVQ36.js.map +1 -0
- package/dist/{chunk-6BISDEN6.js → chunk-BEM4D2QG.js} +14 -14
- package/dist/{chunk-ZPOROUTX.js → chunk-CYWA2CXR.js} +5 -5
- package/dist/{chunk-M5QKGHCR.js → chunk-CYWCKFCL.js} +5 -5
- package/dist/chunk-D7FOKIY5.js +173 -0
- package/dist/chunk-D7FOKIY5.js.map +1 -0
- package/dist/{chunk-4BFRBP45.js → chunk-DEG5ULFJ.js} +2 -2
- package/dist/{chunk-JLR3JSTL.js → chunk-DS7MM2ES.js} +3 -3
- package/dist/{chunk-2BFLDH5F.js → chunk-EEIROWEG.js} +2 -2
- package/dist/{chunk-5QZDMSSN.js → chunk-FKCRGLRD.js} +237 -82
- package/dist/{chunk-5QZDMSSN.js.map → chunk-FKCRGLRD.js.map} +1 -1
- package/dist/{chunk-X4A62ET7.js → chunk-H2DXDQCQ.js} +17 -17
- package/dist/{chunk-27FLVMDC.js → chunk-HLN7RROI.js} +7 -7
- package/dist/chunk-IC2TCZJ2.js +54 -0
- package/dist/chunk-IC2TCZJ2.js.map +1 -0
- package/dist/{chunk-2U2A5HF4.js → chunk-J3XHPFEU.js} +6 -6
- package/dist/{chunk-AKUCU7CI.js → chunk-JI5AVXYO.js} +5 -5
- package/dist/{chunk-KCJ5H6XQ.js → chunk-JSNVWNGX.js} +2 -2
- package/dist/{chunk-7Z2DZNWN.js → chunk-KL4UAXUY.js} +43 -2
- package/dist/{chunk-7Z2DZNWN.js.map → chunk-KL4UAXUY.js.map} +1 -1
- package/dist/{chunk-FLVL4L3L.js → chunk-KTULX4YO.js} +4 -4
- package/dist/{chunk-ILFJ7AVS.js → chunk-LADFWYHY.js} +35 -21
- package/dist/chunk-LADFWYHY.js.map +1 -0
- package/dist/{chunk-437S3G37.js → chunk-LNQUAJNC.js} +1 -1
- package/dist/{chunk-EPGWWCZF.js → chunk-LR5DZ56F.js} +6 -6
- package/dist/{chunk-YDSWRD33.js → chunk-N3JDIRBW.js} +4 -4
- package/dist/{chunk-OUMTBFSQ.js → chunk-NKCPUHCI.js} +5 -5
- package/dist/{chunk-7QWMTOIF.js → chunk-P454KXD6.js} +112 -34
- package/dist/chunk-P454KXD6.js.map +1 -0
- package/dist/{chunk-DR6PEJU3.js → chunk-PCLIWBGD.js} +44 -59
- package/dist/chunk-PCLIWBGD.js.map +1 -0
- package/dist/{chunk-BGTAL46Y.js → chunk-PNLFN2PZ.js} +2 -2
- package/dist/{chunk-P6SYWE4G.js → chunk-PVUJ6WVV.js} +10 -10
- package/dist/{chunk-YPEMNNNY.js → chunk-RGK27ELN.js} +6 -6
- package/dist/{chunk-2QSZNTDO.js → chunk-RKNJBZ55.js} +4 -4
- package/dist/{chunk-66FLU5BT.js → chunk-SIRPLF54.js} +6 -6
- package/dist/{chunk-M7GGMGMZ.js → chunk-SVOHGUMI.js} +1202 -126
- package/dist/chunk-SVOHGUMI.js.map +1 -0
- package/dist/{chunk-HRCACVHL.js → chunk-TLUDFPZL.js} +2 -2
- package/dist/{chunk-2FOD2YY3.js → chunk-UFUKHGZD.js} +236 -103
- package/dist/chunk-UFUKHGZD.js.map +1 -0
- package/dist/{chunk-2MR3MFQB.js → chunk-UPSAT4PY.js} +2 -2
- package/dist/{chunk-4P4626RY.js → chunk-UTRJFDP2.js} +4 -4
- package/dist/{chunk-CGS7UKWM.js → chunk-VCW74PNH.js} +2 -2
- package/dist/{chunk-5GPPACXK.js → chunk-VSMRDBFT.js} +2 -1
- package/dist/{chunk-NG7YBCJO.js → chunk-XCL57M6Q.js} +4 -4
- package/dist/{chunk-CLX5VDNY.js → chunk-Y4RKAQZ7.js} +4 -4
- package/dist/{chunk-DGYCWCQ7.js → chunk-Y7UNNAZD.js} +2 -2
- package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
- package/dist/{chunk-XN3TUUX2.js → chunk-YQB32INI.js} +2 -2
- package/dist/{cli-EiBBOt3r.d.ts → cli-CqdPA6z9.d.ts} +3 -3
- package/dist/cli.d.ts +7 -7
- package/dist/cli.js +61 -59
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +9 -9
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +9 -9
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +13 -11
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/contradiction/index.js +4 -4
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +9 -9
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +5 -5
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/{first-start-migration-DY6YCRC2.js → first-start-migration-VBJQL6OI.js} +5 -5
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +271 -17
- package/dist/index.js +163 -99
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +2 -2
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +10 -10
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +9 -9
- package/dist/maintenance/rebuild-memory-projection.js +11 -11
- package/dist/mcp-memory-inspector-app.d.ts +6 -6
- package/dist/mcp-read-only-tools.d.ts +16 -0
- package/dist/mcp-read-only-tools.js +8 -0
- package/dist/mcp-read-only-tools.js.map +1 -0
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +19 -19
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +10 -10
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +9 -9
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +2 -2
- package/dist/operator-toolkit.js +25 -25
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +11 -11
- package/dist/{orchestrator-B2Y28Z9t.d.ts → orchestrator-CWFrT8AF.d.ts} +91 -60
- package/dist/orchestrator.d.ts +5 -5
- package/dist/orchestrator.js +85 -83
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/{qmd-Db9mOkzB.d.ts → qmd--fnPMK60.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +4 -4
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/schemas.d.ts +22 -22
- package/dist/search/document-scanner.js +2 -2
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +9 -9
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +13 -13
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/lancedb-backend.js +3 -3
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.js +3 -3
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/orama-backend.js +3 -3
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-BDVIbLRw.d.ts → semantic-consolidation-O5lMZ4LG.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +11 -11
- package/dist/semantic-rule-promotion.js +9 -9
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +10 -10
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/storage-C1maCNbc.d.ts +1591 -0
- package/dist/storage.d.ts +5 -1239
- package/dist/storage.js +8 -8
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-routing.d.ts +1 -1
- package/dist/{tier-stats-TG6GUZ6N.js → tier-stats-5XF4UBRQ.js} +4 -4
- package/dist/tokens.d.ts +17 -2
- package/dist/tokens.js +3 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +3 -3
- package/dist/transfer/capsule-import.js +3 -3
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-ljkd82rn.d.ts → types-CGgcNWCG.d.ts} +31 -1
- package/dist/types.d.ts +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +10 -10
- package/package.json +2 -2
- package/src/access-boundary.test.ts +62 -0
- package/src/access-boundary.ts +165 -126
- package/src/access-http.test.ts +781 -0
- package/src/access-http.ts +334 -108
- package/src/access-mcp.test.ts +264 -0
- package/src/access-mcp.ts +45 -70
- package/src/access-operations-batch.ts +35 -12
- package/src/access-surface-catalog.test.ts +22 -14
- package/src/access-surface-catalog.ts +6 -3
- package/src/access-token-capabilities.test.ts +844 -0
- package/src/access-token-capabilities.ts +391 -0
- package/src/chat/chat-mcp.test.ts +232 -0
- package/src/chat/chat-session.ts +34 -0
- package/src/cli-wearables-fuse.test.ts +197 -0
- package/src/cli.ts +25 -0
- package/src/index.ts +14 -0
- package/src/mcp-read-only-tools.ts +61 -0
- package/src/storage.ts +16 -0
- package/src/tokens.ts +32 -3
- package/src/wearables/cli.test.ts +102 -0
- package/src/wearables/cli.ts +65 -0
- package/src/wearables/config.test.ts +32 -0
- package/src/wearables/config.ts +52 -0
- package/src/wearables/day-store.test.ts +246 -0
- package/src/wearables/day-store.ts +272 -3
- package/src/wearables/fusion/cluster.ts +230 -0
- package/src/wearables/fusion/fuse.ts +218 -0
- package/src/wearables/fusion/fusion.test.ts +2575 -0
- package/src/wearables/fusion/index.ts +50 -0
- package/src/wearables/fusion/reconcile.ts +831 -0
- package/src/wearables/fusion/reconstruct.ts +251 -0
- package/src/wearables/fusion/store.ts +480 -0
- package/src/wearables/fusion/types.ts +228 -0
- package/src/wearables/index.ts +41 -0
- package/src/wearables/service.test.ts +1030 -2
- package/src/wearables/service.ts +258 -16
- package/src/wearables/speakers.test.ts +128 -0
- package/src/wearables/speakers.ts +58 -4
- package/src/wearables/storage-io.test.ts +146 -0
- package/src/wearables/types.ts +31 -0
- package/dist/chunk-2FOD2YY3.js.map +0 -1
- package/dist/chunk-7QWMTOIF.js.map +0 -1
- package/dist/chunk-DR6PEJU3.js.map +0 -1
- package/dist/chunk-E2SPGGUI.js.map +0 -1
- package/dist/chunk-FZGGZAAU.js.map +0 -1
- package/dist/chunk-ILFJ7AVS.js.map +0 -1
- package/dist/chunk-M7GGMGMZ.js.map +0 -1
- package/dist/chunk-M7XQSUBB.js.map +0 -1
- /package/dist/{capsule-crypto-CZJSLEFG.js.map → access-token-capabilities.js.map} +0 -0
- /package/dist/{auto-sync-HMHQHUAG.js.map → auto-sync-4A5YBWYO.js.map} +0 -0
- /package/dist/{chunk-6ZIETXZ2.js.map → chunk-23JFRB73.js.map} +0 -0
- /package/dist/{chunk-IC6QX5TC.js.map → chunk-3XIY7MDQ.js.map} +0 -0
- /package/dist/{chunk-LOR6ZM5R.js.map → chunk-4LV23CHK.js.map} +0 -0
- /package/dist/{chunk-AER6MT24.js.map → chunk-6SXVCD7W.js.map} +0 -0
- /package/dist/{chunk-OHDJ34CC.js.map → chunk-72WG5QKN.js.map} +0 -0
- /package/dist/{chunk-CZAZX7JP.js.map → chunk-7MW3CVLD.js.map} +0 -0
- /package/dist/{chunk-CXLNZXG5.js.map → chunk-7XGSIUP5.js.map} +0 -0
- /package/dist/{chunk-CZAA5N5S.js.map → chunk-AYZJID4S.js.map} +0 -0
- /package/dist/{chunk-6BISDEN6.js.map → chunk-BEM4D2QG.js.map} +0 -0
- /package/dist/{chunk-ZPOROUTX.js.map → chunk-CYWA2CXR.js.map} +0 -0
- /package/dist/{chunk-M5QKGHCR.js.map → chunk-CYWCKFCL.js.map} +0 -0
- /package/dist/{chunk-4BFRBP45.js.map → chunk-DEG5ULFJ.js.map} +0 -0
- /package/dist/{chunk-JLR3JSTL.js.map → chunk-DS7MM2ES.js.map} +0 -0
- /package/dist/{chunk-2BFLDH5F.js.map → chunk-EEIROWEG.js.map} +0 -0
- /package/dist/{chunk-X4A62ET7.js.map → chunk-H2DXDQCQ.js.map} +0 -0
- /package/dist/{chunk-27FLVMDC.js.map → chunk-HLN7RROI.js.map} +0 -0
- /package/dist/{chunk-2U2A5HF4.js.map → chunk-J3XHPFEU.js.map} +0 -0
- /package/dist/{chunk-AKUCU7CI.js.map → chunk-JI5AVXYO.js.map} +0 -0
- /package/dist/{chunk-KCJ5H6XQ.js.map → chunk-JSNVWNGX.js.map} +0 -0
- /package/dist/{chunk-FLVL4L3L.js.map → chunk-KTULX4YO.js.map} +0 -0
- /package/dist/{chunk-437S3G37.js.map → chunk-LNQUAJNC.js.map} +0 -0
- /package/dist/{chunk-EPGWWCZF.js.map → chunk-LR5DZ56F.js.map} +0 -0
- /package/dist/{chunk-YDSWRD33.js.map → chunk-N3JDIRBW.js.map} +0 -0
- /package/dist/{chunk-OUMTBFSQ.js.map → chunk-NKCPUHCI.js.map} +0 -0
- /package/dist/{chunk-BGTAL46Y.js.map → chunk-PNLFN2PZ.js.map} +0 -0
- /package/dist/{chunk-P6SYWE4G.js.map → chunk-PVUJ6WVV.js.map} +0 -0
- /package/dist/{chunk-YPEMNNNY.js.map → chunk-RGK27ELN.js.map} +0 -0
- /package/dist/{chunk-2QSZNTDO.js.map → chunk-RKNJBZ55.js.map} +0 -0
- /package/dist/{chunk-66FLU5BT.js.map → chunk-SIRPLF54.js.map} +0 -0
- /package/dist/{chunk-HRCACVHL.js.map → chunk-TLUDFPZL.js.map} +0 -0
- /package/dist/{chunk-2MR3MFQB.js.map → chunk-UPSAT4PY.js.map} +0 -0
- /package/dist/{chunk-4P4626RY.js.map → chunk-UTRJFDP2.js.map} +0 -0
- /package/dist/{chunk-CGS7UKWM.js.map → chunk-VCW74PNH.js.map} +0 -0
- /package/dist/{chunk-5GPPACXK.js.map → chunk-VSMRDBFT.js.map} +0 -0
- /package/dist/{chunk-NG7YBCJO.js.map → chunk-XCL57M6Q.js.map} +0 -0
- /package/dist/{chunk-CLX5VDNY.js.map → chunk-Y4RKAQZ7.js.map} +0 -0
- /package/dist/{chunk-DGYCWCQ7.js.map → chunk-Y7UNNAZD.js.map} +0 -0
- /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
- /package/dist/{chunk-XN3TUUX2.js.map → chunk-YQB32INI.js.map} +0 -0
- /package/dist/{first-start-migration-DY6YCRC2.js.map → first-start-migration-VBJQL6OI.js.map} +0 -0
- /package/dist/{tier-stats-TG6GUZ6N.js.map → tier-stats-5XF4UBRQ.js.map} +0 -0
|
@@ -22,6 +22,9 @@ import {
|
|
|
22
22
|
type OperationContext,
|
|
23
23
|
} from "./access-boundary.js";
|
|
24
24
|
import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
|
|
25
|
+
import { EngramAccessForbiddenError } from "./access-errors.js";
|
|
26
|
+
import { tokenCapabilityStore } from "./access-token-capabilities.js";
|
|
27
|
+
import { z } from "zod";
|
|
25
28
|
|
|
26
29
|
// ---------------------------------------------------------------------------
|
|
27
30
|
// Test fixtures
|
|
@@ -210,3 +213,62 @@ test("getOperation / listRegisteredOperations: round-trip a registration", async
|
|
|
210
213
|
assert.ok(getOperation("memory_search"));
|
|
211
214
|
assert.ok(listRegisteredOperations().includes("memory_search"));
|
|
212
215
|
});
|
|
216
|
+
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// fleetWide flag — fail-closed for namespace-scoped tokens (issue #1850 round 10)
|
|
219
|
+
// Maintenance ops that run ACROSS ALL namespaces carry no `namespace` arg, so
|
|
220
|
+
// the MCP tools/call effective-namespace gate never fires. The fleetWide flag
|
|
221
|
+
// makes defineOperation's run wrapper reject a namespace-scoped token BEFORE
|
|
222
|
+
// the handler — no side effect on denial; unrestricted/legacy unaffected.
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
|
|
225
|
+
test("fleetWide op: namespace-scoped token is rejected BEFORE the handler runs (no side effect)", async () => {
|
|
226
|
+
let ran = false;
|
|
227
|
+
__resetRegistryForTest();
|
|
228
|
+
const op = defineOperation({
|
|
229
|
+
name: "memory_get",
|
|
230
|
+
description: "test fleet-wide op",
|
|
231
|
+
fleetWide: true,
|
|
232
|
+
schema: z.object({}),
|
|
233
|
+
handler: async () => { ran = true; return { ok: true }; },
|
|
234
|
+
});
|
|
235
|
+
await assert.rejects(
|
|
236
|
+
() => tokenCapabilityStore.run({ version: 1, namespaces: ["ns_a"] }, () => op.run({}, ctx(makeMockService()))),
|
|
237
|
+
(err: unknown) => err instanceof EngramAccessForbiddenError && /across all namespaces/.test(err.message),
|
|
238
|
+
);
|
|
239
|
+
assert.equal(ran, false, "fleet-wide handler must NOT run for a namespace-scoped token (no side effect)");
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
test("fleetWide op: unrestricted and legacy tokens reach the handler", async () => {
|
|
243
|
+
let ran = false;
|
|
244
|
+
__resetRegistryForTest();
|
|
245
|
+
const op = defineOperation({
|
|
246
|
+
name: "memory_get",
|
|
247
|
+
description: "test fleet-wide op",
|
|
248
|
+
fleetWide: true,
|
|
249
|
+
schema: z.object({}),
|
|
250
|
+
handler: async () => { ran = true; return { ok: true }; },
|
|
251
|
+
});
|
|
252
|
+
// Explicit-unrestricted record (version present, no namespaces axis).
|
|
253
|
+
const result = await tokenCapabilityStore.run({ version: 1 }, () => op.run({}, ctx(makeMockService())));
|
|
254
|
+
assert.deepEqual(result, { ok: true });
|
|
255
|
+
assert.equal(ran, true, "unrestricted token reaches the handler");
|
|
256
|
+
// Legacy (no ALS bound at all — cron / internal callers).
|
|
257
|
+
ran = false;
|
|
258
|
+
assert.deepEqual(await op.run({}, ctx(makeMockService())), { ok: true });
|
|
259
|
+
assert.equal(ran, true, "legacy token reaches the handler");
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
test("fleetWide flag is inert for normal (non-fleet-wide) ops under a scoped token", async () => {
|
|
263
|
+
let ran = false;
|
|
264
|
+
__resetRegistryForTest();
|
|
265
|
+
const op = defineOperation({
|
|
266
|
+
name: "memory_get",
|
|
267
|
+
description: "normal op (not fleet-wide)",
|
|
268
|
+
schema: z.object({}),
|
|
269
|
+
handler: async () => { ran = true; return { ok: true }; },
|
|
270
|
+
});
|
|
271
|
+
const result = await tokenCapabilityStore.run({ version: 1, namespaces: ["ns_a"] }, () => op.run({}, ctx(makeMockService())));
|
|
272
|
+
assert.deepEqual(result, { ok: true });
|
|
273
|
+
assert.equal(ran, true, "a non-fleet-wide op runs normally for a scoped token");
|
|
274
|
+
});
|
package/src/access-boundary.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
|
|
20
|
+
import { assertFleetWideOperationAllowed, assertOperationAllowed, tokenCapabilityStore } from "./access-token-capabilities.js";
|
|
20
21
|
import { expandTildePath } from "./utils/path.js";
|
|
21
22
|
|
|
22
23
|
// ---------------------------------------------------------------------------
|
|
@@ -30,138 +31,150 @@ import { expandTildePath } from "./utils/path.js";
|
|
|
30
31
|
* lands; the fitness test in `access-surface-catalog.test.ts` treats the
|
|
31
32
|
* registered set as the migration state.
|
|
32
33
|
*/
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
export const OPERATION_NAMES = [
|
|
35
|
+
"memory_get",
|
|
36
|
+
"memory_search",
|
|
37
|
+
"memory_store",
|
|
38
|
+
"coding_decision",
|
|
39
|
+
"coding_architecture",
|
|
39
40
|
// codegraph parity tools (issue #1554) -- each maps to one codegraph_*
|
|
40
41
|
// boundary operation that delegates to the surface handler in
|
|
41
42
|
// coding/codegraph-surfaces.ts. Names match the external tool suffixes.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
"codegraph_index",
|
|
44
|
+
"codegraph_list_projects",
|
|
45
|
+
"codegraph_delete_project",
|
|
46
|
+
"codegraph_index_status",
|
|
47
|
+
"codegraph_search_graph",
|
|
48
|
+
"codegraph_trace_path",
|
|
49
|
+
"codegraph_detect_changes",
|
|
50
|
+
"codegraph_query_graph",
|
|
51
|
+
"codegraph_get_schema",
|
|
52
|
+
"codegraph_get_snippet",
|
|
53
|
+
"codegraph_get_architecture",
|
|
54
|
+
"codegraph_search_code",
|
|
55
|
+
"codegraph_manage_adr",
|
|
56
|
+
"codegraph_ingest_traces",
|
|
57
|
+
"memory_correct_plan",
|
|
58
|
+
"memory_correct_apply",
|
|
59
|
+
"coding_delta",
|
|
59
60
|
// Remaining MCP/HTTP handlers migrated through the boundary (issue #1525).
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
61
|
+
"recall",
|
|
62
|
+
"recall_explain",
|
|
63
|
+
"set_coding_context",
|
|
64
|
+
"recall_tier_explain",
|
|
65
|
+
"recall_xray",
|
|
66
|
+
"wearables_status",
|
|
67
|
+
"wearables_sync",
|
|
68
|
+
"transcript_day",
|
|
69
|
+
"transcript_search",
|
|
70
|
+
"transcript_memories",
|
|
71
|
+
"action_confidence",
|
|
72
|
+
"chatgpt_memory_inspector",
|
|
73
|
+
"day_summary",
|
|
74
|
+
"capsule_export",
|
|
75
|
+
"capsule_import",
|
|
76
|
+
"capsule_list",
|
|
77
|
+
"memory_governance_run",
|
|
78
|
+
"procedure_mining_run",
|
|
79
|
+
"pattern_reinforcement_run",
|
|
80
|
+
"procedural_stats",
|
|
81
|
+
"memory_timeline",
|
|
82
|
+
"suggestion_submit",
|
|
83
|
+
"entity_get",
|
|
84
|
+
"review_queue_list",
|
|
85
|
+
"correction_pending",
|
|
86
|
+
"observe",
|
|
87
|
+
"lcm_search",
|
|
88
|
+
"lcm_compaction_flush",
|
|
89
|
+
"lcm_compaction_record",
|
|
90
|
+
"continuity_audit_generate",
|
|
91
|
+
"continuity_incident_open",
|
|
92
|
+
"continuity_incident_close",
|
|
93
|
+
"continuity_incident_list",
|
|
94
|
+
"continuity_loop_add_or_update",
|
|
95
|
+
"continuity_loop_review",
|
|
96
|
+
"identity_anchor_get",
|
|
97
|
+
"identity_anchor_update",
|
|
98
|
+
"memory_identity",
|
|
99
|
+
"work_task",
|
|
100
|
+
"work_project",
|
|
101
|
+
"work_board",
|
|
102
|
+
"shared_context_write_output",
|
|
103
|
+
"shared_feedback_record",
|
|
104
|
+
"shared_priorities_append",
|
|
105
|
+
"shared_context_cross_signals_run",
|
|
106
|
+
"shared_context_curate_daily",
|
|
107
|
+
"compounding_weekly_synthesize",
|
|
108
|
+
"compounding_promote_candidate",
|
|
109
|
+
"compression_guidelines_optimize",
|
|
110
|
+
"compression_guidelines_activate",
|
|
111
|
+
"memory_profile",
|
|
112
|
+
"memory_entities_list",
|
|
113
|
+
"memory_questions",
|
|
114
|
+
"memory_last_recall",
|
|
115
|
+
"memory_intent_debug",
|
|
116
|
+
"memory_qmd_debug",
|
|
117
|
+
"memory_graph_explain",
|
|
118
|
+
"graph_snapshot",
|
|
119
|
+
"memory_feedback",
|
|
120
|
+
"memory_promote",
|
|
121
|
+
"memory_outcome",
|
|
122
|
+
"memory_action_apply",
|
|
123
|
+
"context_checkpoint",
|
|
124
|
+
"briefing",
|
|
125
|
+
"review_list",
|
|
126
|
+
"review_resolve",
|
|
127
|
+
"contradiction_scan_run",
|
|
128
|
+
"memory_summarize_hourly",
|
|
129
|
+
"conversation_index_update",
|
|
130
|
+
"profiling_report",
|
|
131
|
+
"graph_edge_decay_run",
|
|
132
|
+
"live_connectors_run",
|
|
133
|
+
"peer_list",
|
|
134
|
+
"peer_get",
|
|
135
|
+
"peer_set",
|
|
136
|
+
"peer_delete",
|
|
137
|
+
"peer_profile_get",
|
|
138
|
+
"peer_forget",
|
|
139
|
+
"console_state",
|
|
140
|
+
"dreams_status",
|
|
141
|
+
"dreams_run",
|
|
141
142
|
// HTTP-only routes (no direct MCP tool equivalent).
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
143
|
+
"adapters_status",
|
|
144
|
+
"offline_sync_snapshot",
|
|
145
|
+
"offline_sync_snapshot_stream",
|
|
146
|
+
"offline_sync_files",
|
|
147
|
+
"offline_sync_file_content",
|
|
148
|
+
"offline_sync_apply_file_content",
|
|
149
|
+
"offline_sync_apply",
|
|
150
|
+
"lcm_status",
|
|
151
|
+
"memory_list",
|
|
152
|
+
"recall_timings",
|
|
153
|
+
"entity_list",
|
|
154
|
+
"maintenance_status",
|
|
155
|
+
"quality_status",
|
|
156
|
+
"trust_zones_status",
|
|
157
|
+
"trust_zones_records",
|
|
158
|
+
"review_disposition",
|
|
159
|
+
"trust_zones_promote",
|
|
160
|
+
"trust_zones_demo_seed",
|
|
161
|
+
"citations_observed",
|
|
162
|
+
"contradiction_detail",
|
|
163
|
+
"graph_events",
|
|
162
164
|
// Chat surface — conversational memory inspection/correction (issue #1583).
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
"chat_message",
|
|
166
|
+
"chat_events",
|
|
167
|
+
] as const;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Canonical operation ids. One id is shared by the MCP tool, the HTTP route,
|
|
171
|
+
* and the CLI command that expose the same operation. Derived from
|
|
172
|
+
* {@link OPERATION_NAMES} (single source of truth) so the runtime catalog
|
|
173
|
+
* used for token-capability validation cannot drift from the type. The
|
|
174
|
+
* fitness test in `access-surface-catalog.test.ts` treats the registered set
|
|
175
|
+
* as the migration state.
|
|
176
|
+
*/
|
|
177
|
+
export type OperationName = (typeof OPERATION_NAMES)[number];
|
|
165
178
|
|
|
166
179
|
// ---------------------------------------------------------------------------
|
|
167
180
|
// Operation context — what every handler receives
|
|
@@ -206,6 +219,16 @@ export interface OperationSpec<In, Out> {
|
|
|
206
219
|
readonly schema: z.ZodType<In>;
|
|
207
220
|
/** Handler invoked with the parsed input; throws EngramAccessInputError for domain faults. */
|
|
208
221
|
readonly handler: (input: In, ctx: OperationContext) => Promise<Out>;
|
|
222
|
+
/**
|
|
223
|
+
* Marks an operation as inherently FLEET-WIDE / global — it runs across ALL
|
|
224
|
+
* namespaces (or against a single non-namespaced global layer) and carries no
|
|
225
|
+
* `namespace` argument, so the MCP `tools/call` effective-namespace chokepoint
|
|
226
|
+
* never applies. When set, {@link defineOperation}'s run wrapper rejects any
|
|
227
|
+
* namespace-SCOPED token (fail closed) via assertFleetWideOperationAllowed
|
|
228
|
+
* BEFORE the handler — no side effect on denial. Unrestricted/legacy tokens
|
|
229
|
+
* (cron, internal callers, no capability record) are unaffected (issue #1850).
|
|
230
|
+
*/
|
|
231
|
+
readonly fleetWide?: boolean;
|
|
209
232
|
}
|
|
210
233
|
|
|
211
234
|
export interface BoundOperation<In = unknown, Out = unknown> {
|
|
@@ -372,6 +395,22 @@ export function defineOperation<In, Out>(spec: OperationSpec<In, Out>): BoundOpe
|
|
|
372
395
|
if (!parseResult.success) {
|
|
373
396
|
throw new EngramAccessInputError(formatZodIssues(parseResult.error));
|
|
374
397
|
}
|
|
398
|
+
// Per-token capability enforcement (issue #1837): when the presenting
|
|
399
|
+
// token carries an ops allow-list, reject operations not in it. The
|
|
400
|
+
// capability record is carried via AsyncLocalStorage, set once per
|
|
401
|
+
// authorized HTTP/MCP request; absent (CLI/tests/direct callers) ⇒
|
|
402
|
+
// unrestricted. Default-deny ONLY when an ops axis is present — legacy
|
|
403
|
+
// tokens (absent record) and explicit-unrestricted new tokens are
|
|
404
|
+
// unaffected.
|
|
405
|
+
assertOperationAllowed(tokenCapabilityStore.getStore(), spec.name);
|
|
406
|
+
// Fleet-wide / global maintenance ops (issue #1850 round 10): these run
|
|
407
|
+
// across all namespaces with no `namespace` arg, so the tools/call
|
|
408
|
+
// effective-namespace gate never fires. A namespace-SCOPED token must not
|
|
409
|
+
// trigger cross-namespace maintenance — fail closed BEFORE the handler so
|
|
410
|
+
// a denial never leaks a partial mutation. No-op for unrestricted/legacy.
|
|
411
|
+
if (spec.fleetWide) {
|
|
412
|
+
assertFleetWideOperationAllowed(tokenCapabilityStore.getStore());
|
|
413
|
+
}
|
|
375
414
|
return spec.handler(parseResult.data, ctx);
|
|
376
415
|
},
|
|
377
416
|
};
|