@remnic/core 9.65.8 → 9.66.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 +11 -12
- package/dist/access-admin-ops-surface.js +49 -46
- package/dist/access-authorization-probe.d.ts +11 -12
- package/dist/access-authorization-probe.js +50 -47
- package/dist/access-boundary.d.ts +11 -12
- package/dist/access-boundary.js +49 -46
- package/dist/access-citation-namespace.js +3 -3
- package/dist/access-cli.js +111 -106
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +1 -2
- package/dist/access-coding-context-resolution.js +2 -2
- package/dist/access-extraction-force-flush.d.ts +11 -12
- package/dist/access-extraction-force-flush.js +49 -46
- package/dist/access-health-types.d.ts +1 -2
- package/dist/access-http-lcm-compaction.d.ts +11 -12
- package/dist/access-http-lifecycle-flush.d.ts +11 -12
- package/dist/access-http-offline-stream.d.ts +11 -12
- package/dist/access-http-query.d.ts +2 -3
- package/dist/access-http-query.js +51 -48
- package/dist/access-http.d.ts +12 -13
- package/dist/access-http.js +68 -65
- package/dist/access-identity-continuity-surface.d.ts +9 -10
- package/dist/access-identity-continuity-surface.js +49 -46
- package/dist/access-lcm-surface.d.ts +11 -12
- package/dist/access-lcm-surface.js +49 -46
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +11 -12
- package/dist/access-mcp.js +62 -59
- package/dist/access-memory-search-fanout.d.ts +2 -3
- package/dist/{access-namespace-preflight-CpAOrS-9.d.ts → access-namespace-preflight-CLWUoMyW.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -4
- package/dist/access-namespace-preflight.js +49 -46
- package/dist/access-observe-write-surface.d.ts +11 -12
- package/dist/access-observe-write-surface.js +49 -46
- package/dist/access-offline-manifest.d.ts +9 -10
- package/dist/access-offline-manifest.js +15 -15
- package/dist/access-operations-batch.js +54 -51
- package/dist/access-operations.d.ts +17 -18
- package/dist/access-operations.js +59 -56
- package/dist/access-recall-concurrency.d.ts +11 -12
- package/dist/access-recall-concurrency.js +49 -46
- package/dist/access-recall-response.d.ts +11 -12
- package/dist/access-recall-response.js +49 -46
- package/dist/access-recall-surface.d.ts +11 -12
- package/dist/access-recall-surface.js +49 -46
- package/dist/access-schema.d.ts +83 -83
- package/dist/access-schema.js +7 -7
- package/dist/{access-service-Diu61Cfv.d.ts → access-service-CEUE1Isj.d.ts} +66 -66
- package/dist/access-service-helpers.d.ts +11 -12
- package/dist/access-service.d.ts +11 -12
- package/dist/access-service.js +49 -46
- package/dist/access-surface-catalog.d.ts +11 -12
- package/dist/access-surface-catalog.js +53 -48
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +3 -4
- package/dist/action-confidence.d.ts +1 -2
- package/dist/active-memory-bridge.d.ts +1 -2
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.d.ts +1 -2
- package/dist/active-recall.js +11 -11
- package/dist/ambient-provenance.d.ts +1 -2
- package/dist/artifact-search.d.ts +1 -2
- package/dist/{auto-sync-2YPITIWN.js → auto-sync-Q6Q2FVSC.js} +9 -9
- package/dist/behavior-learner.d.ts +1 -2
- package/dist/behavior-signals.d.ts +1 -2
- package/dist/bootstrap.d.ts +9 -10
- package/dist/briefing-window.d.ts +2 -3
- package/dist/briefing.d.ts +2 -3
- package/dist/briefing.js +23 -23
- package/dist/buffer-surprise-report.d.ts +1 -2
- package/dist/buffer-turn-helpers.d.ts +1 -2
- package/dist/buffer.d.ts +2 -3
- package/dist/buffer.js +20 -4
- package/dist/bulk-import/index.d.ts +3 -4
- package/dist/calibration.d.ts +1 -2
- package/dist/calibration.js +1 -1
- package/dist/capabilities.d.ts +1 -2
- package/dist/{capsule-merge-SGIVB3WA.js → capsule-merge-SEHERWWP.js} +4 -4
- package/dist/{catalog-9f-vEQLS.d.ts → catalog-D1HgugTA.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -2
- package/dist/causal-consolidation.d.ts +1 -2
- package/dist/causal-consolidation.js +24 -24
- package/dist/causal-trajectory-graph.d.ts +1 -2
- package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
- package/dist/{chunk-NPFUNWNX.js → chunk-23CVL7HS.js} +2 -2
- package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
- package/dist/{chunk-MY2BC6UE.js → chunk-2LBAFHOQ.js} +11 -11
- package/dist/{chunk-AZMLH5UT.js → chunk-33MFRY25.js} +2 -2
- package/dist/{chunk-UEBDCMOO.js → chunk-3TSU662L.js} +3 -3
- package/dist/{chunk-CAMNRAJF.js → chunk-4FHRZD5T.js} +2 -2
- package/dist/{chunk-FP7YTTVO.js → chunk-4OFKZAJG.js} +2 -1
- package/dist/chunk-4OFKZAJG.js.map +1 -0
- package/dist/{chunk-S5XOSTYM.js → chunk-4STAANV7.js} +3 -3
- package/dist/{chunk-LKYIOCWL.js → chunk-56IV4J5W.js} +546 -96
- package/dist/chunk-56IV4J5W.js.map +1 -0
- package/dist/{chunk-4F4AQFWL.js → chunk-6CEGSTBD.js} +10 -10
- package/dist/{chunk-JYSN42VN.js → chunk-6QDXA26G.js} +235 -181
- package/dist/chunk-6QDXA26G.js.map +1 -0
- package/dist/{chunk-MDD2RINF.js → chunk-6RUHELWR.js} +3 -3
- package/dist/{chunk-WNXYT4MK.js → chunk-72OIT7KS.js} +4 -4
- package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-SNOIKAHM.js → chunk-7UTDHQZ5.js} +3 -3
- package/dist/{chunk-5HK3CJAR.js → chunk-7XOG75AU.js} +3 -3
- package/dist/{chunk-7BDZTALN.js → chunk-AJTG3CP7.js} +12 -2
- package/dist/chunk-AJTG3CP7.js.map +1 -0
- package/dist/{chunk-2LWQSV6A.js → chunk-AL3UYZ5N.js} +3 -2
- package/dist/chunk-AL3UYZ5N.js.map +1 -0
- package/dist/{chunk-UPFNQJC7.js → chunk-CN4VKV3S.js} +2 -2
- package/dist/{chunk-PMVPCZJZ.js → chunk-CTCGHNWN.js} +6 -6
- package/dist/{chunk-EGBDFJ36.js → chunk-DD5JFCWM.js} +2 -2
- package/dist/{chunk-XBGHAAKR.js → chunk-DDX6KIXF.js} +2 -2
- package/dist/{chunk-JIYDRBVZ.js → chunk-DJORULH3.js} +2 -2
- package/dist/{chunk-UENKPWCS.js → chunk-DMEHOEC7.js} +6 -6
- package/dist/{chunk-7KQB4EBS.js → chunk-DUAJKRR2.js} +2 -2
- package/dist/{chunk-XDL5CYZN.js → chunk-EEOUMG3J.js} +2 -1
- package/dist/{chunk-XDL5CYZN.js.map → chunk-EEOUMG3J.js.map} +1 -1
- package/dist/{chunk-SEEJOGQX.js → chunk-EFQCDJZ2.js} +4 -4
- package/dist/{chunk-Q57GOHLF.js → chunk-EGALNSZ4.js} +3 -3
- package/dist/{chunk-KCT36JAW.js → chunk-ESNFSSO4.js} +2 -2
- package/dist/{chunk-XQ3HXAQH.js → chunk-ET2CNMLD.js} +4 -4
- package/dist/{chunk-PU56CXZA.js → chunk-EZSCW4EM.js} +2 -2
- package/dist/{chunk-HMZKGHMD.js → chunk-FESUGFIL.js} +3 -3
- package/dist/{chunk-3A2NJP2U.js → chunk-FKKGCGYL.js} +3 -3
- package/dist/{chunk-BWGCOLEL.js → chunk-FTTJRVB7.js} +2 -2
- package/dist/{chunk-ODU2CNNX.js → chunk-FYWLSFFS.js} +2 -2
- package/dist/{chunk-W2BAGGEW.js → chunk-GEJKYA7D.js} +33 -24
- package/dist/{chunk-W2BAGGEW.js.map → chunk-GEJKYA7D.js.map} +1 -1
- package/dist/chunk-GSKINLAK.js +267 -0
- package/dist/chunk-GSKINLAK.js.map +1 -0
- package/dist/{chunk-3PKAS6VL.js → chunk-GX6FTSYH.js} +2 -2
- package/dist/{chunk-76DIF5KT.js → chunk-H7VDIF2V.js} +2 -2
- package/dist/{chunk-F7XUD3PL.js → chunk-HJXA6ZM7.js} +2 -2
- package/dist/{chunk-4QEYREAV.js → chunk-HNPE66LB.js} +2 -2
- package/dist/{chunk-P36Z4JRA.js → chunk-I5VB44ZK.js} +2 -2
- package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
- package/dist/{chunk-OXRRJXPR.js → chunk-IHGMRDEE.js} +275 -1678
- package/dist/chunk-IHGMRDEE.js.map +1 -0
- package/dist/{chunk-5DHKCO52.js → chunk-IVIAHQBR.js} +2 -2
- package/dist/{chunk-TFR3HG4K.js → chunk-J3OND5QT.js} +4 -4
- package/dist/{chunk-UW5NPZJ2.js → chunk-JALOAKSZ.js} +59 -7
- package/dist/chunk-JALOAKSZ.js.map +1 -0
- package/dist/{chunk-5ACCD4L7.js → chunk-JRRQ747T.js} +7 -7
- package/dist/{chunk-V4IDF3EZ.js → chunk-JTWZKNUH.js} +5 -5
- package/dist/chunk-K66OY4EI.js +202 -0
- package/dist/chunk-K66OY4EI.js.map +1 -0
- package/dist/{chunk-XAB6STPO.js → chunk-KODXCHXJ.js} +17 -3
- package/dist/chunk-KODXCHXJ.js.map +1 -0
- package/dist/{chunk-KZIF6XHX.js → chunk-KXIXO76C.js} +28 -15
- package/dist/chunk-KXIXO76C.js.map +1 -0
- package/dist/{chunk-5RWZH6PH.js → chunk-L4X4PJYK.js} +2 -2
- package/dist/{chunk-UTQUEHC7.js → chunk-LUDBXTBJ.js} +8 -8
- package/dist/{chunk-XNWXSGHS.js → chunk-MAH64N55.js} +28 -10
- package/dist/chunk-MAH64N55.js.map +1 -0
- package/dist/{chunk-LDKPDODJ.js → chunk-ME35HVDJ.js} +2 -2
- package/dist/{chunk-DPCXDG7G.js → chunk-MJRGVXPQ.js} +2 -2
- package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
- package/dist/{chunk-T6ILXUAH.js → chunk-MN5NOOI7.js} +2 -2
- package/dist/{chunk-AHPIFKNG.js → chunk-N4F7ZSSG.js} +2 -2
- package/dist/{chunk-JOZUBF4A.js → chunk-NACLNNFQ.js} +2 -2
- package/dist/{chunk-LC2BDILZ.js → chunk-NBP4EX5N.js} +2 -2
- package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
- package/dist/{chunk-DA7ITC5Z.js → chunk-O57GM3FR.js} +2 -2
- package/dist/{chunk-7VZFRUQU.js → chunk-O7ERGZDA.js} +5 -5
- package/dist/{chunk-3SZD4CYO.js → chunk-OAJMQKQR.js} +3 -3
- package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
- package/dist/{chunk-7WOWGRAU.js → chunk-PEBH5DCK.js} +10 -7
- package/dist/{chunk-7WOWGRAU.js.map → chunk-PEBH5DCK.js.map} +1 -1
- package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
- package/dist/{chunk-T7XP6IZE.js → chunk-QCRJMU5V.js} +2 -2
- package/dist/chunk-QJCWK2A7.js +1466 -0
- package/dist/chunk-QJCWK2A7.js.map +1 -0
- package/dist/{chunk-YEUXERJ6.js → chunk-RDGKVH6T.js} +7 -3
- package/dist/{chunk-YEUXERJ6.js.map → chunk-RDGKVH6T.js.map} +1 -1
- package/dist/{chunk-OA2O2GJ4.js → chunk-RZ3IZIJG.js} +3 -3
- package/dist/{chunk-UL4MKZHI.js → chunk-SN4JXNLL.js} +2 -2
- package/dist/chunk-TB2MJRI6.js +866 -0
- package/dist/chunk-TB2MJRI6.js.map +1 -0
- package/dist/{chunk-7PHI6GUI.js → chunk-TEZ2HTC7.js} +42 -2
- package/dist/chunk-TEZ2HTC7.js.map +1 -0
- package/dist/{chunk-CPA5NBHN.js → chunk-TNGH4ZYI.js} +2 -2
- package/dist/{chunk-F3NVYTTA.js → chunk-TNXNECAN.js} +6 -6
- package/dist/{chunk-BEC4YBNA.js → chunk-TVW4C7PV.js} +2 -2
- package/dist/{chunk-UFKPQBXH.js → chunk-U62OK7BB.js} +2 -2
- package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
- package/dist/chunk-UYA36DQ7.js.map +1 -0
- package/dist/{chunk-DEACDKE3.js → chunk-VCKWULAK.js} +112 -87
- package/dist/chunk-VCKWULAK.js.map +1 -0
- package/dist/chunk-VOSWUO3K.js +100 -0
- package/dist/chunk-VOSWUO3K.js.map +1 -0
- package/dist/{chunk-TUHBYJXL.js → chunk-VQ4AMTGZ.js} +1 -1
- package/dist/{chunk-3BCULS4U.js → chunk-VQNRICAQ.js} +145 -507
- package/dist/chunk-VQNRICAQ.js.map +1 -0
- package/dist/{chunk-H2YSH3DG.js → chunk-WKAXBXVA.js} +2 -2
- package/dist/{chunk-HRHO3ZNG.js → chunk-WKJFIMVN.js} +2 -2
- package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
- package/dist/{chunk-CRML27CO.js → chunk-X5YYSAZX.js} +4 -4
- package/dist/{chunk-FZEEWOI2.js → chunk-XJJYSX6F.js} +2 -2
- package/dist/{chunk-U7EW2W4W.js → chunk-XKNHFDTT.js} +26 -6
- package/dist/chunk-XKNHFDTT.js.map +1 -0
- package/dist/{chunk-UG6VXIOK.js → chunk-XSTNGNJP.js} +2 -2
- package/dist/{chunk-YDPAE2RD.js → chunk-YFLLGRXO.js} +2 -2
- package/dist/{chunk-LPNCR4QK.js → chunk-YXFCALVT.js} +12 -12
- package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
- package/dist/{chunk-GTO56JY5.js → chunk-ZJPM7GZ3.js} +2 -2
- package/dist/{chunk-LOXHYCVS.js → chunk-ZW4VXELZ.js} +2 -2
- package/dist/{cli-O3F-ht3i.d.ts → cli-BEkm2MEf.d.ts} +5 -5
- package/dist/cli.d.ts +13 -14
- package/dist/cli.js +90 -85
- package/dist/coding/export-okf-codegraph.d.ts +56 -0
- package/dist/coding/export-okf-codegraph.js +526 -0
- package/dist/coding/export-okf-codegraph.js.map +1 -0
- package/dist/coding/pre-action-gate.d.ts +1 -2
- package/dist/compounding/engine.d.ts +2 -3
- package/dist/compounding/engine.js +24 -24
- package/dist/compounding/preference-consolidator.d.ts +1 -2
- package/dist/compression-optimizer.d.ts +1 -2
- package/dist/config.d.ts +1 -2
- package/dist/config.js +11 -11
- package/dist/connectors/codex-materialize-runner.d.ts +1 -2
- package/dist/connectors/codex-materialize-runner.js +23 -23
- package/dist/connectors/codex-materialize.d.ts +1 -2
- package/dist/connectors/index.d.ts +1 -2
- package/dist/connectors/index.js +23 -23
- package/dist/consolidation-provenance-check.d.ts +2 -3
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.d.ts +2 -3
- package/dist/consolidation-undo.js +3 -3
- package/dist/contradiction/index.d.ts +3 -4
- package/dist/contradiction/index.js +9 -9
- package/dist/{contradiction-scan-AKUWPX5N.js → contradiction-scan-NOYMFG66.js} +3 -3
- package/dist/converge-config.d.ts +1 -2
- package/dist/convergence-refresh.d.ts +2 -3
- package/dist/convergence-refresh.js +25 -25
- package/dist/conversation-index/backend.d.ts +1 -2
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +1 -2
- package/dist/conversation-index/faiss-adapter.d.ts +1 -2
- package/dist/conversation-index/indexer.d.ts +1 -2
- package/dist/conversation-index/search.d.ts +1 -2
- package/dist/corpus-watermark.d.ts +1 -2
- package/dist/corpus-watermark.js +25 -25
- package/dist/cross-lingual-recall.d.ts +1 -2
- package/dist/day-summary.d.ts +1 -2
- package/dist/delinearize.d.ts +1 -2
- package/dist/dependency-propagation-config.d.ts +1 -2
- package/dist/{dependency-propagation-delivery-CL6RWXTA.d.ts → dependency-propagation-delivery-BCpeo14F.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -2
- package/dist/direct-answer.d.ts +1 -2
- package/dist/embedding-fallback.d.ts +1 -2
- package/dist/enrichment/index.d.ts +1 -2
- package/dist/entity-origin-fields.d.ts +1 -2
- package/dist/entity-retrieval.d.ts +2 -3
- package/dist/entity-retrieval.js +23 -23
- package/dist/entity-schema.d.ts +1 -2
- package/dist/episodic-context.d.ts +1 -2
- package/dist/eval-trajectory-contracts.d.ts +1 -2
- package/dist/eval-trajectory-store.d.ts +1 -2
- package/dist/eval-trajectory.d.ts +1 -2
- package/dist/explicit-capture.d.ts +9 -10
- package/dist/explicit-capture.js +11 -11
- package/dist/external-wiki-access.d.ts +11 -12
- package/dist/external-wiki-access.js +50 -47
- package/dist/external-wiki-collection-registration.d.ts +1 -2
- package/dist/external-wiki-collection.d.ts +1 -2
- package/dist/external-wiki-mcp-tools.d.ts +11 -12
- package/dist/extraction-error-classification.d.ts +1 -2
- package/dist/extraction-faithfulness.d.ts +1 -2
- package/dist/extraction-faithfulness.js +2 -2
- package/dist/extraction-judge-telemetry.d.ts +1 -2
- package/dist/extraction-judge-training.d.ts +1 -2
- package/dist/extraction-judge.d.ts +1 -2
- package/dist/extraction-judge.js +2 -2
- package/dist/extraction-liveness.d.ts +1 -2
- package/dist/extraction-normalization.d.ts +1 -2
- package/dist/extraction-prompt.d.ts +1 -2
- package/dist/extraction-source-grounding-rules.d.ts +1 -2
- package/dist/extraction-source-grounding.d.ts +1 -2
- package/dist/extraction.d.ts +1 -2
- package/dist/extraction.js +32 -29
- package/dist/fallback-llm.d.ts +7 -2
- package/dist/fallback-llm.js +1 -1
- package/dist/{first-start-migration-4NETATFF.js → first-start-migration-KHIMCBIC.js} +3 -3
- package/dist/graph-dashboard-diff.d.ts +1 -2
- package/dist/graph-dashboard-key.d.ts +1 -2
- package/dist/graph-dashboard-parser.d.ts +1 -2
- package/dist/graph-edge-reinforcement.d.ts +1 -2
- package/dist/graph-path-reconstruction.d.ts +1 -2
- package/dist/graph-path-scoring.d.ts +1 -2
- package/dist/graph-snapshot.d.ts +1 -2
- package/dist/graph.d.ts +1 -2
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/importance.d.ts +1 -2
- package/dist/importers/index.d.ts +1 -2
- package/dist/in-flight-reads.d.ts +1 -2
- package/dist/{index-C7Xep6S9.d.ts → index-D_pyMUaP.d.ts} +2 -2
- package/dist/index.d.ts +929 -700
- package/dist/index.js +167 -132
- package/dist/intent.d.ts +1 -2
- package/dist/lcm/engine.d.ts +1 -2
- package/dist/lcm/index.d.ts +1 -2
- package/dist/lcm/tools.d.ts +1 -2
- package/dist/lifecycle.d.ts +1 -2
- package/dist/live-connectors-runner.d.ts +1 -2
- package/dist/local-llm.d.ts +1 -2
- package/dist/local-model-endpoint.d.ts +1 -2
- package/dist/location/index.d.ts +315 -6
- package/dist/location/index.js +151 -19
- package/dist/maintenance/memory-governance.d.ts +1 -2
- package/dist/maintenance/memory-governance.js +23 -23
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +23 -23
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -3
- package/dist/maintenance/rebuild-memory-projection.js +24 -24
- package/dist/{maintenance-CJ-xqFp0.d.ts → maintenance-DDUX9d6D.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +11 -12
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +1 -2
- package/dist/memory-cache.d.ts +1 -2
- package/dist/memory-controller.d.ts +1 -2
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -2
- package/dist/memory-projection-mutations.js +3 -3
- package/dist/memory-projection-store.d.ts +1 -2
- package/dist/memory-projection-store.js +1 -1
- package/dist/memory-provenance.d.ts +1 -2
- package/dist/memory-snapshot.d.ts +1 -2
- package/dist/memory-subject-cli.d.ts +11 -12
- package/dist/memory-subject.d.ts +11 -12
- package/dist/memory-subject.js +4 -4
- package/dist/memory-worth-outcomes.d.ts +2 -3
- package/dist/models-json.d.ts +1 -2
- package/dist/namespaces/migrate.d.ts +3 -4
- package/dist/namespaces/migrate.js +24 -24
- package/dist/namespaces/principal.d.ts +1 -2
- package/dist/namespaces/search.d.ts +1 -2
- package/dist/namespaces/search.js +5 -5
- package/dist/namespaces/storage.d.ts +3 -4
- package/dist/namespaces/storage.js +23 -23
- package/dist/native-knowledge.d.ts +1 -2
- package/dist/offline-sync-file-io.js +3 -3
- package/dist/offline-sync-impression-drain.d.ts +1 -2
- package/dist/offline-sync-impression-drain.js +9 -9
- package/dist/offline-sync.js +4 -4
- package/dist/operator-doctor-corpus.d.ts +1 -2
- package/dist/operator-doctor-corpus.js +26 -26
- package/dist/operator-doctor-replica.d.ts +1 -2
- package/dist/operator-toolkit.d.ts +3 -4
- package/dist/operator-toolkit.js +42 -42
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
- package/dist/orchestration/maintenance.d.ts +4 -5
- package/dist/orchestration/maintenance.js +37 -36
- package/dist/{orchestrator-BsntWxLy.d.ts → orchestrator-3F4jihCo.d.ts} +8 -8
- package/dist/orchestrator.d.ts +9 -10
- package/dist/orchestrator.js +111 -106
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +1 -2
- package/dist/{pipeline-CVoysPm2.d.ts → pipeline-CB1dj6Uh.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -2
- package/dist/proactive-contention.d.ts +1 -2
- package/dist/provenance.d.ts +1 -2
- package/dist/{public-http-CuOxlTC2.d.ts → public-http-34-JIAGQ.d.ts} +1 -1
- package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
- package/dist/{qmd-DWMAGA5l.d.ts → qmd-edLLZXc5.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -3
- package/dist/qmd-recall-cache.d.ts +1 -2
- package/dist/qmd.d.ts +2 -3
- package/dist/recall-concurrency-config.d.ts +1 -2
- package/dist/recall-disclosure-escalation.d.ts +1 -2
- package/dist/recall-explain-renderer.d.ts +1 -2
- package/dist/recall-memory-map.d.ts +1 -2
- package/dist/recall-planner-llm.d.ts +1 -2
- package/dist/recall-planner-llm.js +1 -1
- package/dist/recall-state.d.ts +1 -2
- package/dist/recall-tag-filter.d.ts +1 -2
- package/dist/recall-timings.d.ts +1 -2
- package/dist/recall-xray-cli.d.ts +1 -2
- package/dist/recall-xray-renderer.d.ts +1 -2
- package/dist/recall-xray.d.ts +1 -2
- package/dist/reconcile/cursor.d.ts +1 -2
- package/dist/reconcile/manifest.d.ts +1 -2
- package/dist/reconcile/manifest.js +4 -4
- package/dist/reconcile/plan.d.ts +1 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -2
- package/dist/replay/normalizers/claude.d.ts +1 -2
- package/dist/replay/normalizers/openclaw.d.ts +1 -2
- package/dist/replay/normalizers/shared.d.ts +1 -2
- package/dist/replay/runner.d.ts +1 -2
- package/dist/replay/types.d.ts +1 -2
- package/dist/replica-divergence.d.ts +1 -2
- package/dist/replica-peers-config.d.ts +1 -2
- package/dist/{resolution-XWBPKYFB.js → resolution-4DLI3IOR.js} +10 -10
- package/dist/resolve-auth-token.d.ts +1 -2
- package/dist/resume-bundles.js +12 -12
- package/dist/retrieval-agents.d.ts +2 -3
- package/dist/retrieval-tiers.d.ts +1 -2
- package/dist/routing/engine.d.ts +1 -2
- package/dist/routing/store.d.ts +1 -2
- package/dist/salvage-envelope.d.ts +1 -2
- package/dist/salvage-envelope.js +6 -6
- package/dist/schemas.d.ts +639 -174
- package/dist/schemas.js +3 -1
- package/dist/{scope-profiles-CPWkW_dI.d.ts → scope-profiles-BF2lu81V.d.ts} +1 -1
- package/dist/search/document-scanner.js +1 -1
- package/dist/search/embed-helper.d.ts +1 -2
- package/dist/search/factory.d.ts +1 -2
- package/dist/search/factory.js +4 -4
- package/dist/search/index.d.ts +1 -2
- package/dist/search/index.js +4 -4
- package/dist/search/lancedb-backend.d.ts +1 -2
- package/dist/search/lancedb-backend.js +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -2
- package/dist/search/meilisearch-backend.js +1 -1
- package/dist/search/noop-backend.d.ts +1 -2
- package/dist/search/orama-backend.d.ts +1 -2
- package/dist/search/orama-backend.js +1 -1
- package/dist/search/port.d.ts +1 -2
- package/dist/search/remote-backend.d.ts +1 -2
- package/dist/secure-store/index.js +3 -3
- package/dist/{semantic-consolidation-CNFVBXFc.d.ts → semantic-consolidation-5OuWXBRt.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -3
- package/dist/semantic-consolidation.js +24 -24
- package/dist/semantic-rule-promotion.js +23 -23
- package/dist/semantic-rule-verifier.d.ts +1 -2
- package/dist/semantic-rule-verifier.js +23 -23
- package/dist/{service-Bb-JIdQ0.d.ts → service-CrqEhLXD.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +1 -2
- package/dist/session-observer-state.d.ts +1 -2
- package/dist/shared-context/manager.d.ts +7 -8
- package/dist/signal.d.ts +1 -2
- package/dist/source-agent-qualifier.d.ts +1 -2
- package/dist/source-agent-qualifier.js +30 -27
- package/dist/standup/build.d.ts +16 -0
- package/dist/standup/build.js +17 -0
- package/dist/standup/build.js.map +1 -0
- package/dist/{storage-CukrlNKk.d.ts → storage-BQn-xnxm.d.ts} +1 -1
- package/dist/storage.d.ts +2 -3
- package/dist/storage.js +22 -22
- package/dist/subject-config.d.ts +1 -2
- package/dist/subject-config.js +5 -5
- package/dist/summarizer.d.ts +1 -2
- package/dist/summarizer.js +2 -2
- package/dist/summary-snapshot.d.ts +1 -2
- package/dist/support-passport/index.d.ts +16 -17
- package/dist/support-passport/index.js +52 -49
- package/dist/temporal-supersession.d.ts +2 -3
- package/dist/temporal-timeline-recall.d.ts +1 -2
- package/dist/temporal-validity.d.ts +1 -2
- package/dist/threading.d.ts +1 -2
- package/dist/tier-migration.d.ts +2 -3
- package/dist/tier-routing.d.ts +1 -2
- package/dist/tier-routing.js +2 -2
- package/dist/{tier-stats-4B5IJ3NE.js → tier-stats-2TOW3QNL.js} +3 -3
- package/dist/topics.d.ts +1 -2
- package/dist/transcript.d.ts +1 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +5 -5
- package/dist/transfer/export-okf.d.ts +39 -0
- package/dist/transfer/export-okf.js +112 -0
- package/dist/transfer/export-okf.js.map +1 -0
- package/dist/transfer/types.d.ts +78 -78
- package/dist/trust-score-stage.d.ts +1 -2
- package/dist/trust-score.d.ts +1 -2
- package/dist/{types-djxQlxJ7.d.ts → types-BRpcNjHZ.d.ts} +117 -2
- package/dist/types.d.ts +1 -2
- package/dist/utility-runtime.d.ts +1 -2
- package/dist/verified-recall.js +23 -23
- package/dist/who-knows-cli.d.ts +11 -12
- package/dist/who-knows-cli.js +24 -24
- package/dist/who-knows.d.ts +11 -12
- package/dist/who-knows.js +23 -23
- package/dist/write-envelope.d.ts +1 -2
- package/dist/write-envelope.js +5 -5
- package/package.json +34 -3
- package/src/access-admin-ops-surface.ts +6 -1
- package/src/access-boundary.ts +1 -0
- package/src/access-http.ts +3 -1
- package/src/access-mcp-output-schemas.ts +1 -0
- package/src/access-mcp.ts +3 -3
- package/src/access-operations.ts +1 -0
- package/src/access-service-offline-file-content.test.ts +63 -0
- package/src/access-surface-catalog.ts +2 -0
- package/src/activity/config.test.ts +1 -0
- package/src/activity/config.ts +21 -1
- package/src/activity/index.ts +1 -0
- package/src/activity/timeline/build.ts +279 -0
- package/src/activity/timeline/categories.ts +111 -0
- package/src/activity/timeline/classify.ts +110 -0
- package/src/activity/timeline/corrections.ts +145 -0
- package/src/activity/timeline/index.ts +6 -0
- package/src/activity/timeline/timeline.test.ts +277 -0
- package/src/activity/timeline/types.ts +106 -0
- package/src/activity/types.ts +6 -0
- package/src/cli/okf-commands.ts +45 -0
- package/src/cli.ts +2 -2
- package/src/coding/export-okf-codegraph.test.ts +381 -0
- package/src/coding/export-okf-codegraph.ts +565 -0
- package/src/config.test.ts +1 -0
- package/src/extraction-prompt-safety.test.ts +14 -2
- package/src/extraction.ts +21 -1
- package/src/fallback-llm.test.ts +134 -0
- package/src/fallback-llm.ts +77 -5
- package/src/location/access-operations.ts +17 -8
- package/src/location/backfill.ts +137 -0
- package/src/location/config.test.ts +3 -0
- package/src/location/config.ts +46 -2
- package/src/location/http-glue.ts +1 -1
- package/src/location/index.ts +3 -0
- package/src/location/intervals.ts +1 -0
- package/src/location/matching.test.ts +65 -0
- package/src/location/matching.ts +354 -0
- package/src/location/mcp-tools.ts +2 -1
- package/src/location/surfaces.test.ts +15 -2
- package/src/location/surfaces.ts +95 -18
- package/src/location/tagging.test.ts +119 -0
- package/src/location/tagging.ts +277 -0
- package/src/location/types.ts +23 -1
- package/src/mcp-read-only-tools.ts +1 -0
- package/src/memory-projection-store.ts +3 -1
- package/src/okf/cli.ts +18 -5
- package/src/okf/config.ts +5 -0
- package/src/okf/index-files.test.ts +60 -0
- package/src/okf/index-files.ts +114 -0
- package/src/okf/render.ts +133 -0
- package/src/okf/type-mapping.test.ts +3 -0
- package/src/okf/type-mapping.ts +2 -0
- package/src/orchestration/extraction-run.ts +2 -1
- package/src/orchestration/generic-recall-paths.ts +4 -3
- package/src/schemas.ts +17 -1
- package/src/standup/access-operations.ts +14 -0
- package/src/standup/build.test.ts +34 -0
- package/src/standup/build.ts +115 -0
- package/src/standup/http-glue.ts +15 -0
- package/src/standup/mcp-tools.ts +16 -0
- package/src/support-passport/card-projection.ts +1 -0
- package/src/support-passport/card-service-commit-forwarding.test.ts +1 -0
- package/src/support-passport/card-service.test.ts +75 -1
- package/src/support-passport/card-service.ts +6 -3
- package/src/support-passport/card-state.ts +5 -1
- package/src/support-passport/offline-sync-guard.ts +14 -1
- package/src/transfer/export-okf.test.ts +164 -0
- package/src/transfer/export-okf.ts +286 -0
- package/dist/chunk-2LWQSV6A.js.map +0 -1
- package/dist/chunk-3BCULS4U.js.map +0 -1
- package/dist/chunk-7BDZTALN.js.map +0 -1
- package/dist/chunk-7PHI6GUI.js.map +0 -1
- package/dist/chunk-AX7UXCHJ.js.map +0 -1
- package/dist/chunk-DEACDKE3.js.map +0 -1
- package/dist/chunk-FP7YTTVO.js.map +0 -1
- package/dist/chunk-JYSN42VN.js.map +0 -1
- package/dist/chunk-KZIF6XHX.js.map +0 -1
- package/dist/chunk-LKYIOCWL.js.map +0 -1
- package/dist/chunk-OXRRJXPR.js.map +0 -1
- package/dist/chunk-U7EW2W4W.js.map +0 -1
- package/dist/chunk-UW5NPZJ2.js.map +0 -1
- package/dist/chunk-XAB6STPO.js.map +0 -1
- package/dist/chunk-XNWXSGHS.js.map +0 -1
- package/dist/types-CM86alG1.d.ts +0 -89
- /package/dist/{auto-sync-2YPITIWN.js.map → auto-sync-Q6Q2FVSC.js.map} +0 -0
- /package/dist/{capsule-merge-SGIVB3WA.js.map → capsule-merge-SEHERWWP.js.map} +0 -0
- /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
- /package/dist/{chunk-NPFUNWNX.js.map → chunk-23CVL7HS.js.map} +0 -0
- /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
- /package/dist/{chunk-MY2BC6UE.js.map → chunk-2LBAFHOQ.js.map} +0 -0
- /package/dist/{chunk-AZMLH5UT.js.map → chunk-33MFRY25.js.map} +0 -0
- /package/dist/{chunk-UEBDCMOO.js.map → chunk-3TSU662L.js.map} +0 -0
- /package/dist/{chunk-CAMNRAJF.js.map → chunk-4FHRZD5T.js.map} +0 -0
- /package/dist/{chunk-S5XOSTYM.js.map → chunk-4STAANV7.js.map} +0 -0
- /package/dist/{chunk-4F4AQFWL.js.map → chunk-6CEGSTBD.js.map} +0 -0
- /package/dist/{chunk-MDD2RINF.js.map → chunk-6RUHELWR.js.map} +0 -0
- /package/dist/{chunk-WNXYT4MK.js.map → chunk-72OIT7KS.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-SNOIKAHM.js.map → chunk-7UTDHQZ5.js.map} +0 -0
- /package/dist/{chunk-5HK3CJAR.js.map → chunk-7XOG75AU.js.map} +0 -0
- /package/dist/{chunk-UPFNQJC7.js.map → chunk-CN4VKV3S.js.map} +0 -0
- /package/dist/{chunk-PMVPCZJZ.js.map → chunk-CTCGHNWN.js.map} +0 -0
- /package/dist/{chunk-EGBDFJ36.js.map → chunk-DD5JFCWM.js.map} +0 -0
- /package/dist/{chunk-XBGHAAKR.js.map → chunk-DDX6KIXF.js.map} +0 -0
- /package/dist/{chunk-JIYDRBVZ.js.map → chunk-DJORULH3.js.map} +0 -0
- /package/dist/{chunk-UENKPWCS.js.map → chunk-DMEHOEC7.js.map} +0 -0
- /package/dist/{chunk-7KQB4EBS.js.map → chunk-DUAJKRR2.js.map} +0 -0
- /package/dist/{chunk-SEEJOGQX.js.map → chunk-EFQCDJZ2.js.map} +0 -0
- /package/dist/{chunk-Q57GOHLF.js.map → chunk-EGALNSZ4.js.map} +0 -0
- /package/dist/{chunk-KCT36JAW.js.map → chunk-ESNFSSO4.js.map} +0 -0
- /package/dist/{chunk-XQ3HXAQH.js.map → chunk-ET2CNMLD.js.map} +0 -0
- /package/dist/{chunk-PU56CXZA.js.map → chunk-EZSCW4EM.js.map} +0 -0
- /package/dist/{chunk-HMZKGHMD.js.map → chunk-FESUGFIL.js.map} +0 -0
- /package/dist/{chunk-3A2NJP2U.js.map → chunk-FKKGCGYL.js.map} +0 -0
- /package/dist/{chunk-BWGCOLEL.js.map → chunk-FTTJRVB7.js.map} +0 -0
- /package/dist/{chunk-ODU2CNNX.js.map → chunk-FYWLSFFS.js.map} +0 -0
- /package/dist/{chunk-3PKAS6VL.js.map → chunk-GX6FTSYH.js.map} +0 -0
- /package/dist/{chunk-76DIF5KT.js.map → chunk-H7VDIF2V.js.map} +0 -0
- /package/dist/{chunk-F7XUD3PL.js.map → chunk-HJXA6ZM7.js.map} +0 -0
- /package/dist/{chunk-4QEYREAV.js.map → chunk-HNPE66LB.js.map} +0 -0
- /package/dist/{chunk-P36Z4JRA.js.map → chunk-I5VB44ZK.js.map} +0 -0
- /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
- /package/dist/{chunk-5DHKCO52.js.map → chunk-IVIAHQBR.js.map} +0 -0
- /package/dist/{chunk-TFR3HG4K.js.map → chunk-J3OND5QT.js.map} +0 -0
- /package/dist/{chunk-5ACCD4L7.js.map → chunk-JRRQ747T.js.map} +0 -0
- /package/dist/{chunk-V4IDF3EZ.js.map → chunk-JTWZKNUH.js.map} +0 -0
- /package/dist/{chunk-5RWZH6PH.js.map → chunk-L4X4PJYK.js.map} +0 -0
- /package/dist/{chunk-UTQUEHC7.js.map → chunk-LUDBXTBJ.js.map} +0 -0
- /package/dist/{chunk-LDKPDODJ.js.map → chunk-ME35HVDJ.js.map} +0 -0
- /package/dist/{chunk-DPCXDG7G.js.map → chunk-MJRGVXPQ.js.map} +0 -0
- /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.js.map} +0 -0
- /package/dist/{chunk-T6ILXUAH.js.map → chunk-MN5NOOI7.js.map} +0 -0
- /package/dist/{chunk-AHPIFKNG.js.map → chunk-N4F7ZSSG.js.map} +0 -0
- /package/dist/{chunk-JOZUBF4A.js.map → chunk-NACLNNFQ.js.map} +0 -0
- /package/dist/{chunk-LC2BDILZ.js.map → chunk-NBP4EX5N.js.map} +0 -0
- /package/dist/{chunk-ZVPVTPGI.js.map → chunk-NNZFPYYX.js.map} +0 -0
- /package/dist/{chunk-DA7ITC5Z.js.map → chunk-O57GM3FR.js.map} +0 -0
- /package/dist/{chunk-7VZFRUQU.js.map → chunk-O7ERGZDA.js.map} +0 -0
- /package/dist/{chunk-3SZD4CYO.js.map → chunk-OAJMQKQR.js.map} +0 -0
- /package/dist/{chunk-HSZMX3ZJ.js.map → chunk-ODW5GDFE.js.map} +0 -0
- /package/dist/{chunk-J2WC5LF4.js.map → chunk-QBC33MPY.js.map} +0 -0
- /package/dist/{chunk-T7XP6IZE.js.map → chunk-QCRJMU5V.js.map} +0 -0
- /package/dist/{chunk-OA2O2GJ4.js.map → chunk-RZ3IZIJG.js.map} +0 -0
- /package/dist/{chunk-UL4MKZHI.js.map → chunk-SN4JXNLL.js.map} +0 -0
- /package/dist/{chunk-CPA5NBHN.js.map → chunk-TNGH4ZYI.js.map} +0 -0
- /package/dist/{chunk-F3NVYTTA.js.map → chunk-TNXNECAN.js.map} +0 -0
- /package/dist/{chunk-BEC4YBNA.js.map → chunk-TVW4C7PV.js.map} +0 -0
- /package/dist/{chunk-UFKPQBXH.js.map → chunk-U62OK7BB.js.map} +0 -0
- /package/dist/{chunk-TUHBYJXL.js.map → chunk-VQ4AMTGZ.js.map} +0 -0
- /package/dist/{chunk-H2YSH3DG.js.map → chunk-WKAXBXVA.js.map} +0 -0
- /package/dist/{chunk-HRHO3ZNG.js.map → chunk-WKJFIMVN.js.map} +0 -0
- /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
- /package/dist/{chunk-CRML27CO.js.map → chunk-X5YYSAZX.js.map} +0 -0
- /package/dist/{chunk-FZEEWOI2.js.map → chunk-XJJYSX6F.js.map} +0 -0
- /package/dist/{chunk-UG6VXIOK.js.map → chunk-XSTNGNJP.js.map} +0 -0
- /package/dist/{chunk-YDPAE2RD.js.map → chunk-YFLLGRXO.js.map} +0 -0
- /package/dist/{chunk-LPNCR4QK.js.map → chunk-YXFCALVT.js.map} +0 -0
- /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
- /package/dist/{chunk-GTO56JY5.js.map → chunk-ZJPM7GZ3.js.map} +0 -0
- /package/dist/{chunk-LOXHYCVS.js.map → chunk-ZW4VXELZ.js.map} +0 -0
- /package/dist/{contradiction-scan-AKUWPX5N.js.map → contradiction-scan-NOYMFG66.js.map} +0 -0
- /package/dist/{first-start-migration-4NETATFF.js.map → first-start-migration-KHIMCBIC.js.map} +0 -0
- /package/dist/{purge-GB7PZHT2.js.map → purge-OP6BEDFY.js.map} +0 -0
- /package/dist/{resolution-XWBPKYFB.js.map → resolution-4DLI3IOR.js.map} +0 -0
- /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/location/registry.ts","../src/location/pipeline.ts","../src/location/cli.ts","../src/location/backfill.ts","../src/location/provider-setup.ts","../src/location/surfaces.ts"],"sourcesContent":["/**\n * Location provider registry (issue #2044).\n *\n * In-memory only: host adapters register provider implementations at startup.\n * Core never statically imports an optional provider package — the registry\n * holds whatever the host wired in, and a configured source whose provider is\n * not registered is skipped (not an error), so partial installs keep working.\n */\n\nimport type { LocationProvider } from \"./types.js\";\n\nconst PROVIDER_ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;\n\nconst providers = new Map<string, LocationProvider>();\n\nfunction assertValidProvider(provider: LocationProvider): void {\n if (typeof provider !== \"object\" || provider === null) {\n throw new TypeError(\"location provider must be an object\");\n }\n if (typeof provider.id !== \"string\" || !PROVIDER_ID_PATTERN.test(provider.id)) {\n throw new RangeError(\n \"location provider id must be a non-empty lowercase kebab string (a-z, 0-9, hyphens)\",\n );\n }\n if (typeof provider.displayName !== \"string\" || provider.displayName.trim().length === 0) {\n throw new TypeError(`location provider '${provider.id}' must declare a non-empty displayName`);\n }\n if (typeof provider.verify !== \"function\" || typeof provider.fetchObservations !== \"function\") {\n throw new TypeError(\n `location provider '${provider.id}' must implement verify() and fetchObservations()`,\n );\n }\n}\n\nexport function registerLocationProvider(provider: LocationProvider): void {\n assertValidProvider(provider);\n if (providers.has(provider.id)) {\n throw new Error(`location provider '${provider.id}' is already registered`);\n }\n providers.set(provider.id, provider);\n}\n\nexport function getLocationProvider(id: string): LocationProvider | undefined {\n return typeof id === \"string\" ? providers.get(id) : undefined;\n}\n\nexport function listLocationProviders(): string[] {\n return [...providers.keys()].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n}\n\n/** Test-only: reset the registry between cases. */\nexport function clearLocationProviders(): void {\n providers.clear();\n}\n","/**\n * Location day-sync pipeline (issue #2044).\n *\n * For one local day, each configured (enabled, registered) provider's\n * observations are fetched over the day's half-open UTC window, folded into\n * place-visit segments, merged with the other sources' last-known day\n * payloads from sync state, and rendered to the day document. Sync state\n * advances only AFTER the day document (when any) is durable, so a failed\n * write never moves the watermark past data that did not land. An empty\n * fetch is a successful sync — never conflated with a provider failure\n * (AGENTS.md rule 22).\n */\n\nimport { getLocationProvider } from \"./registry.js\";\nimport { locationDayWindow, observationSegments } from \"./intervals.js\";\nimport {\n composeLocationDayBody,\n composeLocationDayMeta,\n loadLocationSyncState,\n serializeLocationDay,\n updateLocationSourceDay,\n writeLocationDay,\n type LocationDaySourceEntry,\n} from \"./store.js\";\nimport type { LocationConfig, LocationObservation, LocationProvider, LocationSegment } from \"./types.js\";\n\nconst MAX_SYNC_PAGES = 10_000;\n\nexport interface LocationDaySyncOptions {\n config: LocationConfig;\n memoryDir: string;\n date: string;\n signal?: AbortSignal;\n /** Runaway-pagination guard; defaults to MAX_SYNC_PAGES. */\n maxPages?: number;\n now?: () => Date;\n /** Provider lookup seam (defaults to the registry); tests inject doubles. */\n getProvider?: (id: string) => LocationProvider | undefined;\n}\n\nexport interface LocationSourceSyncResult {\n sourceId: string;\n status: \"synced\" | \"skipped\" | \"failed\";\n skipReason?: \"source-disabled\" | \"provider-not-registered\";\n fetched: number;\n dayWritten: boolean;\n stateSaved: boolean;\n /** Sanitized provider error (no tokens, URLs, or coordinates). */\n error?: string;\n}\n\n/** Redact credential, URL query, and coordinate shapes from a provider error. */\nexport function sanitizeProviderError(error: unknown): string {\n const raw = error instanceof Error ? error.message : String(error);\n return raw\n .replace(/Bearer\\s+[A-Za-z0-9._~+/=-]+/gi, \"Bearer [redacted]\")\n .replace(/[?#][^ \\t\"']*/g, \"[redacted]\")\n .replace(/[+-]?\\d+\\.\\d{3,},\\s?[+-]?\\d+\\.\\d{3,}/g, \"[coordinates]\")\n .slice(0, 300);\n}\n\nfunction assertValidObservation(observation: LocationObservation): void {\n if (typeof observation !== \"object\" || observation === null) {\n throw new TypeError(\"location provider returned a non-object observation\");\n }\n if (typeof observation.observedAtUtc !== \"string\" || !Number.isFinite(Date.parse(observation.observedAtUtc))) {\n throw new TypeError(\"location provider returned an observation with an invalid observedAtUtc\");\n }\n const place = observation.place;\n if (typeof place !== \"object\" || place === null || typeof place.id !== \"string\" || place.id.length === 0) {\n throw new TypeError(\"location provider returned an observation without a valid place\");\n }\n if (typeof place.label !== \"string\" || place.label.trim().length === 0) {\n throw new TypeError(`location provider returned place '${place.id}' without a label`);\n }\n}\n\n/** Fetch every observation one provider holds for the window, all pages. */\nasync function fetchWindow(\n provider: LocationProvider,\n window: { startUtc: string; endUtc: string },\n options: LocationDaySyncOptions,\n): Promise<LocationObservation[]> {\n const maxPages = options.maxPages ?? MAX_SYNC_PAGES;\n if (!Number.isInteger(maxPages) || maxPages < 1) {\n throw new RangeError(\"location sync maxPages must be a positive integer\");\n }\n const observations: LocationObservation[] = [];\n const seenCursors = new Set<string>();\n let cursor: string | null = null;\n let pages = 0;\n let completed = false;\n while (pages < maxPages) {\n options.signal?.throwIfAborted();\n const page = await provider.fetchObservations({\n startUtc: window.startUtc,\n endUtc: window.endUtc,\n cursor,\n signal: options.signal,\n });\n pages += 1;\n for (const observation of page.observations) assertValidObservation(observation);\n observations.push(...page.observations);\n if (page.nextCursor === null) {\n completed = true;\n break;\n }\n if (typeof page.nextCursor !== \"string\" || page.nextCursor.length === 0) {\n throw new TypeError(\"location provider returned an invalid cursor\");\n }\n if (seenCursors.has(page.nextCursor)) {\n throw new Error(\"location provider returned a repeated cursor\");\n }\n seenCursors.add(page.nextCursor);\n cursor = page.nextCursor;\n }\n // Only a loop that ran out of its page budget without a terminal null\n // cursor is a runaway; completing on the final allowed page is normal.\n if (!completed) {\n throw new Error(`location provider exceeded ${maxPages} pages`);\n }\n return observations;\n}\n\n/**\n * Sync every configured source for one local day. The master gate\n * (`config.enabled === false`) short-circuits every path: no providers are\n * contacted and nothing touches the filesystem. A provider failure fails\n * that source only (state not advanced) and never blocks the others.\n */\nexport async function syncLocationDay(options: LocationDaySyncOptions): Promise<LocationSourceSyncResult[]> {\n if (!options.config.enabled) return [];\n const window = locationDayWindow(options.date, options.config.timezone);\n const now = options.now ?? (() => new Date());\n const resolveProvider = options.getProvider ?? getLocationProvider;\n\n const results: LocationSourceSyncResult[] = [];\n for (const source of options.config.sources) {\n if (!source.enabled) {\n results.push({\n sourceId: source.id,\n status: \"skipped\",\n skipReason: \"source-disabled\",\n fetched: 0,\n dayWritten: false,\n stateSaved: false,\n });\n continue;\n }\n const provider = resolveProvider(source.id);\n if (provider === undefined) {\n results.push({\n sourceId: source.id,\n status: \"skipped\",\n skipReason: \"provider-not-registered\",\n fetched: 0,\n dayWritten: false,\n stateSaved: false,\n });\n continue;\n }\n\n let observations: LocationObservation[];\n try {\n observations = await fetchWindow(provider, window, options);\n } catch (error) {\n results.push({\n sourceId: source.id,\n status: \"failed\",\n fetched: 0,\n dayWritten: false,\n stateSaved: false,\n ...(error instanceof Error && error.name === \"AbortError\"\n ? { error: \"aborted\" }\n : { error: sanitizeProviderError(error) }),\n });\n continue;\n }\n\n try {\n options.signal?.throwIfAborted();\n const segments = observationSegments(observations, window, {\n retainCoordinates: options.config.retainCoordinates,\n });\n const payload = { observationCount: observations.length, segments, providerDisplayName: provider.displayName };\n const merged = await mergeDaySources(options.memoryDir, source.id, options.date, payload);\n let dayWritten = false;\n if (Object.values(merged).some((entry) => entry.observationCount > 0)) {\n const body = composeLocationDayBody(options.date, options.config.timezone, merged);\n const meta = composeLocationDayMeta(options.date, options.config.timezone, merged, body);\n dayWritten = await writeLocationDay(options.memoryDir, options.date, serializeLocationDay(meta, body));\n }\n // State advances only after the durable day write above succeeded.\n await updateLocationSourceDay(\n options.memoryDir,\n source.id,\n options.date,\n payload,\n now().toISOString(),\n );\n results.push({\n sourceId: source.id,\n status: \"synced\",\n fetched: observations.length,\n dayWritten,\n stateSaved: true,\n });\n } catch (error) {\n results.push({\n sourceId: source.id,\n status: \"failed\",\n fetched: observations.length,\n dayWritten: false,\n stateSaved: false,\n ...(error instanceof Error && error.name === \"AbortError\"\n ? { error: \"aborted\" }\n : { error: sanitizeProviderError(error) }),\n });\n }\n }\n return results;\n}\n\n/**\n * The day-document source map: this source's fresh payload plus every OTHER\n * source's last-known payload from sync state. Rendered documents therefore\n * survive a re-sync of one source without re-fetching the others.\n */\nasync function mergeDaySources(\n memoryDir: string,\n sourceId: string,\n date: string,\n payload: { observationCount: number; segments: LocationSegment[] },\n): Promise<Record<string, LocationDaySourceEntry>> {\n const state = await loadLocationSyncState(memoryDir);\n const merged: Record<string, LocationDaySourceEntry> = {};\n for (const [otherId, otherState] of Object.entries(state.sources)) {\n if (otherId === sourceId) continue;\n const day = otherState.days?.[date];\n if (day === undefined) continue;\n merged[otherId] = { ...day, segments: [...day.segments] };\n }\n merged[sourceId] = payload;\n return merged;\n}\n","/**\n * Location surface helpers (issue #2044): status, provider health checks, and\n * multi-day sync. Pure `@remnic/core` — no optional packages, no host CLI\n * wiring; a host adapter (or the core CLI, in a later slice) renders these\n * structured results into its own command surface.\n */\n\nimport { getLocationProvider } from \"./registry.js\";\nimport { isValidLocationDate, localDayKey } from \"./intervals.js\";\nimport { listLocationDayDates, loadLocationSyncState, parseLocationDaySummary, readLocationDay } from \"./store.js\";\nimport { syncLocationDay, type LocationDaySyncOptions, type LocationSourceSyncResult } from \"./pipeline.js\";\nimport type { LocationConfig, LocationProvider } from \"./types.js\";\n\nexport interface LocationSourceStatus {\n id: string;\n enabled: boolean;\n providerRegistered: boolean;\n lastSyncedAtUtc?: string;\n trackedDays: number;\n}\n\nexport interface LocationDayStatus {\n date: string;\n sources: string[];\n observationCount: number;\n}\n\nexport interface LocationStatusReport {\n enabled: boolean;\n timezone: string;\n sources: LocationSourceStatus[];\n /** Stored day documents, newest first (at most `maxDays`). */\n recentDays: LocationDayStatus[];\n}\n\nexport interface LocationStatusOptions {\n /** Provider lookup seam (defaults to the registry); tests inject doubles. */\n getProvider?: (id: string) => LocationProvider | undefined;\n /** Cap on day documents listed; defaults to 7. */\n maxDays?: number;\n now?: () => Date;\n}\n\nexport async function locationStatus(\n config: LocationConfig,\n memoryDir: string,\n options: LocationStatusOptions = {},\n): Promise<LocationStatusReport> {\n const resolveProvider = options.getProvider ?? getLocationProvider;\n const state = await loadLocationSyncState(memoryDir);\n const sources: LocationSourceStatus[] = config.sources.map((source) => {\n const sourceState = state.sources[source.id];\n return {\n id: source.id,\n enabled: source.enabled,\n providerRegistered: resolveProvider(source.id) !== undefined,\n ...(sourceState?.lastSyncedAtUtc === undefined ? {} : { lastSyncedAtUtc: sourceState.lastSyncedAtUtc }),\n trackedDays: Object.keys(sourceState?.days ?? {}).length,\n };\n });\n\n const maxDays = options.maxDays ?? 7;\n const recentDays: LocationDayStatus[] = [];\n for (const date of (await listLocationDayDates(memoryDir)).slice(0, Math.max(0, maxDays))) {\n const raw = await readLocationDay(memoryDir, date);\n const summary = raw === null ? null : parseLocationDaySummary(raw);\n recentDays.push({\n date,\n sources: summary?.sources ?? [],\n observationCount: summary?.observationCount ?? 0,\n });\n }\n return { enabled: config.enabled, timezone: config.timezone, sources, recentDays };\n}\n\nexport interface LocationSourceCheckResult {\n id: string;\n ok: boolean;\n detail?: string;\n skipped?: \"location-disabled\" | \"source-disabled\" | \"provider-not-registered\";\n}\n\nexport interface LocationCheckOptions {\n signal?: AbortSignal;\n getProvider?: (id: string) => LocationProvider | undefined;\n}\n\n/** Probe every configured provider's health. The master gate short-circuits. */\nexport async function checkLocationSources(\n config: LocationConfig,\n options: LocationCheckOptions = {},\n): Promise<LocationSourceCheckResult[]> {\n if (!config.enabled) {\n return config.sources.map((source) => ({ id: source.id, ok: false, skipped: \"location-disabled\" as const }));\n }\n const resolveProvider = options.getProvider ?? getLocationProvider;\n const results: LocationSourceCheckResult[] = [];\n for (const source of config.sources) {\n if (!source.enabled) {\n results.push({ id: source.id, ok: false, skipped: \"source-disabled\" });\n continue;\n }\n const provider = resolveProvider(source.id);\n if (provider === undefined) {\n results.push({ id: source.id, ok: false, skipped: \"provider-not-registered\" });\n continue;\n }\n try {\n const check = await provider.verify(options.signal);\n results.push({\n id: source.id,\n ok: check.ok,\n ...(check.detail === undefined || check.detail.length === 0 ? {} : { detail: check.detail }),\n });\n } catch (error) {\n results.push({ id: source.id, ok: false, detail: error instanceof Error ? error.name : \"provider error\" });\n }\n }\n return results;\n}\n\nfunction shiftIsoDate(date: string, days: number): string {\n const parsed = new Date(`${date}T00:00:00Z`);\n parsed.setUTCDate(parsed.getUTCDate() + days);\n return parsed.toISOString().slice(0, 10);\n}\n\nexport interface LocationSyncRunOptions\n extends Omit<LocationDaySyncOptions, \"config\" | \"date\" | \"memoryDir\"> {\n config: LocationConfig;\n memoryDir: string;\n /** Exclusive end date (local YYYY-MM-DD); defaults to today in config.timezone. */\n endDate?: string;\n /** Number of days to sync ending at endDate; defaults to config.syncDays. */\n days?: number;\n now?: () => Date;\n}\n/**\n * Sync the trailing `days` local days ending AT `endDate` (inclusive).\n * `endDate` defaults to yesterday in config.timezone (today is incomplete);\n * days run oldest-first so a failure stops before newer days, matching the\n * incremental-sync intent of `syncDays`.\n */\nexport async function syncLocation(\n options: LocationSyncRunOptions,\n): Promise<Array<{ date: string; results: LocationSourceSyncResult[] }>> {\n const { config, memoryDir, endDate, days, ...rest } = options;\n if (endDate !== undefined && !isValidLocationDate(endDate)) {\n throw new RangeError(`Invalid location endDate \"${endDate}\"; expected a real YYYY-MM-DD day.`);\n }\n const now = rest.now ?? (() => new Date());\n const end = endDate ?? shiftIsoDate(localDayKey(now().toISOString(), config.timezone), -1);\n const count = days ?? config.syncDays;\n if (!Number.isInteger(count) || count < 1 || count > 90) {\n throw new RangeError(\"location sync days must be an integer from 1 to 90\");\n }\n const runs: Array<{ date: string; results: LocationSourceSyncResult[] }> = [];\n for (let offset = count; offset >= 1; offset -= 1) {\n const date = shiftIsoDate(end, -(offset - 1));\n runs.push({ date, results: await syncLocationDay({ ...rest, config, memoryDir, date, now }) });\n }\n return runs;\n}\n","/**\n * Location tag backfill (issue #2046) — idempotent, bounded, LLM-free.\n *\n * For each local day in an explicit [from, to] range, find the memories whose\n * own bi-temporal window touches that day and re-run the shared tagging core\n * over the stored location segments. Provider-owned fields update or remove\n * as the (corrected) observations dictate; manual metadata, unrelated tags,\n * supersession, corrections, and content hashes are untouched by the plan\n * core in `matching.ts`.\n *\n * Failure isolation: one bad day is reported as `failed` and the run\n * continues; one bad memory inside a day counts into `failed` without\n * blocking its neighbors. A day with no stored segments is `emptyDay`, never\n * an error (distinct from a failed day). Re-running the same range yields\n * `unchanged` everywhere and writes nothing.\n */\n\nimport type { StorageManager } from \"../index.js\";\nimport type { MemoryFile, PluginConfig } from \"../types.js\";\nimport { resolveNamespaceCapabilities } from \"../capabilities.js\";\nimport { resolveDefaultNamespaceRoot } from \"../namespaces/storage.js\";\nimport { StorageManager as StorageManagerClass } from \"../storage.js\";\nimport { localDayKey } from \"./intervals.js\";\nimport { memoryLocationWindow } from \"./matching.js\";\nimport {\n emptyEnrichmentCounts,\n enrichMemoriesWithLocation,\n loadDaySegmentIndex,\n locationTaggingEnabled,\n type DaySegmentIndex,\n type LocationEnrichmentCounts,\n} from \"./tagging.js\";\nimport type { LocationConfig } from \"./types.js\";\n\nexport interface LocationBackfillDayReport {\n date: string;\n /** No stored segments for any source on this day. */\n emptyDay: boolean;\n failed?: string;\n counts: LocationEnrichmentCounts;\n /** Memories whose window touched the day (empty days report 0). */\n considered: number;\n}\n\nexport interface LocationBackfillReport {\n from: string;\n to: string;\n dryRun: boolean;\n days: LocationBackfillDayReport[];\n}\n\nexport interface BackfillLocationTagsOptions {\n storage: Pick<StorageManager, \"readAllMemories\" | \"getMemoryById\" | \"writeMemoryFrontmatter\">;\n memoryDir: string;\n config: LocationConfig;\n from: string;\n to: string;\n dryRun?: boolean;\n}\n\nexport type BackfillMemoryStorage = Pick<StorageManager, \"readAllMemories\" | \"getMemoryById\" | \"writeMemoryFrontmatter\">;\n\n/**\n * The memory store tag backfill patches: the default-namespace store — the\n * root memory dir when namespaces are off, the resolved default-namespace\n * root when they are on.\n */\nexport async function backfillMemoryStorage(config: PluginConfig): Promise<StorageManager> {\n const root = resolveNamespaceCapabilities(config).namespaces\n ? await resolveDefaultNamespaceRoot(config)\n : config.memoryDir;\n return new StorageManagerClass(root);\n}\n\n\n/** Memories whose own window touches `day`, in deterministic id order. */\nfunction memoriesTouchingDay(memories: readonly MemoryFile[], day: string, config: LocationConfig): MemoryFile[] {\n const touched: MemoryFile[] = [];\n for (const memory of memories) {\n const result = memoryLocationWindow(memory.frontmatter, (instant) => localDayKey(instant, config.timezone));\n if (result.days !== undefined && result.days.includes(day)) touched.push(memory);\n }\n touched.sort((a, b) => (a.frontmatter.id < b.frontmatter.id ? -1 : a.frontmatter.id > b.frontmatter.id ? 1 : 0));\n return touched;\n}\n\n/**\n * Run the bounded backfill. Requires both tagging gates (`location.enabled`\n * and `location.tagging.enabled`); the caller surfaces a clear error for a\n * gated-off run so no surface silently no-ops.\n */\nexport async function backfillLocationTags(\n options: BackfillLocationTagsOptions,\n): Promise<LocationBackfillReport> {\n if (!locationTaggingEnabled(options.config)) {\n throw new Error(\n \"location backfill requires location.enabled and location.tagging.enabled (and location.tagging.backfillEnabled for the command surface)\",\n );\n }\n const index: DaySegmentIndex = await loadDaySegmentIndex(options.memoryDir);\n const memories = await options.storage.readAllMemories();\n\n const days: LocationBackfillDayReport[] = [];\n const cursor = new Date(`${options.from}T00:00:00Z`);\n const end = new Date(`${options.to}T00:00:00Z`);\n while (cursor <= end) {\n const date = cursor.toISOString().slice(0, 10);\n try {\n const daySegments = index.get(date);\n if (daySegments === undefined || daySegments.every((entry) => entry.segments.length === 0)) {\n days.push({ date, emptyDay: true, counts: emptyEnrichmentCounts(), considered: 0 });\n } else {\n const touching = memoriesTouchingDay(memories, date, options.config);\n const counts = await enrichMemoriesWithLocation({\n storage: options.storage,\n memoryDir: options.memoryDir,\n config: options.config,\n memories: touching,\n index,\n dryRun: options.dryRun === true,\n });\n days.push({ date, emptyDay: false, counts, considered: touching.length });\n }\n } catch (error) {\n // One failed day never blocks the rest of the range.\n days.push({\n date,\n emptyDay: false,\n failed: error instanceof Error ? error.message : String(error),\n counts: emptyEnrichmentCounts(),\n considered: 0,\n });\n }\n cursor.setUTCDate(cursor.getUTCDate() + 1);\n }\n return { from: options.from, to: options.to, dryRun: options.dryRun === true, days };\n}\n","/**\n * Location provider bootstrapping (issue #2047).\n *\n * Core never statically imports a provider package (adapter-isolation test),\n * so every surface calls this before status/check/sync: it registers\n * configured providers from optional packages via computed-specifier dynamic\n * imports, with credentials read from environment variables — tokens never\n * enter config files, errors, or logs. A source whose package or credentials\n * are absent stays unregistered and the pipeline reports\n * `provider-not-registered`; that is a skip reason, never an error (the\n * connector-reitti package's README contract).\n */\n\nimport { readEnvVar } from \"../runtime/env.js\";\nimport { log } from \"../logger.js\";\nimport { getLocationProvider } from \"./registry.js\";\nimport type { LocationConfig } from \"./types.js\";\n\n/** Environment shape the setup reads for the `reitti` source. */\nexport interface LocationProviderEnv {\n baseUrl?: string;\n token?: string;\n authMode?: string;\n}\n\nexport interface LocationProviderSetupDeps {\n /** Injectable env (tests); defaults to REITTI_* process variables. */\n env?: LocationProviderEnv;\n /** Injectable module loader (tests); defaults to a dynamic import. */\n importModule?: (specifier: string) => Promise<unknown>;\n}\n\ninterface ReittiProviderModule {\n ensureReittiProviderRegistered(options: {\n baseUrl: string;\n token: string;\n timezone: string;\n authMode?: \"x-api-token\" | \"bearer\";\n }): boolean;\n}\n\nconst loadFailuresWarned = new Set<string>();\n\nfunction readReittiEnv(): LocationProviderEnv {\n return {\n baseUrl: readEnvVar(\"REITTI_BASE_URL\"),\n token: readEnvVar(\"REITTI_TOKEN\"),\n authMode: readEnvVar(\"REITTI_AUTH_MODE\"),\n };\n}\n\n/**\n * Register every configured+enabled source's provider when its optional\n * package and credentials are available. Idempotent; returns the ids this\n * call registered. Never throws — a missing package or credential set is\n * reported downstream as `provider-not-registered`.\n */\nexport async function ensureConfiguredLocationProviders(\n config: LocationConfig,\n deps: LocationProviderSetupDeps = {},\n): Promise<string[]> {\n const registered: string[] = [];\n if (!config.enabled) return registered;\n for (const source of config.sources) {\n if (!source.enabled) continue;\n if (getLocationProvider(source.id) !== undefined) continue;\n // ponytail: only the `reitti` built-in exists today; add cases here as\n // provider packages land — a registry table when there is more than one.\n if (source.id !== \"reitti\") continue;\n const env = deps.env ?? readReittiEnv();\n const baseUrl = env.baseUrl?.trim();\n const token = env.token?.trim();\n if (!baseUrl || !token) continue;\n const authMode =\n env.authMode === \"x-api-token\" || env.authMode === \"bearer\" ? env.authMode : undefined;\n const specifier = \"@remnic/\" + \"connector-reitti\";\n const load = deps.importModule ?? ((s: string) => import(s));\n try {\n const mod = (await load(specifier)) as ReittiProviderModule;\n if (\n mod.ensureReittiProviderRegistered({\n baseUrl,\n token,\n timezone: config.timezone,\n ...(authMode !== undefined ? { authMode } : {}),\n })\n ) {\n registered.push(\"reitti\");\n }\n } catch (err) {\n // Absent optional package is the common case (skip silently); a real\n // load failure is worth one warn line, never credentials.\n const message = err instanceof Error ? err.message : String(err);\n if (!message.includes(specifier)) {\n if (!loadFailuresWarned.has(specifier)) {\n loadFailuresWarned.add(specifier);\n log.warn(`location: failed to load optional provider package ${specifier}: ${message}`);\n }\n }\n }\n }\n return registered;\n}\n","/**\n * Location surface runners (issues #2047, #2046) — ONE implementation shared\n * by the CLI (`remnic location ...`), the MCP tools, the HTTP routes, and the\n * scheduler, so no surface can fork validation or disabled/empty/failure\n * semantics (same rule as the wearables runner). Parsing here is strict:\n * unknown flags reject with the valid list, invalid values reject loudly.\n */\n\nimport { EngramAccessInputError } from \"../access-errors.js\";\nimport {\n checkLocationSources,\n locationStatus,\n syncLocation,\n type LocationSourceCheckResult,\n type LocationStatusReport,\n} from \"./cli.js\";\nimport { isValidLocationDate } from \"./intervals.js\";\nimport { backfillLocationTags, type LocationBackfillReport } from \"./backfill.js\";\nimport type { LocationSourceSyncResult } from \"./pipeline.js\";\nimport { ensureConfiguredLocationProviders } from \"./provider-setup.js\";\nimport { parseLocationDaySummary, readLocationDay } from \"./store.js\";\nimport type { LocationConfig } from \"./types.js\";\nimport type { StorageManager } from \"../index.js\";\n\nexport interface LocationSurfaceDeps {\n config: LocationConfig;\n memoryDir: string;\n /**\n * Memory storage for tag backfill (default-namespace store). Optional so\n * pure day-sync surfaces (status/check/day) never construct one; hosts\n * that expose backfill provide it (issue #2046).\n */\n getMemoryStorage?: () => Promise<StorageManager>;\n}\n\nexport async function runLocationStatus(\n deps: LocationSurfaceDeps,\n): Promise<LocationStatusReport> {\n await ensureConfiguredLocationProviders(deps.config);\n return locationStatus(deps.config, deps.memoryDir);\n}\n\nexport interface LocationSyncRun {\n date: string;\n results: LocationSourceSyncResult[];\n}\n\nexport type LocationSyncRuns = LocationSyncRun[];\nexport async function runLocationCheck(\n deps: LocationSurfaceDeps,\n signal?: AbortSignal,\n): Promise<LocationSourceCheckResult[]> {\n await ensureConfiguredLocationProviders(deps.config);\n return checkLocationSources(deps.config, signal !== undefined ? { signal } : {});\n}\n\nexport async function runLocationSync(\n deps: LocationSurfaceDeps,\n request: { endDate?: string; days?: number } = {},\n): Promise<LocationSyncRuns> {\n await ensureConfiguredLocationProviders(deps.config);\n const runs = await syncLocation({ ...deps, ...validatedSyncWindow(request) });\n return runs as LocationSyncRuns;\n}\n\nexport interface LocationDayView {\n date: string;\n found: boolean;\n sources: string[];\n observationCount: number;\n body: string | null;\n}\n\nexport async function runLocationDay(memoryDir: string, rawDate: unknown): Promise<LocationDayView> {\n const date = requireLocationDate(rawDate, \"date\");\n const body = await readLocationDay(memoryDir, date);\n const summary = body === null ? null : parseLocationDaySummary(body);\n return {\n date,\n found: body !== null,\n sources: summary?.sources ?? [],\n observationCount: summary?.observationCount ?? 0,\n body,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Shared validation (CLI, MCP, HTTP all reject identically)\n// ---------------------------------------------------------------------------\n\nfunction requireLocationDate(raw: unknown, label: string): string {\n if (typeof raw !== \"string\" || !isValidLocationDate(raw)) {\n throw new EngramAccessInputError(`location: ${label} is required (YYYY-MM-DD)`);\n }\n return raw;\n}\n\nfunction optionalLocationDays(raw: unknown): number | undefined {\n if (raw === undefined || raw === null || raw === \"\") return undefined;\n const parsed = typeof raw === \"number\" ? raw : Number(raw);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 90) {\n throw new EngramAccessInputError(\"location: days expects an integer from 1 to 90\");\n }\n return parsed;\n}\n\nfunction validatedSyncWindow(request: { endDate?: string; days?: number }): {\n endDate?: string;\n days?: number;\n} {\n const days = optionalLocationDays(request.days);\n const endDate =\n request.endDate === undefined || request.endDate === null || request.endDate === \"\"\n ? undefined\n : requireLocationDate(request.endDate, \"date\");\n return { ...(endDate !== undefined ? { endDate } : {}), ...(days !== undefined ? { days } : {}) };\n}\n\n/** Day span between two inclusive local dates (from ≤ to, ≤ 90 days). */\nexport function parseLocationBackfillRange(\n rawFrom: unknown,\n rawTo: unknown,\n): { from: string; endDate: string; days: number } {\n const from = requireLocationDate(rawFrom, \"from\");\n const to = requireLocationDate(rawTo, \"to\");\n const fromMs = Date.parse(`${from}T00:00:00Z`);\n const toMs = Date.parse(`${to}T00:00:00Z`);\n if (toMs < fromMs) {\n throw new EngramAccessInputError(\"location: backfill --from must not be after --to\");\n }\n const days = Math.round((toMs - fromMs) / 86_400_000) + 1;\n if (days > 90) {\n throw new EngramAccessInputError(\"location: backfill range is capped at 90 days\");\n }\n return { from, endDate: to, days };\n}\n\nexport interface LocationBackfillResult {\n /** Per-day provider sync results (empty under `dryRun`). */\n days: LocationSyncRuns;\n /** Memory re-tag report; absent when no memory storage was provided. */\n memory?: LocationBackfillReport;\n}\n\n/**\n * Backfill an explicit historical range (issue #2046): sync the days (unless\n * `dryRun`, which persists NOTHING — not day files, not memory patches), then\n * re-run the shared tagging core over the stored segments. Requires\n * `location.enabled` + `location.tagging.enabled` +\n * `location.tagging.backfillEnabled`.\n */\nexport async function runLocationBackfill(\n deps: LocationSurfaceDeps,\n request: { from?: unknown; to?: unknown; dryRun?: boolean } = {},\n): Promise<LocationBackfillResult> {\n const range = parseLocationBackfillRange(request.from, request.to);\n if (!deps.config.enabled || !deps.config.tagging.enabled || !deps.config.tagging.backfillEnabled) {\n throw new EngramAccessInputError(\n \"location: backfill requires location.enabled, location.tagging.enabled, and location.tagging.backfillEnabled\",\n );\n }\n await ensureConfiguredLocationProviders(deps.config);\n const days =\n request.dryRun === true ? [] : (await syncLocation({ ...deps, endDate: range.endDate, days: range.days })) as LocationSyncRuns;\n let memory: LocationBackfillReport | undefined;\n if (deps.getMemoryStorage !== undefined) {\n memory = await backfillLocationTags({\n storage: await deps.getMemoryStorage(),\n memoryDir: deps.memoryDir,\n config: deps.config,\n from: range.from,\n to: range.endDate,\n dryRun: request.dryRun === true,\n });\n }\n return { days, ...(memory !== undefined ? { memory } : {}) };\n}\n\n// ---------------------------------------------------------------------------\n// CLI command (shared by every CLI host)\n// ---------------------------------------------------------------------------\n\nexport interface LocationCliIo {\n stdout: { write(chunk: string): unknown };\n stderr: { write(chunk: string): unknown };\n}\n\nconst USAGE = `Usage: location <command> [options]\n\nCommands:\n status Configured sources, registration, last sync\n check Probe every enabled provider (auth/connectivity)\n sync [options] Sync recent local days (default: config.syncDays\n ending yesterday)\n --date <YYYY-MM-DD> End the window on this day (inclusive)\n --days <n> Window size, 1..90 (default: location.syncDays)\n backfill --from <date> --to <date> [--dry-run]\n Sync an explicit historical range (≤ 90 days)\n and re-tag overlapping memories (requires\n location.tagging.backfillEnabled). --dry-run\n persists nothing: it only reports the memory\n changes stored segments would produce.\n day <YYYY-MM-DD> Print one stored location day\n\nAdd --json to status/sync/backfill/day for machine-readable output.\nCredentials for built-in providers come from the environment:\n reitti: REITTI_BASE_URL, REITTI_TOKEN[, REITTI_AUTH_MODE=x-api-token|bearer]\n`;\n\nconst VALUE_FLAGS = new Set([\"--date\", \"--days\", \"--from\", \"--to\"]);\nconst BOOLEAN_FLAGS = new Set([\"--json\", \"--dry-run\"]);\n\ninterface ParsedCliFlags {\n flags: Map<string, string | true>;\n positional: string[];\n}\n\nfunction parseCliFlags(args: string[]): ParsedCliFlags {\n const flags = new Map<string, string | true>();\n const positional: string[] = [];\n for (let index = 0; index < args.length; index++) {\n const arg = args[index];\n if (!arg.startsWith(\"--\")) {\n positional.push(arg);\n continue;\n }\n if (BOOLEAN_FLAGS.has(arg)) {\n flags.set(arg, true);\n continue;\n }\n if (VALUE_FLAGS.has(arg)) {\n const value = args[index + 1];\n if (value === undefined || value.startsWith(\"--\")) {\n throw new EngramAccessInputError(`location: ${arg} requires a value`);\n }\n flags.set(arg, value);\n index++;\n continue;\n }\n throw new EngramAccessInputError(\n `location: unknown flag '${arg}' — valid flags: ${[...VALUE_FLAGS, ...BOOLEAN_FLAGS].join(\", \")}`,\n );\n }\n return { flags, positional };\n}\n\nfunction renderBackfillReport(io: LocationCliIo, report: LocationBackfillReport): void {\n for (const day of report.days) {\n if (day.emptyDay) {\n io.stdout.write(`${day.date}: no stored location observations (empty day)\\n`);\n continue;\n }\n if (day.failed !== undefined) {\n io.stdout.write(`${day.date}: FAILED — ${day.failed}\\n`);\n continue;\n }\n const c = day.counts;\n io.stdout.write(\n `${day.date}: ${c.tagged} tagged, ${c.updated} updated, ${c.removed} removed, ` +\n `${c.unchanged} unchanged, ${c.unmatched} unmatched (incl. ambiguous), ` +\n `${c.manual} manual, ${c.untimed} untimed, ${c.failed} failed, ` +\n `${day.considered} considered${report.dryRun ? \" (dry run)\" : \"\"}\\n`,\n );\n }\n}\n\nfunction flagString(parsed: ParsedCliFlags, name: string): string | undefined {\n const value = parsed.flags.get(name);\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction renderStatus(report: LocationStatusReport): string {\n const lines = [\n `Location: ${report.enabled ? \"enabled\" : \"disabled\"} (timezone ${report.timezone})`,\n ];\n if (report.sources.length === 0) {\n lines.push(\"No sources configured. Add location.sources to the plugin config.\");\n return `${lines.join(\"\\n\")}\\n`;\n }\n for (const source of report.sources) {\n lines.push(\n ` ${source.id}: ${source.enabled ? \"enabled\" : \"disabled\"}, ` +\n `provider ${source.providerRegistered ? \"registered\" : \"not registered\"}, ` +\n `${source.trackedDays} tracked day${source.trackedDays === 1 ? \"\" : \"s\"}, ` +\n `last sync ${source.lastSyncedAtUtc ?? \"never\"}`,\n );\n }\n if (report.recentDays.length > 0) {\n lines.push(\" recent days:\");\n for (const day of report.recentDays) {\n lines.push(\n ` ${day.date} ${day.observationCount} observation${day.observationCount === 1 ? \"\" : \"s\"} [${day.sources.join(\", \")}]`,\n );\n }\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction anySourceFailed(runs: LocationSyncRuns): boolean {\n return runs.some((run) => run.results.some((result) => result.status === \"failed\"));\n}\n\nfunction renderRuns(io: LocationCliIo, runs: LocationSyncRuns): void {\n for (const run of runs) {\n for (const result of run.results) {\n io.stdout.write(\n `${run.date} ${result.sourceId}: ${result.status}${result.error ? ` — ${result.error}` : \"\"} (${result.fetched} fetched)\\n`,\n );\n }\n }\n}\n\n/** Run a `remnic location ...` command; returns a process exit code. */\nexport async function runLocationCliCommand(\n deps: LocationSurfaceDeps,\n args: string[],\n io: LocationCliIo,\n): Promise<number> {\n const [command, ...rest] = args;\n try {\n switch (command) {\n case undefined:\n case \"help\":\n case \"--help\": {\n io.stdout.write(USAGE);\n return command === undefined ? 1 : 0;\n }\n case \"status\": {\n const parsed = parseCliFlags(rest);\n const report = await runLocationStatus(deps);\n if (parsed.flags.has(\"--json\")) {\n io.stdout.write(`${JSON.stringify(report, null, 2)}\\n`);\n return 0;\n }\n io.stdout.write(renderStatus(report));\n return 0;\n }\n case \"check\": {\n const results = await runLocationCheck(deps);\n for (const result of results) {\n const skipped = result.skipped === undefined ? \"\" : ` (skipped: ${result.skipped})`;\n io.stdout.write(\n `${result.id}: ${result.ok ? \"OK\" : \"FAILED\"}${skipped}${result.detail ? ` — ${result.detail}` : \"\"}\\n`,\n );\n }\n return results.every((result) => result.ok) ? 0 : 1;\n }\n case \"sync\": {\n const parsed = parseCliFlags(rest);\n if (parsed.positional.length > 0) {\n throw new EngramAccessInputError(\n `location: unexpected argument '${parsed.positional[0]}' — sync takes flags only`,\n );\n }\n const daysValue = flagString(parsed, \"--days\");\n const runs = await runLocationSync(deps, {\n endDate: flagString(parsed, \"--date\"),\n ...(daysValue !== undefined ? { days: Number(daysValue) } : {}),\n });\n if (parsed.flags.has(\"--json\")) {\n io.stdout.write(`${JSON.stringify({ days: runs }, null, 2)}\\n`);\n } else {\n renderRuns(io, runs);\n }\n return anySourceFailed(runs) ? 1 : 0;\n }\n case \"backfill\": {\n const parsed = parseCliFlags(rest);\n const result = await runLocationBackfill(deps, {\n from: flagString(parsed, \"--from\"),\n to: flagString(parsed, \"--to\"),\n dryRun: parsed.flags.has(\"--dry-run\"),\n });\n if (parsed.flags.has(\"--json\")) {\n io.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n renderRuns(io, result.days);\n if (result.memory !== undefined) renderBackfillReport(io, result.memory);\n }\n const memoryFailed = result.memory?.days.some((day) => day.failed !== undefined) === true;\n return anySourceFailed(result.days) || memoryFailed ? 1 : 0;\n }\n case \"day\": {\n const parsed = parseCliFlags(rest);\n const date = parsed.positional[0] ?? flagString(parsed, \"--date\");\n const view = await runLocationDay(deps.memoryDir, date);\n if (!view.found) {\n io.stderr.write(`No stored location day for ${view.date}.\\n`);\n return 1;\n }\n if (parsed.flags.has(\"--json\")) {\n io.stdout.write(`${JSON.stringify(view, null, 2)}\\n`);\n return 0;\n }\n io.stdout.write(`${view.body}\\n`);\n return 0;\n }\n default:\n io.stderr.write(`location: unknown command '${command}'\\n${USAGE}`);\n return 1;\n }\n } catch (err) {\n io.stderr.write(`${err instanceof Error ? err.message : String(err)}\\n`);\n return 1;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-BT7NVCML.js";
|
|
4
4
|
import {
|
|
5
5
|
isMemorySubject
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ME35HVDJ.js";
|
|
7
7
|
import {
|
|
8
8
|
assemblePersistedBody
|
|
9
9
|
} from "./chunk-JDSVLVCG.js";
|
|
@@ -442,4 +442,4 @@ export {
|
|
|
442
442
|
buildAccessWriteRequestFingerprint,
|
|
443
443
|
buildObserveRequestFingerprint
|
|
444
444
|
};
|
|
445
|
-
//# sourceMappingURL=chunk-
|
|
445
|
+
//# sourceMappingURL=chunk-WKAXBXVA.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseEntityFile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GEJKYA7D.js";
|
|
4
4
|
import {
|
|
5
5
|
inferMemoryStatus
|
|
6
6
|
} from "./chunk-7RJUVTVF.js";
|
|
@@ -253,4 +253,4 @@ export {
|
|
|
253
253
|
WHO_KNOWS_MCP_TOOLS,
|
|
254
254
|
handleWhoKnowsHttpQuery
|
|
255
255
|
};
|
|
256
|
-
//# sourceMappingURL=chunk-
|
|
256
|
+
//# sourceMappingURL=chunk-WKJFIMVN.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
decryptMemoryDirToPlaintext,
|
|
21
21
|
migrateMemoryDirToEncrypted
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-ET2CNMLD.js";
|
|
23
23
|
import {
|
|
24
24
|
generateSalt
|
|
25
25
|
} from "./chunk-A6XUJE5D.js";
|
|
@@ -499,4 +499,4 @@ export {
|
|
|
499
499
|
renderStatusReport,
|
|
500
500
|
createPassphraseReader
|
|
501
501
|
};
|
|
502
|
-
//# sourceMappingURL=chunk-
|
|
502
|
+
//# sourceMappingURL=chunk-WVGXCBOC.js.map
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
buildExplicitCaptureDedupKey,
|
|
3
3
|
isTombstoneBlockedCaptureWriteLockBusy,
|
|
4
4
|
normalizeExplicitCaptureContent
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LUDBXTBJ.js";
|
|
6
6
|
import {
|
|
7
7
|
TAG_LIMITS,
|
|
8
8
|
composeMemoryEnvelope
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WKAXBXVA.js";
|
|
10
10
|
import {
|
|
11
11
|
isSupportPassportPrivateMemory
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EEOUMG3J.js";
|
|
13
13
|
import {
|
|
14
14
|
sanitizeMemoryContent
|
|
15
15
|
} from "./chunk-5GKPFL3S.js";
|
|
@@ -787,4 +787,4 @@ export {
|
|
|
787
787
|
shouldProcessInlineExplicitCapture,
|
|
788
788
|
InlineExplicitCaptureProcessor
|
|
789
789
|
};
|
|
790
|
-
//# sourceMappingURL=chunk-
|
|
790
|
+
//# sourceMappingURL=chunk-X5YYSAZX.js.map
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
readPlainOfflineSyncFileChunk,
|
|
16
16
|
sha256OfflineSyncFile,
|
|
17
17
|
shouldExcludeOfflineSyncFile
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-NBP4EX5N.js";
|
|
19
19
|
import {
|
|
20
20
|
CENSUS_MAX_MTIME_MS,
|
|
21
21
|
isCensusMtimeMs,
|
|
@@ -1894,4 +1894,4 @@ export {
|
|
|
1894
1894
|
normalizeOfflineSyncState,
|
|
1895
1895
|
fileStatesFromSnapshot
|
|
1896
1896
|
};
|
|
1897
|
-
//# sourceMappingURL=chunk-
|
|
1897
|
+
//# sourceMappingURL=chunk-XJJYSX6F.js.map
|
|
@@ -3,16 +3,17 @@ import {
|
|
|
3
3
|
headerConnector,
|
|
4
4
|
renderExtractionConversation,
|
|
5
5
|
resolveSourceConnector
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TNGH4ZYI.js";
|
|
7
7
|
import {
|
|
8
8
|
ConsolidationResultSchema,
|
|
9
9
|
DaySummaryResultSchema,
|
|
10
|
+
ExtractionProviderOutputSchema,
|
|
10
11
|
ExtractionResultSchema,
|
|
11
12
|
IdentityConsolidationResultSchema,
|
|
12
13
|
ProactiveExtractionResultSchema,
|
|
13
14
|
ProactiveQuestionsResultSchema,
|
|
14
15
|
buildProfileConsolidationResultSchema
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-AJTG3CP7.js";
|
|
16
17
|
import {
|
|
17
18
|
normalizeReasoningTrace
|
|
18
19
|
} from "./chunk-54V4BZWP.js";
|
|
@@ -73,12 +74,12 @@ import {
|
|
|
73
74
|
} from "./chunk-IVKIODHO.js";
|
|
74
75
|
import {
|
|
75
76
|
isMemoryCategory
|
|
76
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-WKAXBXVA.js";
|
|
77
78
|
import {
|
|
78
79
|
FallbackLlmClient,
|
|
79
80
|
fallbackLlmRuntimeContextFromConfig,
|
|
80
81
|
gatewayTaskChainOptions
|
|
81
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-JALOAKSZ.js";
|
|
82
83
|
import {
|
|
83
84
|
buildChatCompletionTokenLimit,
|
|
84
85
|
shouldAssumeOpenAiChatCompletions
|
|
@@ -179,7 +180,15 @@ async function revalidateDependentsViaLlm(deps, superseded, replacement, depende
|
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
// src/extraction.ts
|
|
183
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
182
184
|
var PROACTIVE_MIN_CONFIDENCE = 0.8;
|
|
185
|
+
var EXTRACTION_PROVIDER_JSON_SCHEMA = zodToJsonSchema(
|
|
186
|
+
ExtractionProviderOutputSchema,
|
|
187
|
+
{
|
|
188
|
+
$refStrategy: "none",
|
|
189
|
+
effectStrategy: "input"
|
|
190
|
+
}
|
|
191
|
+
);
|
|
183
192
|
function extractionEntityType(value) {
|
|
184
193
|
const type = extractionText(value);
|
|
185
194
|
if (type === "person" || type === "project" || type === "tool" || type === "company" || type === "place" || type === "other") {
|
|
@@ -1057,7 +1066,13 @@ var ExtractionEngine = class {
|
|
|
1057
1066
|
this.profiler.startSpan("gateway-fallback", extractionTraceId);
|
|
1058
1067
|
try {
|
|
1059
1068
|
const messages = [
|
|
1060
|
-
{
|
|
1069
|
+
{
|
|
1070
|
+
role: "system",
|
|
1071
|
+
content: buildExtractionInstructions(this.config, existingEntities, ambientCapture) + `
|
|
1072
|
+
|
|
1073
|
+
Return only valid JSON matching this shape. Placeholder text describes field shape only and is never source evidence:
|
|
1074
|
+
${EXTRACTION_RESPONSE_SHAPE}`
|
|
1075
|
+
},
|
|
1061
1076
|
{ role: "user", content: conversation }
|
|
1062
1077
|
];
|
|
1063
1078
|
this.emit({ kind: "llm_start", traceId: fallbackTraceId, model: "fallback", operation: "extraction", input: conversation });
|
|
@@ -1068,6 +1083,11 @@ var ExtractionEngine = class {
|
|
|
1068
1083
|
temperature: 0.3,
|
|
1069
1084
|
maxTokens: this.config.extractionMaxOutputTokens,
|
|
1070
1085
|
timeoutMs: this.config.localLlmTimeoutMs,
|
|
1086
|
+
jsonSchema: {
|
|
1087
|
+
name: "extraction_result",
|
|
1088
|
+
schema: EXTRACTION_PROVIDER_JSON_SCHEMA,
|
|
1089
|
+
strict: false
|
|
1090
|
+
},
|
|
1071
1091
|
signal
|
|
1072
1092
|
})
|
|
1073
1093
|
);
|
|
@@ -2367,4 +2387,4 @@ export {
|
|
|
2367
2387
|
shouldEnableLocalExtractionThinking,
|
|
2368
2388
|
ExtractionEngine
|
|
2369
2389
|
};
|
|
2370
|
-
//# sourceMappingURL=chunk-
|
|
2390
|
+
//# sourceMappingURL=chunk-XKNHFDTT.js.map
|