@remnic/core 10.0.85 → 10.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.js +72 -71
- package/dist/access-authorization-probe.js +73 -72
- package/dist/access-boundary.d.ts.map +1 -1
- package/dist/access-boundary.js +72 -71
- package/dist/access-cli.js +157 -155
- package/dist/access-cli.js.map +1 -1
- package/dist/access-errors.d.ts +14 -0
- package/dist/access-errors.d.ts.map +1 -1
- package/dist/access-errors.js +5 -1
- package/dist/access-extraction-force-flush.js +72 -71
- package/dist/access-http-briefing.js +73 -72
- package/dist/access-http-query.js +74 -73
- package/dist/access-http.d.ts +12 -0
- package/dist/access-http.d.ts.map +1 -1
- package/dist/access-http.js +95 -94
- package/dist/access-identity-continuity-surface.js +72 -71
- package/dist/access-lcm-surface.js +72 -71
- package/dist/access-mcp.d.ts.map +1 -1
- package/dist/access-mcp.js +82 -81
- package/dist/access-memory-search-fanout.js +2 -2
- package/dist/access-namespace-preflight.js +72 -71
- package/dist/access-observe-write-category.js +10 -9
- package/dist/access-observe-write-surface.js +72 -71
- package/dist/access-offline-manifest.js +8 -8
- package/dist/access-operations-batch.js +73 -72
- package/dist/access-operations.js +80 -79
- package/dist/access-recall-concurrency.js +72 -71
- package/dist/access-recall-diagnostics.js +2 -2
- package/dist/access-recall-response.js +72 -71
- package/dist/access-recall-surface.js +72 -71
- package/dist/access-schema.d.ts.map +1 -1
- package/dist/access-schema.js +9 -8
- package/dist/access-service.d.ts +3 -3
- package/dist/access-service.d.ts.map +1 -1
- package/dist/access-service.js +72 -71
- package/dist/access-surface-catalog.js +74 -73
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-token-capabilities.js +2 -2
- package/dist/active-recall.js +32 -32
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/briefing-deadline.d.ts +2 -2
- package/dist/briefing-deadline.d.ts.map +1 -1
- package/dist/briefing-deadline.js +1 -1
- package/dist/briefing.js +23 -23
- package/dist/buffer-admission.d.ts +22 -0
- package/dist/buffer-admission.d.ts.map +1 -0
- package/dist/buffer-admission.js +13 -0
- package/dist/buffer-eviction.d.ts +4 -5
- package/dist/buffer-eviction.d.ts.map +1 -1
- package/dist/buffer-eviction.js +1 -1
- package/dist/buffer-turn-helpers.d.ts +7 -0
- package/dist/buffer-turn-helpers.d.ts.map +1 -1
- package/dist/buffer-turn-helpers.js +9 -1
- package/dist/buffer-types.d.ts +24 -1
- package/dist/buffer-types.d.ts.map +1 -1
- package/dist/buffer.d.ts +17 -18
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +12 -8
- package/dist/calibration.js +2 -2
- package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/capsule-crypto-7FJQINUR.js.map +1 -0
- package/dist/capsule-import-gate.d.ts +11 -0
- package/dist/capsule-import-gate.d.ts.map +1 -0
- package/dist/capsule-import-gate.js +12 -0
- package/dist/capsule-import-gate.js.map +1 -0
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +25 -25
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-73YVMZ7D.js → chunk-2G4TV2ML.js} +11 -11
- package/dist/{chunk-BMIM6ESC.js → chunk-2JG2NI7C.js} +38 -38
- package/dist/{chunk-IR4C3DP2.js → chunk-2K3AUDH7.js} +2 -2
- package/dist/{chunk-6KFFRMPQ.js → chunk-2N4OUSIA.js} +2 -2
- package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-44FQCC5D.js → chunk-2NUDHVYM.js} +2 -2
- package/dist/{chunk-FK4WC6VK.js → chunk-2U4LMSEX.js} +3 -3
- package/dist/{chunk-LT3CMO65.js → chunk-2XOFVTTT.js} +2 -2
- package/dist/{chunk-I6ORDT54.js → chunk-32CA7B6L.js} +2 -2
- package/dist/{chunk-TQVECGUQ.js → chunk-32YX7EJ3.js} +3 -3
- package/dist/{chunk-H4D5YURJ.js → chunk-3CTKEXXF.js} +120 -118
- package/dist/{chunk-H4D5YURJ.js.map → chunk-3CTKEXXF.js.map} +1 -1
- package/dist/{chunk-HLWXCDUQ.js → chunk-3DAWHP5K.js} +5 -5
- package/dist/{chunk-GBOYOL5L.js → chunk-3PJEDHLD.js} +2 -2
- package/dist/{chunk-ZWTHVUT5.js → chunk-3UZ2VMKD.js} +2 -2
- package/dist/{chunk-2XYDL2FG.js → chunk-3Y5X6YFH.js} +2 -2
- package/dist/{chunk-23B4HLWG.js → chunk-4GMI5HFH.js} +9 -9
- package/dist/{chunk-AP3TSV6S.js → chunk-4LCVA2LW.js} +3 -3
- package/dist/{chunk-MZCGHPIJ.js → chunk-4X7HQKAG.js} +2 -2
- package/dist/{chunk-YNBMBL4C.js → chunk-4XYAWK5H.js} +2 -2
- package/dist/{chunk-2JAT4S7N.js → chunk-5SOSQTVE.js} +2 -2
- package/dist/{chunk-G3T6YMBO.js → chunk-64S6X4IU.js} +7 -7
- package/dist/{chunk-NIV7RPWQ.js → chunk-6BCWFCDG.js} +7 -7
- package/dist/{chunk-V27FK6D6.js → chunk-6XTUZKCZ.js} +2 -2
- package/dist/{chunk-KASJJGRG.js → chunk-6ZELOK6O.js} +3 -8
- package/dist/chunk-6ZELOK6O.js.map +1 -0
- package/dist/{chunk-2ASEDFOA.js → chunk-73UZZFJC.js} +3 -3
- package/dist/{chunk-UHPHH74F.js → chunk-77PDJ4OE.js} +3 -3
- package/dist/{chunk-BATPQNRG.js → chunk-7GSL4LBG.js} +2 -2
- package/dist/{chunk-B6SPPYGJ.js → chunk-7IWRLYFJ.js} +2 -2
- package/dist/{chunk-BUKK5SWA.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-ZXF3O7P4.js → chunk-ARRTLPRC.js} +2 -2
- package/dist/{chunk-S5CQI2KF.js → chunk-B3GKQ6DU.js} +2 -2
- package/dist/{chunk-2URKYLMK.js → chunk-B56LORLY.js} +2 -2
- package/dist/{chunk-4IWEPQEV.js → chunk-BIVKPQ6Q.js} +2 -2
- package/dist/{chunk-DM4RRTN7.js → chunk-BLSHFIR6.js} +7 -6
- package/dist/chunk-BLSHFIR6.js.map +1 -0
- package/dist/{chunk-4DPLCYEK.js → chunk-C2HORX76.js} +3 -3
- package/dist/{chunk-ELWI2R6H.js → chunk-CC4V7HNP.js} +22 -22
- package/dist/{chunk-LGEH473S.js → chunk-CJCTKL6Y.js} +9 -1
- package/dist/chunk-CJCTKL6Y.js.map +1 -0
- package/dist/{chunk-WFDWLWDK.js → chunk-CN7Q3T2J.js} +4 -4
- package/dist/{chunk-GJVGFKOU.js → chunk-CYCEROPR.js} +3 -3
- package/dist/{chunk-CCU7URRP.js → chunk-D5EV6Y2L.js} +3 -3
- package/dist/{chunk-N6II66E5.js → chunk-DT7SNJH6.js} +3 -3
- package/dist/{chunk-FRM4UTDR.js → chunk-DZ7DPDVW.js} +8 -6
- package/dist/chunk-DZ7DPDVW.js.map +1 -0
- package/dist/{chunk-MVOJDLXS.js → chunk-EA2LA5RI.js} +2 -2
- package/dist/{chunk-WBN66HPI.js → chunk-ELHJK7LM.js} +6 -6
- package/dist/{chunk-GKYIRTNX.js → chunk-EQ4U73UH.js} +45 -14
- package/dist/chunk-EQ4U73UH.js.map +1 -0
- package/dist/{chunk-ONN2E5QD.js → chunk-EUBDYOLD.js} +6 -6
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-3LHPTBWG.js → chunk-F74G4KIH.js} +2 -2
- package/dist/{chunk-X7REO4CH.js → chunk-FF3EFLUT.js} +7 -5
- package/dist/chunk-FF3EFLUT.js.map +1 -0
- package/dist/chunk-FKBGK3NC.js +62 -0
- package/dist/chunk-FKBGK3NC.js.map +1 -0
- package/dist/{chunk-X2KO4FK5.js → chunk-FNFURZBZ.js} +5 -5
- package/dist/chunk-FNFURZBZ.js.map +1 -0
- package/dist/{chunk-MYCCO6AA.js → chunk-G54BOKZ6.js} +2 -2
- package/dist/{chunk-JFH6JAGY.js → chunk-G67EUQAB.js} +5 -5
- package/dist/{chunk-TV65NR7L.js → chunk-GULUWOA5.js} +2 -2
- package/dist/{chunk-6DANGCMO.js → chunk-HFUKXOUW.js} +2 -2
- package/dist/{chunk-Y3IYKNBY.js → chunk-HLN2HOXX.js} +2 -2
- package/dist/{chunk-Y43X3E24.js → chunk-IBDWYRDR.js} +3 -3
- package/dist/{chunk-XSFQN7TP.js → chunk-IBGU6AN6.js} +15 -14
- package/dist/chunk-IBGU6AN6.js.map +1 -0
- package/dist/{chunk-AJG2TAMR.js → chunk-IEEV27BC.js} +2 -2
- package/dist/{chunk-FZPDRCOB.js → chunk-IJ3OEECW.js} +4 -4
- package/dist/{chunk-D6THW7PA.js → chunk-IPD5GC7C.js} +2 -2
- package/dist/{chunk-VCVEMQJK.js → chunk-JM2YZKCQ.js} +2 -2
- package/dist/{chunk-H34INI3P.js → chunk-KVSOEVAF.js} +34 -11
- package/dist/chunk-KVSOEVAF.js.map +1 -0
- package/dist/chunk-M3BEJJNV.js +31 -0
- package/dist/chunk-M3BEJJNV.js.map +1 -0
- package/dist/{chunk-OSTFDWZJ.js → chunk-NIVKG3DS.js} +4 -4
- package/dist/{chunk-VZELUMKK.js → chunk-NQP4ZYGG.js} +2 -2
- package/dist/{chunk-3ODZLCHC.js → chunk-NT7F7WJQ.js} +2 -2
- package/dist/{chunk-YO2JEX2Z.js → chunk-OGBQMY46.js} +2 -2
- package/dist/{chunk-O55AGDTI.js → chunk-OL553AWT.js} +10 -10
- package/dist/{chunk-CLVILSBR.js → chunk-OZNBZJ3S.js} +22 -22
- package/dist/{chunk-RNGDKFY2.js → chunk-P452SEKO.js} +2 -2
- package/dist/{chunk-JX3E4XCW.js → chunk-PDOOUXCS.js} +2 -2
- package/dist/{chunk-V45TEVDA.js → chunk-PKZ274PI.js} +3 -3
- package/dist/{chunk-MNYQVYJ4.js → chunk-QD5R6U5J.js} +2 -2
- package/dist/{chunk-DI5ET2IE.js → chunk-QEZ3DW5O.js} +9 -9
- package/dist/{chunk-WYPCJK6K.js → chunk-QKERFEJS.js} +2 -2
- package/dist/{chunk-BLMTOIBK.js → chunk-QKES7GU6.js} +2 -2
- package/dist/{chunk-PCQWKMOL.js → chunk-QNSZYTSG.js} +2 -2
- package/dist/{chunk-433EXTC4.js → chunk-ROGO7FRA.js} +5 -4
- package/dist/{chunk-433EXTC4.js.map → chunk-ROGO7FRA.js.map} +1 -1
- package/dist/{chunk-MHSBOEH7.js → chunk-ROKDHO74.js} +2 -2
- package/dist/{chunk-BLGQUZFB.js → chunk-RWGRSKN5.js} +7 -5
- package/dist/chunk-RWGRSKN5.js.map +1 -0
- package/dist/{chunk-3VU2FDTU.js → chunk-SYKJBS7S.js} +10 -10
- package/dist/{chunk-5BE3FLKL.js → chunk-TAUHAP5J.js} +4 -4
- package/dist/{chunk-QCP75JGO.js → chunk-TFA6HPOA.js} +5 -5
- package/dist/{chunk-SGHV6LZ7.js → chunk-TQ4SCPGQ.js} +67 -51
- package/dist/chunk-TQ4SCPGQ.js.map +1 -0
- package/dist/{chunk-E7V5AK7I.js → chunk-TRMZHGIX.js} +8 -8
- package/dist/{chunk-WBDIZWJQ.js → chunk-TSS3D7ZY.js} +2 -2
- package/dist/{chunk-HVFX2N2G.js → chunk-UAUV3BWS.js} +65 -83
- package/dist/chunk-UAUV3BWS.js.map +1 -0
- package/dist/{chunk-OMYRPMQC.js → chunk-US7KPQA5.js} +2 -2
- package/dist/{chunk-KHZVAISH.js → chunk-UWRHHRDK.js} +2 -2
- package/dist/{chunk-WLNWFHX3.js → chunk-UXXK523X.js} +40 -2
- package/dist/{chunk-WLNWFHX3.js.map → chunk-UXXK523X.js.map} +1 -1
- package/dist/{chunk-SDESKFKT.js → chunk-UYHDMCY2.js} +2 -2
- package/dist/{chunk-YAAKVTZA.js → chunk-VKILERSL.js} +2 -2
- package/dist/{chunk-2TGIKMMZ.js → chunk-WXDTOE6F.js} +2 -2
- package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-P225W4RQ.js → chunk-XU37EJTW.js} +22 -22
- package/dist/chunk-XU37EJTW.js.map +1 -0
- package/dist/{chunk-QA3Y2O6H.js → chunk-YAVIBVCU.js} +2 -2
- package/dist/{chunk-CMRHXPLQ.js → chunk-YL4UKMD7.js} +117 -51
- package/dist/chunk-YL4UKMD7.js.map +1 -0
- package/dist/{chunk-GYNRNKMW.js → chunk-YMJRLT7S.js} +28 -8
- package/dist/chunk-YMJRLT7S.js.map +1 -0
- package/dist/{chunk-E5QEF3JO.js → chunk-YRZPBN46.js} +3 -3
- package/dist/{chunk-FMFCQRDM.js → chunk-ZANNIXXE.js} +3 -3
- package/dist/{chunk-3KGCHTTK.js → chunk-ZBFLV657.js} +3 -3
- package/dist/{chunk-VEFGHRKV.js → chunk-ZOJUWVAU.js} +1 -1
- package/dist/cli.js +117 -116
- package/dist/coding/export-okf-codegraph.js +21 -21
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.js +23 -23
- package/dist/config.js +32 -32
- package/dist/connectors/codex-materialize-runner.js +22 -22
- package/dist/connectors/index.js +26 -26
- package/dist/convergence-refresh.js +24 -24
- package/dist/conversation-index/backend.js +2 -2
- package/dist/corpus-watermark.js +26 -26
- package/dist/dashboard-runtime.js +2 -2
- package/dist/deep-recall-config.js +2 -2
- package/dist/deep-recall-http-glue.js +11 -11
- package/dist/entity-retrieval.js +23 -23
- package/dist/explicit-capture.js +1 -1
- package/dist/external-wiki-access.js +73 -72
- package/dist/extraction-quote-grounding.d.ts +5 -1
- package/dist/extraction-quote-grounding.d.ts.map +1 -1
- package/dist/extraction-quote-grounding.js +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +3 -1
- package/dist/extraction-source-grounding-rules.d.ts.map +1 -1
- package/dist/extraction-source-grounding-rules.js +2 -2
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts.map +1 -1
- package/dist/extraction-source-grounding.js +3 -3
- package/dist/extraction.d.ts.map +1 -1
- package/dist/extraction.js +40 -40
- package/dist/harmonic-retrieval.js +22 -22
- package/dist/index.js +196 -194
- package/dist/lcm/index.js +3 -3
- package/dist/local-llm.js +2 -2
- package/dist/location/index.js +25 -25
- package/dist/maintenance/memory-governance.js +22 -22
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +22 -22
- package/dist/maintenance/rebuild-memory-projection-runner.js +24 -24
- package/dist/maintenance/rebuild-memory-projection.js +23 -23
- package/dist/memory-browse-http-glue.js +2 -2
- package/dist/memory-browse-operations.js +73 -72
- package/dist/memory-browse.js +5 -5
- package/dist/namespaces/migrate.js +23 -23
- package/dist/namespaces/search.d.ts +1 -0
- package/dist/namespaces/search.d.ts.map +1 -1
- package/dist/namespaces/search.js +10 -8
- package/dist/namespaces/storage.js +22 -22
- package/dist/offline-sync-changeset-generations.js +3 -3
- package/dist/offline-sync-embedding-generation.js +2 -2
- package/dist/offline-sync-impression-drain.js +2 -2
- package/dist/offline-sync-snapshot-stream.js +6 -6
- package/dist/offline-sync.js +5 -5
- package/dist/operator-doctor-corpus.js +29 -29
- package/dist/operator-doctor-replica.js +4 -4
- package/dist/operator-toolkit.js +44 -44
- package/dist/orchestration/backlog-scheduler.js +158 -156
- package/dist/orchestration/backlog-scheduler.js.map +1 -1
- package/dist/orchestration/buffer-drain-runner.js +158 -156
- package/dist/orchestration/maintenance.js +36 -36
- package/dist/orchestration/turn-ingestion.d.ts +2 -9
- package/dist/orchestration/turn-ingestion.d.ts.map +1 -1
- package/dist/orchestrator.js +159 -157
- package/dist/qmd.js +4 -4
- package/dist/recall-navigation-http-glue.js +2 -2
- package/dist/recall-navigation-operations.js +73 -72
- package/dist/recall-navigation.js +72 -71
- package/dist/recall-state-view-admission.js +5 -5
- package/dist/recall-why-service.js +5 -5
- package/dist/replica-divergence.js +3 -3
- package/dist/resume-bundles.js +33 -33
- package/dist/search/factory.js +7 -7
- package/dist/search/index.js +11 -11
- package/dist/semantic-consolidation.js +23 -23
- package/dist/semantic-rule-promotion.js +22 -22
- package/dist/semantic-rule-verifier.js +22 -22
- package/dist/source-agent-qualifier.d.ts +2 -0
- package/dist/source-agent-qualifier.d.ts.map +1 -1
- package/dist/source-agent-qualifier.js +33 -33
- package/dist/standup/build.js +23 -23
- package/dist/storage/buffer-drain-claims.js +2 -2
- package/dist/storage/buffer-session-files.js +2 -2
- package/dist/storage.js +23 -23
- package/dist/summarizer.js +3 -3
- package/dist/support-passport/index.js +75 -74
- package/dist/tokens.js +3 -3
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +22 -22
- package/dist/verified-recall.js +22 -22
- package/dist/who-knows-cli.js +24 -24
- package/dist/who-knows.js +23 -23
- package/package.json +2 -2
- package/src/access-boundary.ts +15 -0
- package/src/access-errors.ts +22 -0
- package/src/access-fleet-wide-work-peer.test.ts +236 -0
- package/src/access-http-peer-fleet-wide.test.ts +192 -0
- package/src/access-http.test.ts +249 -4
- package/src/access-http.ts +114 -39
- package/src/access-mcp.test.ts +64 -0
- package/src/access-mcp.ts +17 -7
- package/src/access-observe-replay-durability.test.ts +40 -4
- package/src/access-operations-batch.ts +23 -12
- package/src/access-proto-injection.test.ts +340 -0
- package/src/access-schema.ts +31 -5
- package/src/access-service-capsule-import.test.ts +235 -0
- package/src/access-service.ts +6 -45
- package/src/briefing-deadline.ts +5 -4
- package/src/buffer-admission.ts +45 -0
- package/src/buffer-eviction-backpressure.test.ts +211 -0
- package/src/buffer-eviction.ts +8 -14
- package/src/buffer-incremental-persistence.test.ts +25 -37
- package/src/buffer-session.test.ts +32 -16
- package/src/buffer-turn-helpers.ts +41 -0
- package/src/buffer-types.ts +28 -1
- package/src/buffer.ts +77 -85
- package/src/capsule-import-gate.ts +109 -0
- package/src/extraction-quote-grounding.test.ts +76 -0
- package/src/extraction-quote-grounding.ts +49 -13
- package/src/extraction-source-grounding-rules.ts +6 -1
- package/src/extraction-source-grounding.ts +2 -0
- package/src/extraction.ts +3 -4
- package/src/namespaces/search.test.ts +141 -1
- package/src/namespaces/search.ts +39 -9
- package/src/orchestration/turn-ingestion.ts +38 -39
- package/src/recall-navigation-operations.ts +9 -2
- package/src/source-agent-qualifier.ts +3 -0
- package/dist/chunk-BLGQUZFB.js.map +0 -1
- package/dist/chunk-CMRHXPLQ.js.map +0 -1
- package/dist/chunk-DM4RRTN7.js.map +0 -1
- package/dist/chunk-FRM4UTDR.js.map +0 -1
- package/dist/chunk-GKYIRTNX.js.map +0 -1
- package/dist/chunk-GYNRNKMW.js.map +0 -1
- package/dist/chunk-H34INI3P.js.map +0 -1
- package/dist/chunk-HVFX2N2G.js.map +0 -1
- package/dist/chunk-KASJJGRG.js.map +0 -1
- package/dist/chunk-LGEH473S.js.map +0 -1
- package/dist/chunk-P225W4RQ.js.map +0 -1
- package/dist/chunk-SGHV6LZ7.js.map +0 -1
- package/dist/chunk-X2KO4FK5.js.map +0 -1
- package/dist/chunk-X7REO4CH.js.map +0 -1
- package/dist/chunk-XSFQN7TP.js.map +0 -1
- /package/dist/{capsule-crypto-GWVG7LGC.js.map → buffer-admission.js.map} +0 -0
- /package/dist/{chunk-73YVMZ7D.js.map → chunk-2G4TV2ML.js.map} +0 -0
- /package/dist/{chunk-BMIM6ESC.js.map → chunk-2JG2NI7C.js.map} +0 -0
- /package/dist/{chunk-IR4C3DP2.js.map → chunk-2K3AUDH7.js.map} +0 -0
- /package/dist/{chunk-6KFFRMPQ.js.map → chunk-2N4OUSIA.js.map} +0 -0
- /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-44FQCC5D.js.map → chunk-2NUDHVYM.js.map} +0 -0
- /package/dist/{chunk-FK4WC6VK.js.map → chunk-2U4LMSEX.js.map} +0 -0
- /package/dist/{chunk-LT3CMO65.js.map → chunk-2XOFVTTT.js.map} +0 -0
- /package/dist/{chunk-I6ORDT54.js.map → chunk-32CA7B6L.js.map} +0 -0
- /package/dist/{chunk-TQVECGUQ.js.map → chunk-32YX7EJ3.js.map} +0 -0
- /package/dist/{chunk-HLWXCDUQ.js.map → chunk-3DAWHP5K.js.map} +0 -0
- /package/dist/{chunk-GBOYOL5L.js.map → chunk-3PJEDHLD.js.map} +0 -0
- /package/dist/{chunk-ZWTHVUT5.js.map → chunk-3UZ2VMKD.js.map} +0 -0
- /package/dist/{chunk-2XYDL2FG.js.map → chunk-3Y5X6YFH.js.map} +0 -0
- /package/dist/{chunk-23B4HLWG.js.map → chunk-4GMI5HFH.js.map} +0 -0
- /package/dist/{chunk-AP3TSV6S.js.map → chunk-4LCVA2LW.js.map} +0 -0
- /package/dist/{chunk-MZCGHPIJ.js.map → chunk-4X7HQKAG.js.map} +0 -0
- /package/dist/{chunk-YNBMBL4C.js.map → chunk-4XYAWK5H.js.map} +0 -0
- /package/dist/{chunk-2JAT4S7N.js.map → chunk-5SOSQTVE.js.map} +0 -0
- /package/dist/{chunk-G3T6YMBO.js.map → chunk-64S6X4IU.js.map} +0 -0
- /package/dist/{chunk-NIV7RPWQ.js.map → chunk-6BCWFCDG.js.map} +0 -0
- /package/dist/{chunk-V27FK6D6.js.map → chunk-6XTUZKCZ.js.map} +0 -0
- /package/dist/{chunk-2ASEDFOA.js.map → chunk-73UZZFJC.js.map} +0 -0
- /package/dist/{chunk-UHPHH74F.js.map → chunk-77PDJ4OE.js.map} +0 -0
- /package/dist/{chunk-BATPQNRG.js.map → chunk-7GSL4LBG.js.map} +0 -0
- /package/dist/{chunk-B6SPPYGJ.js.map → chunk-7IWRLYFJ.js.map} +0 -0
- /package/dist/{chunk-BUKK5SWA.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-ZXF3O7P4.js.map → chunk-ARRTLPRC.js.map} +0 -0
- /package/dist/{chunk-S5CQI2KF.js.map → chunk-B3GKQ6DU.js.map} +0 -0
- /package/dist/{chunk-2URKYLMK.js.map → chunk-B56LORLY.js.map} +0 -0
- /package/dist/{chunk-4IWEPQEV.js.map → chunk-BIVKPQ6Q.js.map} +0 -0
- /package/dist/{chunk-4DPLCYEK.js.map → chunk-C2HORX76.js.map} +0 -0
- /package/dist/{chunk-ELWI2R6H.js.map → chunk-CC4V7HNP.js.map} +0 -0
- /package/dist/{chunk-WFDWLWDK.js.map → chunk-CN7Q3T2J.js.map} +0 -0
- /package/dist/{chunk-GJVGFKOU.js.map → chunk-CYCEROPR.js.map} +0 -0
- /package/dist/{chunk-CCU7URRP.js.map → chunk-D5EV6Y2L.js.map} +0 -0
- /package/dist/{chunk-N6II66E5.js.map → chunk-DT7SNJH6.js.map} +0 -0
- /package/dist/{chunk-MVOJDLXS.js.map → chunk-EA2LA5RI.js.map} +0 -0
- /package/dist/{chunk-WBN66HPI.js.map → chunk-ELHJK7LM.js.map} +0 -0
- /package/dist/{chunk-ONN2E5QD.js.map → chunk-EUBDYOLD.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-3LHPTBWG.js.map → chunk-F74G4KIH.js.map} +0 -0
- /package/dist/{chunk-MYCCO6AA.js.map → chunk-G54BOKZ6.js.map} +0 -0
- /package/dist/{chunk-JFH6JAGY.js.map → chunk-G67EUQAB.js.map} +0 -0
- /package/dist/{chunk-TV65NR7L.js.map → chunk-GULUWOA5.js.map} +0 -0
- /package/dist/{chunk-6DANGCMO.js.map → chunk-HFUKXOUW.js.map} +0 -0
- /package/dist/{chunk-Y3IYKNBY.js.map → chunk-HLN2HOXX.js.map} +0 -0
- /package/dist/{chunk-Y43X3E24.js.map → chunk-IBDWYRDR.js.map} +0 -0
- /package/dist/{chunk-AJG2TAMR.js.map → chunk-IEEV27BC.js.map} +0 -0
- /package/dist/{chunk-FZPDRCOB.js.map → chunk-IJ3OEECW.js.map} +0 -0
- /package/dist/{chunk-D6THW7PA.js.map → chunk-IPD5GC7C.js.map} +0 -0
- /package/dist/{chunk-VCVEMQJK.js.map → chunk-JM2YZKCQ.js.map} +0 -0
- /package/dist/{chunk-OSTFDWZJ.js.map → chunk-NIVKG3DS.js.map} +0 -0
- /package/dist/{chunk-VZELUMKK.js.map → chunk-NQP4ZYGG.js.map} +0 -0
- /package/dist/{chunk-3ODZLCHC.js.map → chunk-NT7F7WJQ.js.map} +0 -0
- /package/dist/{chunk-YO2JEX2Z.js.map → chunk-OGBQMY46.js.map} +0 -0
- /package/dist/{chunk-O55AGDTI.js.map → chunk-OL553AWT.js.map} +0 -0
- /package/dist/{chunk-CLVILSBR.js.map → chunk-OZNBZJ3S.js.map} +0 -0
- /package/dist/{chunk-RNGDKFY2.js.map → chunk-P452SEKO.js.map} +0 -0
- /package/dist/{chunk-JX3E4XCW.js.map → chunk-PDOOUXCS.js.map} +0 -0
- /package/dist/{chunk-V45TEVDA.js.map → chunk-PKZ274PI.js.map} +0 -0
- /package/dist/{chunk-MNYQVYJ4.js.map → chunk-QD5R6U5J.js.map} +0 -0
- /package/dist/{chunk-DI5ET2IE.js.map → chunk-QEZ3DW5O.js.map} +0 -0
- /package/dist/{chunk-WYPCJK6K.js.map → chunk-QKERFEJS.js.map} +0 -0
- /package/dist/{chunk-BLMTOIBK.js.map → chunk-QKES7GU6.js.map} +0 -0
- /package/dist/{chunk-PCQWKMOL.js.map → chunk-QNSZYTSG.js.map} +0 -0
- /package/dist/{chunk-MHSBOEH7.js.map → chunk-ROKDHO74.js.map} +0 -0
- /package/dist/{chunk-3VU2FDTU.js.map → chunk-SYKJBS7S.js.map} +0 -0
- /package/dist/{chunk-5BE3FLKL.js.map → chunk-TAUHAP5J.js.map} +0 -0
- /package/dist/{chunk-QCP75JGO.js.map → chunk-TFA6HPOA.js.map} +0 -0
- /package/dist/{chunk-E7V5AK7I.js.map → chunk-TRMZHGIX.js.map} +0 -0
- /package/dist/{chunk-WBDIZWJQ.js.map → chunk-TSS3D7ZY.js.map} +0 -0
- /package/dist/{chunk-OMYRPMQC.js.map → chunk-US7KPQA5.js.map} +0 -0
- /package/dist/{chunk-KHZVAISH.js.map → chunk-UWRHHRDK.js.map} +0 -0
- /package/dist/{chunk-SDESKFKT.js.map → chunk-UYHDMCY2.js.map} +0 -0
- /package/dist/{chunk-YAAKVTZA.js.map → chunk-VKILERSL.js.map} +0 -0
- /package/dist/{chunk-2TGIKMMZ.js.map → chunk-WXDTOE6F.js.map} +0 -0
- /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-QA3Y2O6H.js.map → chunk-YAVIBVCU.js.map} +0 -0
- /package/dist/{chunk-E5QEF3JO.js.map → chunk-YRZPBN46.js.map} +0 -0
- /package/dist/{chunk-FMFCQRDM.js.map → chunk-ZANNIXXE.js.map} +0 -0
- /package/dist/{chunk-3KGCHTTK.js.map → chunk-ZBFLV657.js.map} +0 -0
- /package/dist/{chunk-VEFGHRKV.js.map → chunk-ZOJUWVAU.js.map} +0 -0
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,28 +4,28 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-QD5R6U5J.js";
|
|
8
|
+
import "./chunk-IBDWYRDR.js";
|
|
9
|
+
import "./chunk-CC4V7HNP.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-QGVCFVX6.js";
|
|
12
12
|
import "./chunk-IGOW4TJE.js";
|
|
13
|
+
import "./chunk-NT7F7WJQ.js";
|
|
13
14
|
import "./chunk-G6OFEGUR.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-KVSOEVAF.js";
|
|
16
|
+
import "./chunk-QEZ3DW5O.js";
|
|
17
|
+
import "./chunk-PFUXPTBT.js";
|
|
18
|
+
import "./chunk-CYEPCZN5.js";
|
|
17
19
|
import "./chunk-DLZGSZVC.js";
|
|
18
20
|
import "./chunk-OVZIYLBZ.js";
|
|
19
21
|
import "./chunk-EXYT52NR.js";
|
|
20
22
|
import "./chunk-DOJBV6WR.js";
|
|
21
|
-
import "./chunk-PFUXPTBT.js";
|
|
22
23
|
import "./chunk-WNEVEMJ3.js";
|
|
23
24
|
import "./chunk-Y5NLBXPV.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-QCP75JGO.js";
|
|
26
|
-
import "./chunk-A7Q43EUZ.js";
|
|
25
|
+
import "./chunk-TFA6HPOA.js";
|
|
27
26
|
import "./chunk-F4TWWUMP.js";
|
|
28
27
|
import "./chunk-72A4L5JJ.js";
|
|
28
|
+
import "./chunk-A7Q43EUZ.js";
|
|
29
29
|
import "./chunk-S2V7RUCL.js";
|
|
30
30
|
import "./chunk-PPUNC7UX.js";
|
|
31
31
|
import "./chunk-X3724WL4.js";
|
|
@@ -33,19 +33,19 @@ import "./chunk-S2HLHAZ4.js";
|
|
|
33
33
|
import "./chunk-MRPOZBJC.js";
|
|
34
34
|
import "./chunk-DM2T26WE.js";
|
|
35
35
|
import "./chunk-LDXUBPMO.js";
|
|
36
|
-
import "./chunk-S45INSV3.js";
|
|
37
36
|
import "./chunk-QFEDITXM.js";
|
|
38
37
|
import "./chunk-AAD2ZS6P.js";
|
|
38
|
+
import "./chunk-S45INSV3.js";
|
|
39
39
|
import "./chunk-FHGWKODN.js";
|
|
40
|
+
import "./chunk-YXZG5TVN.js";
|
|
40
41
|
import "./chunk-ZIKENA2C.js";
|
|
41
42
|
import "./chunk-3OUGSOJP.js";
|
|
42
43
|
import "./chunk-SCU65EZI.js";
|
|
43
44
|
import "./chunk-3ONXXHQO.js";
|
|
44
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-3WU7XOFN.js";
|
|
45
46
|
import "./chunk-P4GUQSK3.js";
|
|
46
47
|
import "./chunk-4LZ7SVKM.js";
|
|
47
48
|
import "./chunk-YHTG64XV.js";
|
|
48
|
-
import "./chunk-3WU7XOFN.js";
|
|
49
49
|
import "./chunk-G7D6GZ5J.js";
|
|
50
50
|
import "./chunk-ER7XANP3.js";
|
|
51
51
|
import "./chunk-M5GVCJSJ.js";
|
|
@@ -54,6 +54,15 @@ import "./chunk-IAYUTGF2.js";
|
|
|
54
54
|
import "./chunk-5WITETWU.js";
|
|
55
55
|
import "./chunk-6CIAGZ6X.js";
|
|
56
56
|
import "./chunk-7CT3AI52.js";
|
|
57
|
+
import "./chunk-ELHJK7LM.js";
|
|
58
|
+
import "./chunk-IUM3VSHI.js";
|
|
59
|
+
import "./chunk-NWA6IXR3.js";
|
|
60
|
+
import "./chunk-VILPVT4S.js";
|
|
61
|
+
import "./chunk-AF2XMJKD.js";
|
|
62
|
+
import "./chunk-OR42ZI54.js";
|
|
63
|
+
import "./chunk-23G5P7TA.js";
|
|
64
|
+
import "./chunk-C64XATK7.js";
|
|
65
|
+
import "./chunk-42JKGUFJ.js";
|
|
57
66
|
import "./chunk-ZU5JDLOH.js";
|
|
58
67
|
import "./chunk-I55KAVET.js";
|
|
59
68
|
import "./chunk-L2EXJQJP.js";
|
|
@@ -62,16 +71,7 @@ import "./chunk-ZU3NJNO7.js";
|
|
|
62
71
|
import "./chunk-E2AWJ7KQ.js";
|
|
63
72
|
import "./chunk-7VLBZKNB.js";
|
|
64
73
|
import "./chunk-Y33KJ556.js";
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-NWA6IXR3.js";
|
|
67
|
-
import "./chunk-VILPVT4S.js";
|
|
68
|
-
import "./chunk-AF2XMJKD.js";
|
|
69
|
-
import "./chunk-OR42ZI54.js";
|
|
70
|
-
import "./chunk-IUM3VSHI.js";
|
|
71
|
-
import "./chunk-C64XATK7.js";
|
|
72
|
-
import "./chunk-42JKGUFJ.js";
|
|
73
|
-
import "./chunk-23G5P7TA.js";
|
|
74
|
-
import "./chunk-WLNWFHX3.js";
|
|
74
|
+
import "./chunk-UXXK523X.js";
|
|
75
75
|
import "./chunk-PJKTFXE2.js";
|
|
76
76
|
import "./chunk-W5BIQOAJ.js";
|
|
77
77
|
import "./chunk-HADD45AR.js";
|
|
@@ -108,7 +108,7 @@ import "./chunk-X4OZMANG.js";
|
|
|
108
108
|
import "./chunk-ZEFVK7XC.js";
|
|
109
109
|
import "./chunk-6KH5NLQS.js";
|
|
110
110
|
import "./chunk-P2QRMMVQ.js";
|
|
111
|
-
import "./chunk-
|
|
111
|
+
import "./chunk-CJCTKL6Y.js";
|
|
112
112
|
import "./chunk-R2MBW2S4.js";
|
|
113
113
|
import "./chunk-QUIRIG2P.js";
|
|
114
114
|
import "./chunk-LDPPTPO5.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,27 +9,27 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-IBDWYRDR.js";
|
|
13
|
+
import "./chunk-CC4V7HNP.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-QGVCFVX6.js";
|
|
16
16
|
import "./chunk-IGOW4TJE.js";
|
|
17
|
+
import "./chunk-NT7F7WJQ.js";
|
|
17
18
|
import "./chunk-G6OFEGUR.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-KVSOEVAF.js";
|
|
20
|
+
import "./chunk-QEZ3DW5O.js";
|
|
21
|
+
import "./chunk-PFUXPTBT.js";
|
|
22
|
+
import "./chunk-CYEPCZN5.js";
|
|
21
23
|
import "./chunk-DLZGSZVC.js";
|
|
22
24
|
import "./chunk-OVZIYLBZ.js";
|
|
23
25
|
import "./chunk-EXYT52NR.js";
|
|
24
26
|
import "./chunk-DOJBV6WR.js";
|
|
25
|
-
import "./chunk-PFUXPTBT.js";
|
|
26
27
|
import "./chunk-WNEVEMJ3.js";
|
|
27
28
|
import "./chunk-Y5NLBXPV.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-QCP75JGO.js";
|
|
30
|
-
import "./chunk-A7Q43EUZ.js";
|
|
29
|
+
import "./chunk-TFA6HPOA.js";
|
|
31
30
|
import "./chunk-F4TWWUMP.js";
|
|
32
31
|
import "./chunk-72A4L5JJ.js";
|
|
32
|
+
import "./chunk-A7Q43EUZ.js";
|
|
33
33
|
import "./chunk-S2V7RUCL.js";
|
|
34
34
|
import "./chunk-PPUNC7UX.js";
|
|
35
35
|
import "./chunk-X3724WL4.js";
|
|
@@ -37,19 +37,19 @@ import "./chunk-S2HLHAZ4.js";
|
|
|
37
37
|
import "./chunk-MRPOZBJC.js";
|
|
38
38
|
import "./chunk-DM2T26WE.js";
|
|
39
39
|
import "./chunk-LDXUBPMO.js";
|
|
40
|
-
import "./chunk-S45INSV3.js";
|
|
41
40
|
import "./chunk-QFEDITXM.js";
|
|
42
41
|
import "./chunk-AAD2ZS6P.js";
|
|
42
|
+
import "./chunk-S45INSV3.js";
|
|
43
43
|
import "./chunk-FHGWKODN.js";
|
|
44
|
+
import "./chunk-YXZG5TVN.js";
|
|
44
45
|
import "./chunk-ZIKENA2C.js";
|
|
45
46
|
import "./chunk-3OUGSOJP.js";
|
|
46
47
|
import "./chunk-SCU65EZI.js";
|
|
47
48
|
import "./chunk-3ONXXHQO.js";
|
|
48
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-3WU7XOFN.js";
|
|
49
50
|
import "./chunk-P4GUQSK3.js";
|
|
50
51
|
import "./chunk-4LZ7SVKM.js";
|
|
51
52
|
import "./chunk-YHTG64XV.js";
|
|
52
|
-
import "./chunk-3WU7XOFN.js";
|
|
53
53
|
import "./chunk-G7D6GZ5J.js";
|
|
54
54
|
import "./chunk-ER7XANP3.js";
|
|
55
55
|
import "./chunk-M5GVCJSJ.js";
|
|
@@ -58,6 +58,15 @@ import "./chunk-IAYUTGF2.js";
|
|
|
58
58
|
import "./chunk-5WITETWU.js";
|
|
59
59
|
import "./chunk-6CIAGZ6X.js";
|
|
60
60
|
import "./chunk-7CT3AI52.js";
|
|
61
|
+
import "./chunk-ELHJK7LM.js";
|
|
62
|
+
import "./chunk-IUM3VSHI.js";
|
|
63
|
+
import "./chunk-NWA6IXR3.js";
|
|
64
|
+
import "./chunk-VILPVT4S.js";
|
|
65
|
+
import "./chunk-AF2XMJKD.js";
|
|
66
|
+
import "./chunk-OR42ZI54.js";
|
|
67
|
+
import "./chunk-23G5P7TA.js";
|
|
68
|
+
import "./chunk-C64XATK7.js";
|
|
69
|
+
import "./chunk-42JKGUFJ.js";
|
|
61
70
|
import "./chunk-ZU5JDLOH.js";
|
|
62
71
|
import "./chunk-I55KAVET.js";
|
|
63
72
|
import "./chunk-L2EXJQJP.js";
|
|
@@ -66,16 +75,7 @@ import "./chunk-ZU3NJNO7.js";
|
|
|
66
75
|
import "./chunk-E2AWJ7KQ.js";
|
|
67
76
|
import "./chunk-7VLBZKNB.js";
|
|
68
77
|
import "./chunk-Y33KJ556.js";
|
|
69
|
-
import "./chunk-
|
|
70
|
-
import "./chunk-NWA6IXR3.js";
|
|
71
|
-
import "./chunk-VILPVT4S.js";
|
|
72
|
-
import "./chunk-AF2XMJKD.js";
|
|
73
|
-
import "./chunk-OR42ZI54.js";
|
|
74
|
-
import "./chunk-IUM3VSHI.js";
|
|
75
|
-
import "./chunk-C64XATK7.js";
|
|
76
|
-
import "./chunk-42JKGUFJ.js";
|
|
77
|
-
import "./chunk-23G5P7TA.js";
|
|
78
|
-
import "./chunk-WLNWFHX3.js";
|
|
78
|
+
import "./chunk-UXXK523X.js";
|
|
79
79
|
import "./chunk-PJKTFXE2.js";
|
|
80
80
|
import "./chunk-W5BIQOAJ.js";
|
|
81
81
|
import "./chunk-HADD45AR.js";
|
|
@@ -112,7 +112,7 @@ import "./chunk-X4OZMANG.js";
|
|
|
112
112
|
import "./chunk-ZEFVK7XC.js";
|
|
113
113
|
import "./chunk-6KH5NLQS.js";
|
|
114
114
|
import "./chunk-P2QRMMVQ.js";
|
|
115
|
-
import "./chunk-
|
|
115
|
+
import "./chunk-CJCTKL6Y.js";
|
|
116
116
|
import "./chunk-R2MBW2S4.js";
|
|
117
117
|
import "./chunk-QUIRIG2P.js";
|
|
118
118
|
import "./chunk-LDPPTPO5.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.87",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3386,7 +3386,7 @@
|
|
|
3386
3386
|
"core"
|
|
3387
3387
|
],
|
|
3388
3388
|
"peerDependencies": {
|
|
3389
|
-
"@remnic/coding-graph": "^10.0.
|
|
3389
|
+
"@remnic/coding-graph": "^10.0.87"
|
|
3390
3390
|
},
|
|
3391
3391
|
"peerDependenciesMeta": {
|
|
3392
3392
|
"@remnic/coding-graph": {
|
package/src/access-boundary.ts
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
|
|
20
20
|
import {
|
|
21
|
+
assertNamespaceAllowed,
|
|
21
22
|
assertOperationAuthorizationAllowed,
|
|
22
23
|
tokenCapabilityStore,
|
|
23
24
|
} from "./access-token-capabilities.js";
|
|
@@ -493,6 +494,20 @@ export function defineOperation<In, Out>(spec: OperationSpec<In, Out>): BoundOpe
|
|
|
493
494
|
throw new EngramAccessInputError(formatZodIssues(parseResult.error));
|
|
494
495
|
}
|
|
495
496
|
assertOperationAuthorizationAllowed(tokenCapabilityStore.getStore(), spec);
|
|
497
|
+
// Post-parse namespace re-check (issue #3225 B1): the transports authorize
|
|
498
|
+
// the RAW namespace before preprocessing. Re-check the PARSED value so a
|
|
499
|
+
// namespace that only appears after validation cannot bypass the token
|
|
500
|
+
// allow-list. Absent namespaces keep the transport check; no default is
|
|
501
|
+
// invented here.
|
|
502
|
+
if (operationRequiresAuthorizedNamespace(spec.name)) {
|
|
503
|
+
// SAFETY: namespace-bearing schemas parse `namespace` as a non-empty
|
|
504
|
+
// string, an explicit null (transport null-for-absent idiom), or
|
|
505
|
+
// undefined; falsy spellings mean absent and keep the transport check.
|
|
506
|
+
const parsedNamespace = (parseResult.data as { namespace?: string | null }).namespace;
|
|
507
|
+
if (parsedNamespace) {
|
|
508
|
+
assertNamespaceAllowed(tokenCapabilityStore.getStore(), parsedNamespace);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
496
511
|
return spec.handler(parseResult.data, { ...ctx, rawInput });
|
|
497
512
|
},
|
|
498
513
|
};
|
package/src/access-errors.ts
CHANGED
|
@@ -35,6 +35,28 @@ export class NamespaceNotWritableError extends EngramAccessInputError {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
// ─── Reserved argument keys (issue #3225 B1) ──────────────────────────────
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Dictionary keys that change object shape or prototype resolution. A JSON
|
|
42
|
+
* body can carry them as own members; the request preprocessors reject them
|
|
43
|
+
* before copying, so a decoded `__proto__` member cannot become an inherited
|
|
44
|
+
* schema field. Lives in this lowest module so the boundary and wire schema
|
|
45
|
+
* layers share one implementation without an import cycle.
|
|
46
|
+
*/
|
|
47
|
+
export const RESERVED_PROTO_KEYS: readonly string[] = ["__proto__", "constructor", "prototype"];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Reject the reserved keys with the input-error type, so a client that
|
|
51
|
+
* submits a magic dictionary key gets a validation error instead of a
|
|
52
|
+
* silently reshaped request object.
|
|
53
|
+
*/
|
|
54
|
+
export function rejectReservedArgumentKey(key: string): void {
|
|
55
|
+
if (RESERVED_PROTO_KEYS.includes(key)) {
|
|
56
|
+
throw new EngramAccessInputError(`${key} is not a permitted argument key`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
38
60
|
// ─── Levenshtein distance ─────────────────────────────────────────────────
|
|
39
61
|
|
|
40
62
|
/**
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { mkdtemp, readdir, readFile, rm } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import test from "node:test";
|
|
6
|
+
|
|
7
|
+
import "./access-operations-batch.js"; // registration side effect: the real operations
|
|
8
|
+
import { getOperation } from "./access-boundary.js";
|
|
9
|
+
import { EngramAccessService } from "./access-service.js";
|
|
10
|
+
import { EngramAccessForbiddenError } from "./access-errors.js";
|
|
11
|
+
import { tokenCapabilityStore, type TokenCapabilities } from "./access-token-capabilities.js";
|
|
12
|
+
import { Orchestrator } from "./orchestrator.js";
|
|
13
|
+
import { parseConfig } from "./config.js";
|
|
14
|
+
import { writePeer, writePeerProfile } from "./peers/index.js";
|
|
15
|
+
import { WorkStorage } from "./work/storage.js";
|
|
16
|
+
|
|
17
|
+
// Issue #3225 B3: work_task / work_project / work_board and the six peer
|
|
18
|
+
// operations run against GLOBAL stores, so a namespace argument cannot
|
|
19
|
+
// isolate them. They must carry fleetWide: true like the other cross-fleet
|
|
20
|
+
// operations, and the HTTP peer routes must enforce the same policy.
|
|
21
|
+
|
|
22
|
+
const PEER_ID = "b3-target-peer";
|
|
23
|
+
const NOW = "2026-11-11T00:00:00.000Z";
|
|
24
|
+
|
|
25
|
+
/** The nine operations that touch a global store (issue #3225 B3). */
|
|
26
|
+
const GLOBAL_OPS = [
|
|
27
|
+
"work_task",
|
|
28
|
+
"work_project",
|
|
29
|
+
"work_board",
|
|
30
|
+
"peer_list",
|
|
31
|
+
"peer_get",
|
|
32
|
+
"peer_set",
|
|
33
|
+
"peer_delete",
|
|
34
|
+
"peer_profile_get",
|
|
35
|
+
"peer_forget",
|
|
36
|
+
] as const;
|
|
37
|
+
|
|
38
|
+
type GlobalOpName = (typeof GLOBAL_OPS)[number];
|
|
39
|
+
|
|
40
|
+
/** Envelope fields the operations under test read; their schemas pass open objects through. */
|
|
41
|
+
interface OpEnvelope {
|
|
42
|
+
action?: string;
|
|
43
|
+
id?: string;
|
|
44
|
+
title?: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
projectId?: string;
|
|
47
|
+
snapshotJson?: string;
|
|
48
|
+
kind?: string;
|
|
49
|
+
displayName?: string;
|
|
50
|
+
confirm?: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Every registered handler answers with a `result` envelope. */
|
|
54
|
+
interface OpOutput<T> {
|
|
55
|
+
result: T;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface Fixture {
|
|
59
|
+
root: string;
|
|
60
|
+
service: EngramAccessService;
|
|
61
|
+
cleanup: () => Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function createFixture(): Promise<Fixture> {
|
|
65
|
+
const root = await mkdtemp(path.join(tmpdir(), "remnic-b3-fleet-wide-"));
|
|
66
|
+
const orchestrator = new Orchestrator(
|
|
67
|
+
parseConfig({ memoryDir: root, namespacesEnabled: false, defaultNamespace: "global" }),
|
|
68
|
+
);
|
|
69
|
+
const storage = await orchestrator.getStorage();
|
|
70
|
+
await storage.ensureDirectories();
|
|
71
|
+
const service = new EngramAccessService(orchestrator);
|
|
72
|
+
return { root, service, cleanup: () => rm(root, { recursive: true, force: true }) };
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Seed one synthetic record in each global store the nine operations touch. */
|
|
76
|
+
async function seedGlobalRecords(root: string): Promise<void> {
|
|
77
|
+
const work = new WorkStorage(root);
|
|
78
|
+
await work.ensureDirectories();
|
|
79
|
+
await work.createTask({ title: "seeded task", description: "seeded" });
|
|
80
|
+
await work.createProject({ name: "seeded project", description: "seeded" });
|
|
81
|
+
await writePeer(root, {
|
|
82
|
+
id: PEER_ID,
|
|
83
|
+
kind: "agent",
|
|
84
|
+
displayName: "seeded peer",
|
|
85
|
+
createdAt: NOW,
|
|
86
|
+
updatedAt: NOW,
|
|
87
|
+
});
|
|
88
|
+
await writePeerProfile(root, {
|
|
89
|
+
peerId: PEER_ID,
|
|
90
|
+
updatedAt: NOW,
|
|
91
|
+
fields: { communication_style: "seeded" },
|
|
92
|
+
provenance: {},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Sorted relpath:content lines for every file under root (mutation detector). */
|
|
97
|
+
async function snapshotDir(root: string): Promise<string[]> {
|
|
98
|
+
const entries = await readdir(root, { recursive: true, withFileTypes: true });
|
|
99
|
+
const lines: string[] = [];
|
|
100
|
+
for (const entry of entries) {
|
|
101
|
+
if (!entry.isFile()) continue;
|
|
102
|
+
const abs = path.join(entry.parentPath, entry.name);
|
|
103
|
+
const content = await readFile(abs, "utf8");
|
|
104
|
+
lines.push(`${path.relative(root, abs)}:${content}`);
|
|
105
|
+
}
|
|
106
|
+
return lines.sort();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Run the real registered operation under an optional capability record.
|
|
111
|
+
* The generic T names the registered handler's documented result shape.
|
|
112
|
+
*/
|
|
113
|
+
async function runOp<T>(
|
|
114
|
+
name: GlobalOpName,
|
|
115
|
+
input: OpEnvelope,
|
|
116
|
+
service: EngramAccessService,
|
|
117
|
+
capabilities?: TokenCapabilities,
|
|
118
|
+
): Promise<OpOutput<T>> {
|
|
119
|
+
const op = getOperation(name);
|
|
120
|
+
assert.ok(op, `operation must be registered: ${name}`);
|
|
121
|
+
const run = () => op.run(input, { service });
|
|
122
|
+
// SAFETY: the boundary validates the envelope, then the handler returns its
|
|
123
|
+
// documented `{ result }` shape; T is that shape as named by the caller.
|
|
124
|
+
const output = (capabilities === undefined ? await run() : await tokenCapabilityStore.run(capabilities, run)) as OpOutput<T>;
|
|
125
|
+
return output;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
test("B3: a one-namespace token is denied on every global work and peer op BEFORE any read or mutation", async () => {
|
|
129
|
+
const fixture = await createFixture();
|
|
130
|
+
try {
|
|
131
|
+
await seedGlobalRecords(fixture.root);
|
|
132
|
+
const before = await snapshotDir(fixture.root);
|
|
133
|
+
|
|
134
|
+
const mutatingInput = {
|
|
135
|
+
work_task: { action: "create", title: "intruder task" },
|
|
136
|
+
work_project: { action: "create", name: "intruder project" },
|
|
137
|
+
work_board: { action: "import_snapshot", projectId: "proj-x", snapshotJson: "{}" },
|
|
138
|
+
peer_list: {},
|
|
139
|
+
peer_get: { id: PEER_ID },
|
|
140
|
+
peer_set: { id: PEER_ID, displayName: "hijacked" },
|
|
141
|
+
peer_delete: { id: PEER_ID },
|
|
142
|
+
peer_profile_get: { id: PEER_ID },
|
|
143
|
+
peer_forget: { id: PEER_ID, confirm: "yes" },
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
for (const namespaces of [["ns_a"], []]) {
|
|
147
|
+
const caps: TokenCapabilities = { version: 1, namespaces };
|
|
148
|
+
for (const name of GLOBAL_OPS) {
|
|
149
|
+
await assert.rejects(
|
|
150
|
+
() => runOp(name, mutatingInput[name], fixture.service, caps),
|
|
151
|
+
(err: Error) =>
|
|
152
|
+
err instanceof EngramAccessForbiddenError && /scoped to specific namespaces/.test(err.message),
|
|
153
|
+
`${name} must reject a token restricted to ${JSON.stringify(namespaces)}`,
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const after = await snapshotDir(fixture.root);
|
|
159
|
+
assert.deepEqual(after, before, "denials must not change any file in any global store");
|
|
160
|
+
} finally {
|
|
161
|
+
await fixture.cleanup();
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
test("B3: an ops-scoped token without a namespace axis may use its permitted global ops", async () => {
|
|
166
|
+
const fixture = await createFixture();
|
|
167
|
+
try {
|
|
168
|
+
const caps: TokenCapabilities = { version: 1, ops: [...GLOBAL_OPS] };
|
|
169
|
+
|
|
170
|
+
const created = await runOp<{ task: { id: string } }>(
|
|
171
|
+
"work_task",
|
|
172
|
+
{ action: "create", title: "ops token task" },
|
|
173
|
+
fixture.service,
|
|
174
|
+
caps,
|
|
175
|
+
);
|
|
176
|
+
assert.ok(created.result.task.id, "ops-scoped token creates a work task");
|
|
177
|
+
|
|
178
|
+
const listed = await runOp<{ count: number }>("work_task", { action: "list" }, fixture.service, caps);
|
|
179
|
+
assert.equal(listed.result.count, 1, "ops-scoped token reads its own created task");
|
|
180
|
+
|
|
181
|
+
const peer = await runOp<{ created: boolean }>(
|
|
182
|
+
"peer_set",
|
|
183
|
+
{ id: "ops-token-peer", kind: "agent" },
|
|
184
|
+
fixture.service,
|
|
185
|
+
caps,
|
|
186
|
+
);
|
|
187
|
+
assert.equal(peer.result.created, true, "ops-scoped token registers a peer");
|
|
188
|
+
|
|
189
|
+
const got = await runOp<{ found: boolean }>("peer_get", { id: "ops-token-peer" }, fixture.service, caps);
|
|
190
|
+
assert.equal(got.result.found, true, "ops-scoped token reads a peer");
|
|
191
|
+
|
|
192
|
+
const forgotten = await runOp<{ purged: boolean }>(
|
|
193
|
+
"peer_forget",
|
|
194
|
+
{ id: "ops-token-peer", confirm: "yes" },
|
|
195
|
+
fixture.service,
|
|
196
|
+
caps,
|
|
197
|
+
);
|
|
198
|
+
assert.equal(forgotten.result.purged, true, "ops-scoped token may run the destructive purge it is granted");
|
|
199
|
+
} finally {
|
|
200
|
+
await fixture.cleanup();
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
test("B3: a legacy unrestricted token (no capability record) retains access to global ops", async () => {
|
|
205
|
+
const fixture = await createFixture();
|
|
206
|
+
try {
|
|
207
|
+
await seedGlobalRecords(fixture.root);
|
|
208
|
+
|
|
209
|
+
const listed = await runOp<{ count: number }>("work_task", { action: "list" }, fixture.service);
|
|
210
|
+
assert.equal(listed.result.count, 1, "legacy token lists work tasks");
|
|
211
|
+
|
|
212
|
+
const peers = await runOp<{ peers: { id: string }[] }>("peer_list", {}, fixture.service);
|
|
213
|
+
assert.deepEqual(
|
|
214
|
+
peers.result.peers.map((p) => p.id),
|
|
215
|
+
[PEER_ID],
|
|
216
|
+
"legacy token lists the seeded peer",
|
|
217
|
+
);
|
|
218
|
+
} finally {
|
|
219
|
+
await fixture.cleanup();
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
test("B3: peer_forget confirmation requirement is unchanged through the boundary", async () => {
|
|
224
|
+
const fixture = await createFixture();
|
|
225
|
+
try {
|
|
226
|
+
await seedGlobalRecords(fixture.root);
|
|
227
|
+
await assert.rejects(
|
|
228
|
+
() => runOp("peer_forget", { id: PEER_ID, confirm: "no" }, fixture.service),
|
|
229
|
+
(err: Error) => /confirm must be 'yes'/.test(err.message),
|
|
230
|
+
);
|
|
231
|
+
const files = await snapshotDir(fixture.root);
|
|
232
|
+
assert.ok(files.some((line) => line.includes(`${PEER_ID}/identity.md`)), "peer survives a rejected confirmation");
|
|
233
|
+
} finally {
|
|
234
|
+
await fixture.cleanup();
|
|
235
|
+
}
|
|
236
|
+
});
|