@remnic/core 9.65.8 → 9.66.1
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 +54 -51
- package/dist/access-authorization-probe.d.ts +11 -12
- package/dist/access-authorization-probe.js +55 -52
- package/dist/access-boundary.d.ts +11 -12
- package/dist/access-boundary.js +54 -51
- package/dist/access-citation-namespace.js +3 -3
- package/dist/access-cli.js +132 -125
- 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 +54 -51
- 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 +56 -53
- package/dist/access-http.d.ts +12 -13
- package/dist/access-http.js +77 -74
- package/dist/access-identity-continuity-surface.d.ts +9 -10
- package/dist/access-identity-continuity-surface.js +54 -51
- package/dist/access-lcm-surface.d.ts +11 -12
- package/dist/access-lcm-surface.js +54 -51
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +11 -12
- package/dist/access-mcp.js +67 -64
- package/dist/access-memory-search-fanout.d.ts +2 -3
- package/dist/{access-namespace-preflight-CpAOrS-9.d.ts → access-namespace-preflight-50VIkPhB.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -4
- package/dist/access-namespace-preflight.js +54 -51
- package/dist/access-observe-write-surface.d.ts +11 -12
- package/dist/access-observe-write-surface.js +54 -51
- package/dist/access-offline-manifest.d.ts +9 -10
- package/dist/access-offline-manifest.js +15 -15
- package/dist/access-operations-batch.js +59 -56
- package/dist/access-operations.d.ts +12 -13
- package/dist/access-operations.js +64 -61
- package/dist/access-recall-concurrency.d.ts +11 -12
- package/dist/access-recall-concurrency.js +54 -51
- package/dist/access-recall-response.d.ts +11 -12
- package/dist/access-recall-response.js +54 -51
- package/dist/access-recall-surface.d.ts +11 -12
- package/dist/access-recall-surface.js +54 -51
- package/dist/access-schema.d.ts +12 -12
- package/dist/access-schema.js +5 -5
- package/dist/{access-service-Diu61Cfv.d.ts → access-service-C2tV2-uL.d.ts} +8 -8
- package/dist/access-service-helpers.d.ts +11 -12
- package/dist/access-service.d.ts +11 -12
- package/dist/access-service.js +54 -51
- package/dist/access-surface-catalog.d.ts +11 -12
- package/dist/access-surface-catalog.js +58 -53
- 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/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- 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 +28 -28
- 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-C2jA-gLm.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 +29 -29
- package/dist/causal-trajectory-graph.d.ts +1 -2
- package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
- package/dist/{chunk-TFR3HG4K.js → chunk-2FA7U5XY.js} +4 -4
- package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
- package/dist/{chunk-W2BAGGEW.js → chunk-2ITZ74A6.js} +40 -31
- package/dist/{chunk-W2BAGGEW.js.map → chunk-2ITZ74A6.js.map} +1 -1
- package/dist/{chunk-MY2BC6UE.js → chunk-2X6BGKQL.js} +11 -11
- package/dist/{chunk-UEBDCMOO.js → chunk-3TSU662L.js} +3 -3
- package/dist/{chunk-XAB6STPO.js → chunk-46XR5FNZ.js} +53 -3
- package/dist/chunk-46XR5FNZ.js.map +1 -0
- package/dist/{chunk-FP7YTTVO.js → chunk-4OFKZAJG.js} +2 -1
- package/dist/chunk-4OFKZAJG.js.map +1 -0
- package/dist/{chunk-S5XOSTYM.js → chunk-4XLTUR6R.js} +3 -3
- package/dist/{chunk-BWGCOLEL.js → chunk-65JOGLIS.js} +2 -2
- package/dist/{chunk-HMZKGHMD.js → chunk-7UOXCCCI.js} +3 -3
- package/dist/{chunk-7WOWGRAU.js → chunk-AF5H7TKI.js} +108 -23
- package/dist/chunk-AF5H7TKI.js.map +1 -0
- 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-4F4AQFWL.js → chunk-B4AOWRYF.js} +10 -10
- package/dist/{chunk-ODU2CNNX.js → chunk-C5IUOBCN.js} +2 -2
- package/dist/{chunk-3A2NJP2U.js → chunk-CHGG74CY.js} +3 -3
- package/dist/{chunk-76DIF5KT.js → chunk-CX4OLNIH.js} +2 -2
- package/dist/{chunk-Z3YEGSR4.js → chunk-D3UXGE5D.js} +10 -10
- package/dist/{chunk-5HK3CJAR.js → chunk-D6Q5EPOV.js} +2 -2
- 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-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-Q57GOHLF.js → chunk-EGALNSZ4.js} +3 -3
- package/dist/{chunk-DPCXDG7G.js → chunk-EH65UV2Z.js} +2 -2
- package/dist/{chunk-KCT36JAW.js → chunk-ESNFSSO4.js} +2 -2
- package/dist/{chunk-XQ3HXAQH.js → chunk-ET2CNMLD.js} +4 -4
- package/dist/{chunk-TUHBYJXL.js → chunk-EWKVYCFP.js} +1 -1
- package/dist/{chunk-NPFUNWNX.js → chunk-FFUMTH27.js} +2 -2
- package/dist/{chunk-3PKAS6VL.js → chunk-GAJK3DQ5.js} +2 -2
- package/dist/{chunk-DA7ITC5Z.js → chunk-GBEOUCBB.js} +2 -2
- package/dist/{chunk-UENKPWCS.js → chunk-H2IRSXZN.js} +6 -6
- package/dist/{chunk-CFVTRUR3.js → chunk-H6RSANGQ.js} +2 -2
- package/dist/chunk-HVAEXYPL.js +98 -0
- package/dist/chunk-HVAEXYPL.js.map +1 -0
- package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
- package/dist/{chunk-3SZD4CYO.js → chunk-IGZCAHFL.js} +3 -3
- package/dist/{chunk-UPFNQJC7.js → chunk-INUBU6I5.js} +2 -2
- package/dist/{chunk-PMVPCZJZ.js → chunk-J2R275FN.js} +3 -3
- package/dist/{chunk-UW5NPZJ2.js → chunk-JALOAKSZ.js} +59 -7
- package/dist/chunk-JALOAKSZ.js.map +1 -0
- package/dist/{chunk-2QSZNTDO.js → chunk-JBPKEARU.js} +7 -7
- package/dist/{chunk-3BCULS4U.js → chunk-JKTV3JNX.js} +145 -507
- package/dist/chunk-JKTV3JNX.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-AZMLH5UT.js → chunk-KI64TTBL.js} +2 -2
- package/dist/{chunk-DEACDKE3.js → chunk-KJXCD7VR.js} +112 -87
- package/dist/chunk-KJXCD7VR.js.map +1 -0
- package/dist/chunk-LJABGXC4.js +267 -0
- package/dist/chunk-LJABGXC4.js.map +1 -0
- package/dist/{chunk-NPIBN2VL.js → chunk-LK4TOYPU.js} +2 -2
- package/dist/{chunk-UTQUEHC7.js → chunk-LUDBXTBJ.js} +8 -8
- package/dist/{chunk-PU56CXZA.js → chunk-LYUUA6QB.js} +2 -2
- package/dist/{chunk-P36Z4JRA.js → chunk-M5ERTI4I.js} +2 -2
- package/dist/{chunk-LDKPDODJ.js → chunk-ME35HVDJ.js} +2 -2
- package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
- package/dist/{chunk-OXRRJXPR.js → chunk-MUEGIKKY.js} +476 -1796
- package/dist/chunk-MUEGIKKY.js.map +1 -0
- 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-T7XP6IZE.js → chunk-NFP4KPTA.js} +2 -2
- package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
- package/dist/{chunk-LPNCR4QK.js → chunk-NSTNGMSS.js} +14 -14
- package/dist/{chunk-5RWZH6PH.js → chunk-NUF7VSEX.js} +2 -2
- package/dist/{chunk-7VZFRUQU.js → chunk-O7ERGZDA.js} +5 -5
- package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
- package/dist/{chunk-5DHKCO52.js → chunk-OJUEUQDJ.js} +2 -2
- package/dist/{chunk-LOXHYCVS.js → chunk-OMX6TKXH.js} +2 -2
- package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
- package/dist/{chunk-SEEJOGQX.js → chunk-QBNE55VA.js} +4 -4
- 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-JYSN42VN.js → chunk-RPIS5FQ7.js} +237 -183
- package/dist/chunk-RPIS5FQ7.js.map +1 -0
- package/dist/{chunk-F7XUD3PL.js → chunk-S4CDUXQY.js} +2 -2
- package/dist/{chunk-WNXYT4MK.js → chunk-S4Z2OBTX.js} +4 -4
- package/dist/{chunk-UL4MKZHI.js → chunk-SN4JXNLL.js} +2 -2
- package/dist/{chunk-CAMNRAJF.js → chunk-SZMYGDSM.js} +2 -2
- package/dist/chunk-TB2MJRI6.js +866 -0
- package/dist/chunk-TB2MJRI6.js.map +1 -0
- package/dist/{chunk-XNWXSGHS.js → chunk-TBCDF556.js} +28 -10
- package/dist/chunk-TBCDF556.js.map +1 -0
- package/dist/{chunk-LKYIOCWL.js → chunk-TCF4MU7L.js} +967 -132
- package/dist/chunk-TCF4MU7L.js.map +1 -0
- package/dist/chunk-TCQRIIIN.js +202 -0
- package/dist/chunk-TCQRIIIN.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-KZIF6XHX.js → chunk-U65VJSCJ.js} +32 -19
- package/dist/chunk-U65VJSCJ.js.map +1 -0
- package/dist/{chunk-4QEYREAV.js → chunk-U6NGKS32.js} +8 -8
- package/dist/{chunk-HRHO3ZNG.js → chunk-UW4RYPWC.js} +2 -2
- package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
- package/dist/chunk-UYA36DQ7.js.map +1 -0
- package/dist/{chunk-T6ILXUAH.js → chunk-VG4SSPAW.js} +2 -2
- package/dist/chunk-VOSWUO3K.js +100 -0
- package/dist/chunk-VOSWUO3K.js.map +1 -0
- package/dist/chunk-WFCWP4XU.js +17 -0
- package/dist/chunk-WFCWP4XU.js.map +1 -0
- package/dist/{chunk-H2YSH3DG.js → chunk-WKAXBXVA.js} +2 -2
- package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
- package/dist/{chunk-UNUMFURP.js → chunk-X5PIDJ3L.js} +3 -3
- 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-OA2O2GJ4.js → chunk-XOHYGIWF.js} +3 -3
- package/dist/{chunk-UG6VXIOK.js → chunk-XSTNGNJP.js} +2 -2
- package/dist/{chunk-MINHJ55X.js → chunk-XXW32OL7.js} +1 -1
- package/dist/{chunk-MINHJ55X.js.map → chunk-XXW32OL7.js.map} +1 -1
- package/dist/{chunk-YDPAE2RD.js → chunk-YFLLGRXO.js} +2 -2
- package/dist/{chunk-MDD2RINF.js → chunk-YWPLOJ7T.js} +3 -3
- package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
- package/dist/{chunk-GTO56JY5.js → chunk-ZPS724LT.js} +2 -2
- package/dist/{chunk-SNOIKAHM.js → chunk-ZZZWEDF4.js} +3 -3
- package/dist/{cli-O3F-ht3i.d.ts → cli-CsfFMe6n.d.ts} +5 -5
- package/dist/cli.d.ts +13 -14
- package/dist/cli.js +101 -96
- 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 +29 -29
- 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 +28 -28
- package/dist/connectors/codex-materialize.d.ts +1 -2
- package/dist/connectors/index.d.ts +1 -2
- package/dist/connectors/index.js +28 -28
- 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 +30 -30
- 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 +30 -30
- 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-D4WMbOwA.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 +28 -28
- 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 +55 -52
- 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 +37 -34
- 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-DuJnzwHv.d.ts} +2 -2
- package/dist/index.d.ts +364 -26
- package/dist/index.js +232 -169
- package/dist/intent.d.ts +1 -2
- package/dist/lcm/engine.d.ts +1 -2
- package/dist/lcm/engine.js +4 -4
- package/dist/lcm/index.d.ts +1 -2
- package/dist/lcm/index.js +10 -10
- 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 +28 -28
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -28
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -3
- package/dist/maintenance/rebuild-memory-projection.js +29 -29
- package/dist/{maintenance-CJ-xqFp0.d.ts → maintenance-BBeaeYRR.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 +29 -29
- package/dist/namespaces/principal.d.ts +1 -2
- package/dist/namespaces/search.d.ts +1 -2
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.d.ts +3 -4
- package/dist/namespaces/storage.js +28 -28
- 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 +31 -31
- package/dist/operator-doctor-replica.d.ts +1 -2
- package/dist/operator-toolkit.d.ts +3 -4
- package/dist/operator-toolkit.js +47 -47
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
- package/dist/orchestration/maintenance.d.ts +4 -5
- package/dist/orchestration/maintenance.js +42 -41
- package/dist/{orchestrator-BsntWxLy.d.ts → orchestrator-CaqnwNwM.d.ts} +8 -8
- package/dist/orchestrator.d.ts +9 -10
- package/dist/orchestrator.js +132 -125
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +1 -2
- package/dist/{pipeline-CVoysPm2.d.ts → pipeline-CrxVjlJr.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-Cwvl4QZr.d.ts} +1 -1
- package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
- package/dist/{qmd-DWMAGA5l.d.ts → qmd-BZgbJm0g.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-deep.d.ts +37 -0
- package/dist/recall-deep.js +81 -0
- package/dist/recall-deep.js.map +1 -0
- package/dist/recall-disclosure-escalation.d.ts +1 -2
- package/dist/recall-explain-renderer.d.ts +1 -2
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -2
- package/dist/recall-navigate.d.ts +70 -0
- package/dist/recall-navigate.js +51 -0
- package/dist/recall-navigate.js.map +1 -0
- package/dist/recall-planner-llm.d.ts +1 -2
- package/dist/recall-planner-llm.js +1 -1
- package/dist/recall-state-view-wire.d.ts +14 -0
- package/dist/recall-state-view-wire.js +11 -0
- package/dist/recall-state-view.d.ts +25 -0
- package/dist/recall-state-view.js +22 -0
- package/dist/recall-state-view.js.map +1 -0
- 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-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -2
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -2
- package/dist/recall-xray.js +2 -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/resolution-4DLI3IOR.js.map +1 -0
- 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 +570 -105
- package/dist/schemas.js +3 -1
- package/dist/{scope-profiles-CPWkW_dI.d.ts → scope-profiles-DFaojvoP.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 +7 -7
- package/dist/search/index.d.ts +1 -2
- package/dist/search/index.js +13 -13
- 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-BiX68wZA.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -3
- package/dist/semantic-consolidation.js +29 -29
- package/dist/semantic-rule-promotion.js +28 -28
- package/dist/semantic-rule-verifier.d.ts +1 -2
- package/dist/semantic-rule-verifier.js +28 -28
- package/dist/{service-Bb-JIdQ0.d.ts → service-D5h2zZ0M.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 +1 -2
- package/dist/signal.d.ts +1 -2
- package/dist/source-agent-qualifier.d.ts +1 -2
- package/dist/source-agent-qualifier.js +35 -32
- 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-CtsaojWD.d.ts} +1 -1
- package/dist/storage.d.ts +2 -3
- package/dist/storage.js +27 -27
- 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 +57 -54
- 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-import.js +4 -4
- 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/trust-score-stage.d.ts +1 -2
- package/dist/trust-score.d.ts +1 -2
- package/dist/{types-djxQlxJ7.d.ts → types-CIpfYz1I.d.ts} +132 -12
- package/dist/types.d.ts +1 -2
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -2
- package/dist/verified-recall.js +28 -28
- package/dist/who-knows-cli.d.ts +11 -12
- package/dist/who-knows-cli.js +29 -29
- package/dist/who-knows.d.ts +11 -12
- package/dist/who-knows.js +28 -28
- 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 +66 -1
- package/src/activity/index.ts +3 -0
- package/src/activity/journal.test.ts +97 -0
- package/src/activity/journal.ts +113 -0
- package/src/activity/privacy.test.ts +53 -0
- package/src/activity/privacy.ts +80 -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 +8 -0
- package/src/activity/timeline/journal-recap.test.ts +113 -0
- package/src/activity/timeline/journal-recap.ts +130 -0
- package/src/activity/timeline/query.test.ts +198 -0
- package/src/activity/timeline/query.ts +313 -0
- package/src/activity/timeline/timeline.test.ts +277 -0
- package/src/activity/timeline/types.ts +106 -0
- package/src/activity/timeline/weekly.test.ts +215 -0
- package/src/activity/timeline/weekly.ts +234 -0
- package/src/activity/types.ts +20 -0
- package/src/activity/vault-publish.test.ts +166 -0
- package/src/activity/vault-publish.ts +101 -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/config.ts +2 -22
- package/src/dedup/merge-on-write.test.ts +91 -0
- package/src/dedup/merge-on-write.ts +75 -0
- package/src/dedup/novelty-gate.test.ts +143 -0
- package/src/dedup/novelty-gate.ts +163 -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/recall-exclusion.test.ts +1 -0
- 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-persist.ts +22 -23
- package/src/orchestration/extraction-run.ts +2 -1
- package/src/orchestration/generic-recall-paths.ts +15 -3
- package/src/orchestration/recall-entry.ts +8 -3
- package/src/recall-deep.test.ts +72 -0
- package/src/recall-deep.ts +113 -0
- package/src/recall-navigate.test.ts +84 -0
- package/src/recall-navigate.ts +100 -0
- package/src/recall-state-view-wire.test.ts +35 -0
- package/src/recall-state-view-wire.ts +28 -0
- package/src/recall-state-view.test.ts +131 -0
- package/src/recall-state-view.ts +138 -0
- package/src/schemas.ts +17 -1
- package/src/shared-context/governance.test.ts +53 -0
- package/src/shared-context/governance.ts +86 -0
- 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/src/types.ts +3 -10
- 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-7WOWGRAU.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-TFR3HG4K.js.map → chunk-2FA7U5XY.js.map} +0 -0
- /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
- /package/dist/{chunk-MY2BC6UE.js.map → chunk-2X6BGKQL.js.map} +0 -0
- /package/dist/{chunk-UEBDCMOO.js.map → chunk-3TSU662L.js.map} +0 -0
- /package/dist/{chunk-S5XOSTYM.js.map → chunk-4XLTUR6R.js.map} +0 -0
- /package/dist/{chunk-BWGCOLEL.js.map → chunk-65JOGLIS.js.map} +0 -0
- /package/dist/{chunk-HMZKGHMD.js.map → chunk-7UOXCCCI.js.map} +0 -0
- /package/dist/{chunk-4F4AQFWL.js.map → chunk-B4AOWRYF.js.map} +0 -0
- /package/dist/{chunk-ODU2CNNX.js.map → chunk-C5IUOBCN.js.map} +0 -0
- /package/dist/{chunk-3A2NJP2U.js.map → chunk-CHGG74CY.js.map} +0 -0
- /package/dist/{chunk-76DIF5KT.js.map → chunk-CX4OLNIH.js.map} +0 -0
- /package/dist/{chunk-Z3YEGSR4.js.map → chunk-D3UXGE5D.js.map} +0 -0
- /package/dist/{chunk-5HK3CJAR.js.map → chunk-D6Q5EPOV.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-7KQB4EBS.js.map → chunk-DUAJKRR2.js.map} +0 -0
- /package/dist/{chunk-Q57GOHLF.js.map → chunk-EGALNSZ4.js.map} +0 -0
- /package/dist/{chunk-DPCXDG7G.js.map → chunk-EH65UV2Z.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-TUHBYJXL.js.map → chunk-EWKVYCFP.js.map} +0 -0
- /package/dist/{chunk-NPFUNWNX.js.map → chunk-FFUMTH27.js.map} +0 -0
- /package/dist/{chunk-3PKAS6VL.js.map → chunk-GAJK3DQ5.js.map} +0 -0
- /package/dist/{chunk-DA7ITC5Z.js.map → chunk-GBEOUCBB.js.map} +0 -0
- /package/dist/{chunk-UENKPWCS.js.map → chunk-H2IRSXZN.js.map} +0 -0
- /package/dist/{chunk-CFVTRUR3.js.map → chunk-H6RSANGQ.js.map} +0 -0
- /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
- /package/dist/{chunk-3SZD4CYO.js.map → chunk-IGZCAHFL.js.map} +0 -0
- /package/dist/{chunk-UPFNQJC7.js.map → chunk-INUBU6I5.js.map} +0 -0
- /package/dist/{chunk-PMVPCZJZ.js.map → chunk-J2R275FN.js.map} +0 -0
- /package/dist/{chunk-2QSZNTDO.js.map → chunk-JBPKEARU.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-AZMLH5UT.js.map → chunk-KI64TTBL.js.map} +0 -0
- /package/dist/{chunk-NPIBN2VL.js.map → chunk-LK4TOYPU.js.map} +0 -0
- /package/dist/{chunk-UTQUEHC7.js.map → chunk-LUDBXTBJ.js.map} +0 -0
- /package/dist/{chunk-PU56CXZA.js.map → chunk-LYUUA6QB.js.map} +0 -0
- /package/dist/{chunk-P36Z4JRA.js.map → chunk-M5ERTI4I.js.map} +0 -0
- /package/dist/{chunk-LDKPDODJ.js.map → chunk-ME35HVDJ.js.map} +0 -0
- /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.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-T7XP6IZE.js.map → chunk-NFP4KPTA.js.map} +0 -0
- /package/dist/{chunk-ZVPVTPGI.js.map → chunk-NNZFPYYX.js.map} +0 -0
- /package/dist/{chunk-LPNCR4QK.js.map → chunk-NSTNGMSS.js.map} +0 -0
- /package/dist/{chunk-5RWZH6PH.js.map → chunk-NUF7VSEX.js.map} +0 -0
- /package/dist/{chunk-7VZFRUQU.js.map → chunk-O7ERGZDA.js.map} +0 -0
- /package/dist/{chunk-HSZMX3ZJ.js.map → chunk-ODW5GDFE.js.map} +0 -0
- /package/dist/{chunk-5DHKCO52.js.map → chunk-OJUEUQDJ.js.map} +0 -0
- /package/dist/{chunk-LOXHYCVS.js.map → chunk-OMX6TKXH.js.map} +0 -0
- /package/dist/{chunk-J2WC5LF4.js.map → chunk-QBC33MPY.js.map} +0 -0
- /package/dist/{chunk-SEEJOGQX.js.map → chunk-QBNE55VA.js.map} +0 -0
- /package/dist/{chunk-F7XUD3PL.js.map → chunk-S4CDUXQY.js.map} +0 -0
- /package/dist/{chunk-WNXYT4MK.js.map → chunk-S4Z2OBTX.js.map} +0 -0
- /package/dist/{chunk-UL4MKZHI.js.map → chunk-SN4JXNLL.js.map} +0 -0
- /package/dist/{chunk-CAMNRAJF.js.map → chunk-SZMYGDSM.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-4QEYREAV.js.map → chunk-U6NGKS32.js.map} +0 -0
- /package/dist/{chunk-HRHO3ZNG.js.map → chunk-UW4RYPWC.js.map} +0 -0
- /package/dist/{chunk-T6ILXUAH.js.map → chunk-VG4SSPAW.js.map} +0 -0
- /package/dist/{chunk-H2YSH3DG.js.map → chunk-WKAXBXVA.js.map} +0 -0
- /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
- /package/dist/{chunk-UNUMFURP.js.map → chunk-X5PIDJ3L.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-OA2O2GJ4.js.map → chunk-XOHYGIWF.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-MDD2RINF.js.map → chunk-YWPLOJ7T.js.map} +0 -0
- /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
- /package/dist/{chunk-GTO56JY5.js.map → chunk-ZPS724LT.js.map} +0 -0
- /package/dist/{chunk-SNOIKAHM.js.map → chunk-ZZZWEDF4.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 → recall-state-view-wire.js.map} +0 -0
- /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./chunk-M6L7HI7R.js";
|
|
2
|
+
resolveDefaultNamespaceRoot
|
|
3
|
+
} from "./chunk-S4CDUXQY.js";
|
|
5
4
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
composeLocationDayBody,
|
|
6
|
+
composeLocationDayMeta,
|
|
7
|
+
emptyEnrichmentCounts,
|
|
8
|
+
enrichMemoriesWithLocation,
|
|
9
|
+
isValidLocationDate,
|
|
10
|
+
listLocationDayDates,
|
|
11
|
+
loadDaySegmentIndex,
|
|
12
|
+
loadLocationSyncState,
|
|
13
|
+
localDayKey,
|
|
14
|
+
locationDayWindow,
|
|
15
|
+
locationTaggingEnabled,
|
|
16
|
+
memoryLocationWindow,
|
|
17
|
+
observationSegments,
|
|
18
|
+
parseLocationDaySummary,
|
|
19
|
+
readLocationDay,
|
|
20
|
+
serializeLocationDay,
|
|
21
|
+
updateLocationSourceDay,
|
|
22
|
+
writeLocationDay
|
|
23
|
+
} from "./chunk-TB2MJRI6.js";
|
|
8
24
|
import {
|
|
9
|
-
|
|
10
|
-
} from "./chunk-
|
|
25
|
+
StorageManager
|
|
26
|
+
} from "./chunk-2ITZ74A6.js";
|
|
27
|
+
import {
|
|
28
|
+
resolveNamespaceCapabilities
|
|
29
|
+
} from "./chunk-JUOZ62Y7.js";
|
|
11
30
|
import {
|
|
12
31
|
readEnvVar
|
|
13
32
|
} from "./chunk-JUC24CTX.js";
|
|
@@ -56,472 +75,6 @@ function clearLocationProviders() {
|
|
|
56
75
|
providers.clear();
|
|
57
76
|
}
|
|
58
77
|
|
|
59
|
-
// src/location/intervals.ts
|
|
60
|
-
function isValidLocationDate(date) {
|
|
61
|
-
return isValidActivityDate(date);
|
|
62
|
-
}
|
|
63
|
-
function locationDayWindow(date, timezone) {
|
|
64
|
-
if (!isValidActivityDate(date)) {
|
|
65
|
-
throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
|
|
66
|
-
}
|
|
67
|
-
return activityDayWindow(date, timezone);
|
|
68
|
-
}
|
|
69
|
-
function assertFiniteInstant(iso, what) {
|
|
70
|
-
const ms = Date.parse(iso);
|
|
71
|
-
if (typeof iso !== "string" || !Number.isFinite(ms)) {
|
|
72
|
-
throw new RangeError(`${what} must be a UTC ISO-8601 instant; got "${String(iso)}"`);
|
|
73
|
-
}
|
|
74
|
-
return ms;
|
|
75
|
-
}
|
|
76
|
-
function localDayKey(instantUtc, timezone) {
|
|
77
|
-
assertFiniteInstant(instantUtc, "instantUtc");
|
|
78
|
-
return new Intl.DateTimeFormat("en-CA", {
|
|
79
|
-
timeZone: timezone,
|
|
80
|
-
year: "numeric",
|
|
81
|
-
month: "2-digit",
|
|
82
|
-
day: "2-digit"
|
|
83
|
-
}).format(new Date(instantUtc));
|
|
84
|
-
}
|
|
85
|
-
function compareObservations(a, b) {
|
|
86
|
-
if (a.observedAtUtc !== b.observedAtUtc) {
|
|
87
|
-
return a.observedAtUtc < b.observedAtUtc ? -1 : 1;
|
|
88
|
-
}
|
|
89
|
-
if (a.place.id !== b.place.id) {
|
|
90
|
-
return a.place.id < b.place.id ? -1 : 1;
|
|
91
|
-
}
|
|
92
|
-
return 0;
|
|
93
|
-
}
|
|
94
|
-
function bucketObservationsByDay(observations, timezone) {
|
|
95
|
-
const buckets = /* @__PURE__ */ new Map();
|
|
96
|
-
for (const observation of observations) {
|
|
97
|
-
assertFiniteInstant(observation.observedAtUtc, "observation observedAtUtc");
|
|
98
|
-
const key = localDayKey(observation.observedAtUtc, timezone);
|
|
99
|
-
const bucket = buckets.get(key);
|
|
100
|
-
if (bucket === void 0) buckets.set(key, [observation]);
|
|
101
|
-
else bucket.push(observation);
|
|
102
|
-
}
|
|
103
|
-
for (const bucket of buckets.values()) bucket.sort(compareObservations);
|
|
104
|
-
return buckets;
|
|
105
|
-
}
|
|
106
|
-
function intervalOverlapMs(a, b) {
|
|
107
|
-
const overlap = Math.min(Date.parse(a.endUtc), Date.parse(b.endUtc)) - Math.max(Date.parse(a.startUtc), Date.parse(b.startUtc));
|
|
108
|
-
return Math.max(0, overlap);
|
|
109
|
-
}
|
|
110
|
-
function placeForSegment(place, retainCoordinates) {
|
|
111
|
-
if (retainCoordinates || place.latitude === void 0 || place.longitude === void 0) {
|
|
112
|
-
return place;
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
id: place.id,
|
|
116
|
-
label: place.label,
|
|
117
|
-
...place.kind === void 0 ? {} : { kind: place.kind }
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
function observationSegments(observations, window, options) {
|
|
121
|
-
const startMs = assertFiniteInstant(window.startUtc, "window startUtc");
|
|
122
|
-
const endMs = assertFiniteInstant(window.endUtc, "window endUtc");
|
|
123
|
-
if (startMs >= endMs) {
|
|
124
|
-
throw new RangeError("location window must satisfy startUtc < endUtc");
|
|
125
|
-
}
|
|
126
|
-
const ordered = [...observations].sort(compareObservations);
|
|
127
|
-
const segments = [];
|
|
128
|
-
for (let index = 0; index < ordered.length; index += 1) {
|
|
129
|
-
const current = ordered[index];
|
|
130
|
-
const currentMs = Date.parse(current.observedAtUtc);
|
|
131
|
-
if (currentMs < startMs || currentMs >= endMs) {
|
|
132
|
-
throw new RangeError(
|
|
133
|
-
`location observation at "${current.observedAtUtc}" falls outside the requested [${window.startUtc}, ${window.endUtc}) window`
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
const nextMs = index + 1 < ordered.length ? Date.parse(ordered[index + 1].observedAtUtc) : endMs;
|
|
137
|
-
const segmentEndMs = Math.min(nextMs, endMs);
|
|
138
|
-
if (currentMs >= segmentEndMs) continue;
|
|
139
|
-
segments.push({
|
|
140
|
-
startUtc: new Date(currentMs).toISOString(),
|
|
141
|
-
endUtc: new Date(segmentEndMs).toISOString(),
|
|
142
|
-
place: placeForSegment(current.place, options.retainCoordinates)
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
return segments;
|
|
146
|
-
}
|
|
147
|
-
function unionIntervalMs(segments) {
|
|
148
|
-
const bounds = segments.map((segment) => ({ start: Date.parse(segment.startUtc), end: Date.parse(segment.endUtc) })).sort((a, b) => a.start !== b.start ? a.start - b.start : a.end - b.end);
|
|
149
|
-
let total = 0;
|
|
150
|
-
let sweepStart = null;
|
|
151
|
-
let sweepEnd = 0;
|
|
152
|
-
for (const bound of bounds) {
|
|
153
|
-
if (sweepStart === null || bound.start > sweepEnd) {
|
|
154
|
-
if (sweepStart !== null) total += sweepEnd - sweepStart;
|
|
155
|
-
sweepStart = bound.start;
|
|
156
|
-
sweepEnd = bound.end;
|
|
157
|
-
} else if (bound.end > sweepEnd) {
|
|
158
|
-
sweepEnd = bound.end;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (sweepStart !== null) total += sweepEnd - sweepStart;
|
|
162
|
-
return total;
|
|
163
|
-
}
|
|
164
|
-
function placeDurations(segments) {
|
|
165
|
-
const byPlace = /* @__PURE__ */ new Map();
|
|
166
|
-
for (const segment of segments) {
|
|
167
|
-
const existing = byPlace.get(segment.place.id);
|
|
168
|
-
if (existing === void 0) {
|
|
169
|
-
byPlace.set(segment.place.id, { place: segment.place, segments: [segment], firstStartUtc: segment.startUtc });
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
existing.segments.push(segment);
|
|
173
|
-
if (segment.startUtc < existing.firstStartUtc) existing.firstStartUtc = segment.startUtc;
|
|
174
|
-
if (segment.place.label < existing.place.label) existing.place = segment.place;
|
|
175
|
-
}
|
|
176
|
-
const durations = [...byPlace.values()].map((entry) => ({
|
|
177
|
-
place: entry.place,
|
|
178
|
-
totalMs: unionIntervalMs(entry.segments),
|
|
179
|
-
firstStartUtc: entry.firstStartUtc
|
|
180
|
-
}));
|
|
181
|
-
durations.sort((a, b) => {
|
|
182
|
-
if (a.place.id !== b.place.id) return a.place.id < b.place.id ? -1 : 1;
|
|
183
|
-
return 0;
|
|
184
|
-
});
|
|
185
|
-
return durations;
|
|
186
|
-
}
|
|
187
|
-
function dominantPlace(segments) {
|
|
188
|
-
const durations = placeDurations(segments);
|
|
189
|
-
let best = null;
|
|
190
|
-
for (const duration of durations) {
|
|
191
|
-
if (best === null) {
|
|
192
|
-
best = duration;
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
if (duration.totalMs !== best.totalMs) {
|
|
196
|
-
if (duration.totalMs > best.totalMs) best = duration;
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
if (duration.firstStartUtc !== best.firstStartUtc) {
|
|
200
|
-
if (duration.firstStartUtc < best.firstStartUtc) best = duration;
|
|
201
|
-
continue;
|
|
202
|
-
}
|
|
203
|
-
if (duration.place.id < best.place.id) best = duration;
|
|
204
|
-
}
|
|
205
|
-
return best === null ? null : { place: best.place, totalMs: best.totalMs };
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// src/location/store.ts
|
|
209
|
-
import { createHash } from "crypto";
|
|
210
|
-
import { lstat, mkdir, readFile, readdir, realpath } from "fs/promises";
|
|
211
|
-
import path from "path";
|
|
212
|
-
var LOCATIONS_DIR_NAME = "locations";
|
|
213
|
-
var LOCATION_DAY_KIND = "location-day";
|
|
214
|
-
var LOCATION_DAY_FORMAT_VERSION = 1;
|
|
215
|
-
var MAX_TRACKED_LOCATION_DAYS = 90;
|
|
216
|
-
var DAY_FILE_NAME_PATTERN = /^\d{4}-\d{2}-\d{2}\.md$/;
|
|
217
|
-
var stateLocks = /* @__PURE__ */ new Map();
|
|
218
|
-
function withStateLock(key, fn) {
|
|
219
|
-
const prior = stateLocks.get(key) ?? Promise.resolve();
|
|
220
|
-
const next = prior.then(fn, fn);
|
|
221
|
-
const tail = next.then(
|
|
222
|
-
() => void 0,
|
|
223
|
-
() => void 0
|
|
224
|
-
);
|
|
225
|
-
stateLocks.set(key, tail);
|
|
226
|
-
void tail.then(() => {
|
|
227
|
-
if (stateLocks.get(key) === tail) stateLocks.delete(key);
|
|
228
|
-
});
|
|
229
|
-
return next;
|
|
230
|
-
}
|
|
231
|
-
function locationDayFilePath(memoryDir, date) {
|
|
232
|
-
if (!isValidLocationDate(date)) {
|
|
233
|
-
throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
|
|
234
|
-
}
|
|
235
|
-
return path.join(memoryDir, LOCATIONS_DIR_NAME, `${date}.md`);
|
|
236
|
-
}
|
|
237
|
-
function locationSyncStateFilePath(memoryDir) {
|
|
238
|
-
return path.join(memoryDir, "state", "locations", "sync.json");
|
|
239
|
-
}
|
|
240
|
-
function emptyLocationSyncState() {
|
|
241
|
-
return { version: 1, sources: {} };
|
|
242
|
-
}
|
|
243
|
-
async function loadLocationSyncState(memoryDir) {
|
|
244
|
-
let raw;
|
|
245
|
-
try {
|
|
246
|
-
raw = await readFile(locationSyncStateFilePath(memoryDir), "utf-8");
|
|
247
|
-
} catch (err) {
|
|
248
|
-
if (err.code === "ENOENT") return emptyLocationSyncState();
|
|
249
|
-
throw err;
|
|
250
|
-
}
|
|
251
|
-
let parsed;
|
|
252
|
-
try {
|
|
253
|
-
parsed = JSON.parse(raw);
|
|
254
|
-
} catch {
|
|
255
|
-
return emptyLocationSyncState();
|
|
256
|
-
}
|
|
257
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed) || typeof parsed.sources !== "object" || parsed.sources === null) {
|
|
258
|
-
return emptyLocationSyncState();
|
|
259
|
-
}
|
|
260
|
-
return { version: 1, sources: parsed.sources };
|
|
261
|
-
}
|
|
262
|
-
async function saveLocationSyncState(memoryDir, state) {
|
|
263
|
-
await mkdir(path.dirname(locationSyncStateFilePath(memoryDir)), { recursive: true, mode: 448 });
|
|
264
|
-
await writeFileAtomically(
|
|
265
|
-
locationSyncStateFilePath(memoryDir),
|
|
266
|
-
`${JSON.stringify(state, null, 2)}
|
|
267
|
-
`
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
function pruneSourceDays(source) {
|
|
271
|
-
const days = source.days;
|
|
272
|
-
if (days === void 0) return;
|
|
273
|
-
const keys = Object.keys(days).sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
|
|
274
|
-
for (const key of keys.slice(0, Math.max(0, keys.length - MAX_TRACKED_LOCATION_DAYS))) {
|
|
275
|
-
delete days[key];
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
async function updateLocationSourceDay(memoryDir, sourceId, date, payload, completedAtUtc) {
|
|
279
|
-
if (!isValidLocationDate(date)) {
|
|
280
|
-
throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
|
|
281
|
-
}
|
|
282
|
-
return withStateLock(locationSyncStateFilePath(memoryDir), async () => {
|
|
283
|
-
const state = await loadLocationSyncState(memoryDir);
|
|
284
|
-
const source = state.sources[sourceId] ?? {};
|
|
285
|
-
const days = source.days ?? {};
|
|
286
|
-
days[date] = payload;
|
|
287
|
-
source.days = days;
|
|
288
|
-
source.lastSyncedAtUtc = completedAtUtc;
|
|
289
|
-
state.sources[sourceId] = source;
|
|
290
|
-
for (const candidate of Object.values(state.sources)) pruneSourceDays(candidate);
|
|
291
|
-
await saveLocationSyncState(memoryDir, state);
|
|
292
|
-
return state;
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
function hashLocationBody(body) {
|
|
296
|
-
return createHash("sha256").update(body, "utf8").digest("hex");
|
|
297
|
-
}
|
|
298
|
-
function clockHhMm(iso, timezone) {
|
|
299
|
-
return new Intl.DateTimeFormat("en-GB", {
|
|
300
|
-
timeZone: timezone,
|
|
301
|
-
hour: "2-digit",
|
|
302
|
-
minute: "2-digit",
|
|
303
|
-
hour12: false
|
|
304
|
-
}).format(new Date(iso));
|
|
305
|
-
}
|
|
306
|
-
function formatDuration(ms) {
|
|
307
|
-
const totalMinutes = Math.round(ms / 6e4);
|
|
308
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
309
|
-
const minutes = totalMinutes % 60;
|
|
310
|
-
if (hours <= 0) return `${minutes}m`;
|
|
311
|
-
return `${hours}h ${String(minutes).padStart(2, "0")}m`;
|
|
312
|
-
}
|
|
313
|
-
function safeLabel(label) {
|
|
314
|
-
return label.replace(/\s+/g, " ").replace(/[`*_]/g, "").trim();
|
|
315
|
-
}
|
|
316
|
-
function formatPlaceLabel(segment) {
|
|
317
|
-
const label = safeLabel(segment.place.label);
|
|
318
|
-
return segment.place.kind === void 0 ? label : `${label} (${segment.place.kind})`;
|
|
319
|
-
}
|
|
320
|
-
function formatCoordinates(segment) {
|
|
321
|
-
if (segment.place.latitude === void 0 || segment.place.longitude === void 0) return "";
|
|
322
|
-
return ` @ ${segment.place.latitude.toFixed(4)},${segment.place.longitude.toFixed(4)}`;
|
|
323
|
-
}
|
|
324
|
-
function composeLocationDayBody(date, timezone, sources) {
|
|
325
|
-
const lines = [`# Location day \u2014 ${date} (${timezone})`, ""];
|
|
326
|
-
const allSegments = [];
|
|
327
|
-
let observationCount = 0;
|
|
328
|
-
for (const entry of Object.values(sources)) {
|
|
329
|
-
allSegments.push(...entry.segments);
|
|
330
|
-
observationCount += entry.observationCount;
|
|
331
|
-
}
|
|
332
|
-
lines.push("## Summary", "");
|
|
333
|
-
if (observationCount === 0) {
|
|
334
|
-
lines.push("No location observations recorded.", "");
|
|
335
|
-
} else {
|
|
336
|
-
const durations = placeDurations(allSegments).sort((a, b) => b.totalMs - a.totalMs);
|
|
337
|
-
lines.push(
|
|
338
|
-
`- Places visited: ${durations.length}`,
|
|
339
|
-
...durations.map(
|
|
340
|
-
(duration) => `- ${safeLabel(duration.place.label)}: ${formatDuration(duration.totalMs)}`
|
|
341
|
-
),
|
|
342
|
-
""
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
const sourceIds = Object.keys(sources).sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
|
|
346
|
-
for (const sourceId of sourceIds) {
|
|
347
|
-
const entry = sources[sourceId];
|
|
348
|
-
lines.push(`## Timeline \u2014 ${safeLabel(entry.providerDisplayName ?? sourceId)}`, "");
|
|
349
|
-
if (entry.segments.length === 0) {
|
|
350
|
-
lines.push("No observations.", "");
|
|
351
|
-
continue;
|
|
352
|
-
}
|
|
353
|
-
for (const segment of entry.segments) {
|
|
354
|
-
lines.push(
|
|
355
|
-
`- ${clockHhMm(segment.startUtc, timezone)}\u2013${clockHhMm(segment.endUtc, timezone)} \u2014 ${formatPlaceLabel(segment)}${formatCoordinates(segment)}`
|
|
356
|
-
);
|
|
357
|
-
}
|
|
358
|
-
lines.push("");
|
|
359
|
-
}
|
|
360
|
-
return `${lines.join("\n").trimEnd()}
|
|
361
|
-
`;
|
|
362
|
-
}
|
|
363
|
-
function composeLocationDayMeta(date, timezone, sources, body) {
|
|
364
|
-
let observationCount = 0;
|
|
365
|
-
for (const entry of Object.values(sources)) observationCount += entry.observationCount;
|
|
366
|
-
return {
|
|
367
|
-
kind: LOCATION_DAY_KIND,
|
|
368
|
-
date,
|
|
369
|
-
timezone,
|
|
370
|
-
formatVersion: LOCATION_DAY_FORMAT_VERSION,
|
|
371
|
-
sources: Object.keys(sources).sort((a, b) => a < b ? -1 : a > b ? 1 : 0),
|
|
372
|
-
observationCount,
|
|
373
|
-
contentHash: hashLocationBody(body)
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
|
-
function frontmatterScalar(key, value) {
|
|
377
|
-
return `${key}: ${typeof value === "number" ? value : JSON.stringify(value)}`;
|
|
378
|
-
}
|
|
379
|
-
function frontmatterList(key, values) {
|
|
380
|
-
if (values.length === 0) return [`${key}: []`];
|
|
381
|
-
const lines = [`${key}:`];
|
|
382
|
-
for (const value of values) lines.push(` - ${JSON.stringify(value)}`);
|
|
383
|
-
return lines;
|
|
384
|
-
}
|
|
385
|
-
function serializeLocationDay(meta, body) {
|
|
386
|
-
const lines = ["---"];
|
|
387
|
-
lines.push(frontmatterScalar("kind", meta.kind));
|
|
388
|
-
lines.push(frontmatterScalar("date", meta.date));
|
|
389
|
-
lines.push(frontmatterScalar("timezone", meta.timezone));
|
|
390
|
-
lines.push(frontmatterScalar("formatVersion", meta.formatVersion));
|
|
391
|
-
lines.push(...frontmatterList("sources", meta.sources));
|
|
392
|
-
lines.push(frontmatterScalar("observationCount", meta.observationCount));
|
|
393
|
-
lines.push(frontmatterScalar("contentHash", meta.contentHash));
|
|
394
|
-
lines.push("---", "", body);
|
|
395
|
-
return lines.join("\n");
|
|
396
|
-
}
|
|
397
|
-
function parseScalar(raw) {
|
|
398
|
-
try {
|
|
399
|
-
const parsed = JSON.parse(raw);
|
|
400
|
-
return typeof parsed === "string" ? parsed : raw;
|
|
401
|
-
} catch {
|
|
402
|
-
return raw;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
function parseLocationDaySummary(raw) {
|
|
406
|
-
if (!raw.startsWith("---\n")) return null;
|
|
407
|
-
const closeIndex = raw.indexOf("\n---\n", 4);
|
|
408
|
-
if (closeIndex === -1) return null;
|
|
409
|
-
const scalars = {};
|
|
410
|
-
const lists = {};
|
|
411
|
-
let currentList = null;
|
|
412
|
-
for (const line of raw.slice(4, closeIndex).split("\n")) {
|
|
413
|
-
const listItem = /^ {2}- (.*)$/.exec(line);
|
|
414
|
-
if (listItem !== null && currentList !== null) {
|
|
415
|
-
lists[currentList].push(parseScalar(listItem[1]));
|
|
416
|
-
continue;
|
|
417
|
-
}
|
|
418
|
-
currentList = null;
|
|
419
|
-
const separator = line.indexOf(":");
|
|
420
|
-
if (separator === -1) continue;
|
|
421
|
-
const key = line.slice(0, separator);
|
|
422
|
-
const value = line.slice(separator + 1).trim();
|
|
423
|
-
if (value === "" || value === "[]") {
|
|
424
|
-
lists[key] = [];
|
|
425
|
-
currentList = key;
|
|
426
|
-
continue;
|
|
427
|
-
}
|
|
428
|
-
if (value.startsWith("[")) {
|
|
429
|
-
lists[key] = [parseScalar(value)];
|
|
430
|
-
currentList = key;
|
|
431
|
-
continue;
|
|
432
|
-
}
|
|
433
|
-
scalars[key] = value;
|
|
434
|
-
}
|
|
435
|
-
if (scalars.kind === void 0 || parseScalar(scalars.kind) !== LOCATION_DAY_KIND) return null;
|
|
436
|
-
if (scalars.date === void 0 || scalars.contentHash === void 0) return null;
|
|
437
|
-
return {
|
|
438
|
-
date: parseScalar(scalars.date),
|
|
439
|
-
timezone: scalars.timezone === void 0 ? "UTC" : parseScalar(scalars.timezone),
|
|
440
|
-
sources: lists.sources ?? [],
|
|
441
|
-
observationCount: scalars.observationCount === void 0 ? 0 : Number(scalars.observationCount) || 0,
|
|
442
|
-
contentHash: parseScalar(scalars.contentHash)
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
function isErrnoCode(err, code) {
|
|
446
|
-
return err instanceof Error && err.code === code;
|
|
447
|
-
}
|
|
448
|
-
async function assertNotSymlink(target, kind) {
|
|
449
|
-
let stat;
|
|
450
|
-
try {
|
|
451
|
-
stat = await lstat(target);
|
|
452
|
-
} catch (err) {
|
|
453
|
-
if (isErrnoCode(err, "ENOENT")) return;
|
|
454
|
-
throw err;
|
|
455
|
-
}
|
|
456
|
-
if (stat.isSymbolicLink()) {
|
|
457
|
-
throw new Error(
|
|
458
|
-
`locations ${kind} '${path.basename(target)}' is a symbolic link \u2014 refusing to follow it even when it resolves inside the memory dir (AGENTS.md pattern #3)`
|
|
459
|
-
);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
async function assertNoEscape(rootReal, candidate) {
|
|
463
|
-
let candidateReal;
|
|
464
|
-
try {
|
|
465
|
-
candidateReal = await realpath(candidate);
|
|
466
|
-
} catch {
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
if (!pathIsInside(rootReal, candidateReal)) {
|
|
470
|
-
throw new Error(
|
|
471
|
-
"location day path resolves outside the memory dir \u2014 refusing to follow a symlink/traversal (AGENTS.md pattern #3)"
|
|
472
|
-
);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
async function assertDayPathContained(memoryDir, targetPath) {
|
|
476
|
-
let rootReal;
|
|
477
|
-
try {
|
|
478
|
-
rootReal = await realpath(memoryDir);
|
|
479
|
-
} catch {
|
|
480
|
-
rootReal = path.resolve(memoryDir);
|
|
481
|
-
}
|
|
482
|
-
const locationsDir = path.join(memoryDir, LOCATIONS_DIR_NAME);
|
|
483
|
-
await assertNoEscape(rootReal, locationsDir);
|
|
484
|
-
await assertNoEscape(rootReal, targetPath);
|
|
485
|
-
await assertNotSymlink(locationsDir, "directory");
|
|
486
|
-
await assertNotSymlink(targetPath, "day file");
|
|
487
|
-
}
|
|
488
|
-
async function writeLocationDay(memoryDir, date, serialized) {
|
|
489
|
-
const target = locationDayFilePath(memoryDir, date);
|
|
490
|
-
await assertDayPathContained(memoryDir, target);
|
|
491
|
-
try {
|
|
492
|
-
if (await readFile(target, "utf-8") === serialized) return false;
|
|
493
|
-
} catch (err) {
|
|
494
|
-
if (!isErrnoCode(err, "ENOENT")) throw err;
|
|
495
|
-
}
|
|
496
|
-
await mkdir(path.dirname(target), { recursive: true, mode: 448 });
|
|
497
|
-
await writeFileAtomically(target, serialized);
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
async function readLocationDay(memoryDir, date) {
|
|
501
|
-
const target = locationDayFilePath(memoryDir, date);
|
|
502
|
-
await assertDayPathContained(memoryDir, target);
|
|
503
|
-
try {
|
|
504
|
-
return await readFile(target, "utf-8");
|
|
505
|
-
} catch (err) {
|
|
506
|
-
if (isErrnoCode(err, "ENOENT")) return null;
|
|
507
|
-
throw err;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
async function listLocationDayDates(memoryDir) {
|
|
511
|
-
const locationsDir = path.join(memoryDir, LOCATIONS_DIR_NAME);
|
|
512
|
-
await assertDayPathContained(memoryDir, locationsDir);
|
|
513
|
-
let entries;
|
|
514
|
-
try {
|
|
515
|
-
entries = await readdir(locationsDir);
|
|
516
|
-
} catch (err) {
|
|
517
|
-
if (isErrnoCode(err, "ENOENT")) return [];
|
|
518
|
-
throw err;
|
|
519
|
-
}
|
|
520
|
-
const dates = entries.filter((entry) => DAY_FILE_NAME_PATTERN.test(entry)).map((entry) => entry.slice(0, -3));
|
|
521
|
-
dates.sort((a, b) => a > b ? -1 : a < b ? 1 : 0);
|
|
522
|
-
return dates;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
78
|
// src/location/pipeline.ts
|
|
526
79
|
var MAX_SYNC_PAGES = 1e4;
|
|
527
80
|
function sanitizeProviderError(error) {
|
|
@@ -759,6 +312,63 @@ async function syncLocation(options) {
|
|
|
759
312
|
return runs;
|
|
760
313
|
}
|
|
761
314
|
|
|
315
|
+
// src/location/backfill.ts
|
|
316
|
+
async function backfillMemoryStorage(config) {
|
|
317
|
+
const root = resolveNamespaceCapabilities(config).namespaces ? await resolveDefaultNamespaceRoot(config) : config.memoryDir;
|
|
318
|
+
return new StorageManager(root);
|
|
319
|
+
}
|
|
320
|
+
function memoriesTouchingDay(memories, day, config) {
|
|
321
|
+
const touched = [];
|
|
322
|
+
for (const memory of memories) {
|
|
323
|
+
const result = memoryLocationWindow(memory.frontmatter, (instant) => localDayKey(instant, config.timezone));
|
|
324
|
+
if (result.days !== void 0 && result.days.includes(day)) touched.push(memory);
|
|
325
|
+
}
|
|
326
|
+
touched.sort((a, b) => a.frontmatter.id < b.frontmatter.id ? -1 : a.frontmatter.id > b.frontmatter.id ? 1 : 0);
|
|
327
|
+
return touched;
|
|
328
|
+
}
|
|
329
|
+
async function backfillLocationTags(options) {
|
|
330
|
+
if (!locationTaggingEnabled(options.config)) {
|
|
331
|
+
throw new Error(
|
|
332
|
+
"location backfill requires location.enabled and location.tagging.enabled (and location.tagging.backfillEnabled for the command surface)"
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
const index = await loadDaySegmentIndex(options.memoryDir);
|
|
336
|
+
const memories = await options.storage.readAllMemories();
|
|
337
|
+
const days = [];
|
|
338
|
+
const cursor = /* @__PURE__ */ new Date(`${options.from}T00:00:00Z`);
|
|
339
|
+
const end = /* @__PURE__ */ new Date(`${options.to}T00:00:00Z`);
|
|
340
|
+
while (cursor <= end) {
|
|
341
|
+
const date = cursor.toISOString().slice(0, 10);
|
|
342
|
+
try {
|
|
343
|
+
const daySegments = index.get(date);
|
|
344
|
+
if (daySegments === void 0 || daySegments.every((entry) => entry.segments.length === 0)) {
|
|
345
|
+
days.push({ date, emptyDay: true, counts: emptyEnrichmentCounts(), considered: 0 });
|
|
346
|
+
} else {
|
|
347
|
+
const touching = memoriesTouchingDay(memories, date, options.config);
|
|
348
|
+
const counts = await enrichMemoriesWithLocation({
|
|
349
|
+
storage: options.storage,
|
|
350
|
+
memoryDir: options.memoryDir,
|
|
351
|
+
config: options.config,
|
|
352
|
+
memories: touching,
|
|
353
|
+
index,
|
|
354
|
+
dryRun: options.dryRun === true
|
|
355
|
+
});
|
|
356
|
+
days.push({ date, emptyDay: false, counts, considered: touching.length });
|
|
357
|
+
}
|
|
358
|
+
} catch (error) {
|
|
359
|
+
days.push({
|
|
360
|
+
date,
|
|
361
|
+
emptyDay: false,
|
|
362
|
+
failed: error instanceof Error ? error.message : String(error),
|
|
363
|
+
counts: emptyEnrichmentCounts(),
|
|
364
|
+
considered: 0
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
cursor.setUTCDate(cursor.getUTCDate() + 1);
|
|
368
|
+
}
|
|
369
|
+
return { from: options.from, to: options.to, dryRun: options.dryRun === true, days };
|
|
370
|
+
}
|
|
371
|
+
|
|
762
372
|
// src/location/provider-setup.ts
|
|
763
373
|
var loadFailuresWarned = /* @__PURE__ */ new Set();
|
|
764
374
|
function readReittiEnv() {
|
|
@@ -862,7 +472,29 @@ function parseLocationBackfillRange(rawFrom, rawTo) {
|
|
|
862
472
|
if (days > 90) {
|
|
863
473
|
throw new EngramAccessInputError("location: backfill range is capped at 90 days");
|
|
864
474
|
}
|
|
865
|
-
return { endDate: to, days };
|
|
475
|
+
return { from, endDate: to, days };
|
|
476
|
+
}
|
|
477
|
+
async function runLocationBackfill(deps, request = {}) {
|
|
478
|
+
const range = parseLocationBackfillRange(request.from, request.to);
|
|
479
|
+
if (!deps.config.enabled || !deps.config.tagging.enabled || !deps.config.tagging.backfillEnabled) {
|
|
480
|
+
throw new EngramAccessInputError(
|
|
481
|
+
"location: backfill requires location.enabled, location.tagging.enabled, and location.tagging.backfillEnabled"
|
|
482
|
+
);
|
|
483
|
+
}
|
|
484
|
+
await ensureConfiguredLocationProviders(deps.config);
|
|
485
|
+
const days = request.dryRun === true ? [] : await syncLocation({ ...deps, endDate: range.endDate, days: range.days });
|
|
486
|
+
let memory;
|
|
487
|
+
if (deps.getMemoryStorage !== void 0) {
|
|
488
|
+
memory = await backfillLocationTags({
|
|
489
|
+
storage: await deps.getMemoryStorage(),
|
|
490
|
+
memoryDir: deps.memoryDir,
|
|
491
|
+
config: deps.config,
|
|
492
|
+
from: range.from,
|
|
493
|
+
to: range.endDate,
|
|
494
|
+
dryRun: request.dryRun === true
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
return { days, ...memory !== void 0 ? { memory } : {} };
|
|
866
498
|
}
|
|
867
499
|
var USAGE = `Usage: location <command> [options]
|
|
868
500
|
|
|
@@ -873,8 +505,12 @@ Commands:
|
|
|
873
505
|
ending yesterday)
|
|
874
506
|
--date <YYYY-MM-DD> End the window on this day (inclusive)
|
|
875
507
|
--days <n> Window size, 1..90 (default: location.syncDays)
|
|
876
|
-
backfill --from <date> --to <date>
|
|
508
|
+
backfill --from <date> --to <date> [--dry-run]
|
|
877
509
|
Sync an explicit historical range (\u2264 90 days)
|
|
510
|
+
and re-tag overlapping memories (requires
|
|
511
|
+
location.tagging.backfillEnabled). --dry-run
|
|
512
|
+
persists nothing: it only reports the memory
|
|
513
|
+
changes stored segments would produce.
|
|
878
514
|
day <YYYY-MM-DD> Print one stored location day
|
|
879
515
|
|
|
880
516
|
Add --json to status/sync/backfill/day for machine-readable output.
|
|
@@ -882,7 +518,7 @@ Credentials for built-in providers come from the environment:
|
|
|
882
518
|
reitti: REITTI_BASE_URL, REITTI_TOKEN[, REITTI_AUTH_MODE=x-api-token|bearer]
|
|
883
519
|
`;
|
|
884
520
|
var VALUE_FLAGS = /* @__PURE__ */ new Set(["--date", "--days", "--from", "--to"]);
|
|
885
|
-
var BOOLEAN_FLAGS = /* @__PURE__ */ new Set(["--json"]);
|
|
521
|
+
var BOOLEAN_FLAGS = /* @__PURE__ */ new Set(["--json", "--dry-run"]);
|
|
886
522
|
function parseCliFlags(args) {
|
|
887
523
|
const flags = /* @__PURE__ */ new Map();
|
|
888
524
|
const positional = [];
|
|
@@ -911,6 +547,25 @@ function parseCliFlags(args) {
|
|
|
911
547
|
}
|
|
912
548
|
return { flags, positional };
|
|
913
549
|
}
|
|
550
|
+
function renderBackfillReport(io, report) {
|
|
551
|
+
for (const day of report.days) {
|
|
552
|
+
if (day.emptyDay) {
|
|
553
|
+
io.stdout.write(`${day.date}: no stored location observations (empty day)
|
|
554
|
+
`);
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
if (day.failed !== void 0) {
|
|
558
|
+
io.stdout.write(`${day.date}: FAILED \u2014 ${day.failed}
|
|
559
|
+
`);
|
|
560
|
+
continue;
|
|
561
|
+
}
|
|
562
|
+
const c = day.counts;
|
|
563
|
+
io.stdout.write(
|
|
564
|
+
`${day.date}: ${c.tagged} tagged, ${c.updated} updated, ${c.removed} removed, ${c.unchanged} unchanged, ${c.unmatched} unmatched (incl. ambiguous), ${c.manual} manual, ${c.untimed} untimed, ${c.failed} failed, ${day.considered} considered${report.dryRun ? " (dry run)" : ""}
|
|
565
|
+
`
|
|
566
|
+
);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
914
569
|
function flagString(parsed, name) {
|
|
915
570
|
const value = parsed.flags.get(name);
|
|
916
571
|
return typeof value === "string" ? value : void 0;
|
|
@@ -1007,15 +662,20 @@ async function runLocationCliCommand(deps, args, io) {
|
|
|
1007
662
|
}
|
|
1008
663
|
case "backfill": {
|
|
1009
664
|
const parsed = parseCliFlags(rest);
|
|
1010
|
-
const
|
|
1011
|
-
|
|
665
|
+
const result = await runLocationBackfill(deps, {
|
|
666
|
+
from: flagString(parsed, "--from"),
|
|
667
|
+
to: flagString(parsed, "--to"),
|
|
668
|
+
dryRun: parsed.flags.has("--dry-run")
|
|
669
|
+
});
|
|
1012
670
|
if (parsed.flags.has("--json")) {
|
|
1013
|
-
io.stdout.write(`${JSON.stringify(
|
|
671
|
+
io.stdout.write(`${JSON.stringify(result, null, 2)}
|
|
1014
672
|
`);
|
|
1015
673
|
} else {
|
|
1016
|
-
renderRuns(io,
|
|
674
|
+
renderRuns(io, result.days);
|
|
675
|
+
if (result.memory !== void 0) renderBackfillReport(io, result.memory);
|
|
1017
676
|
}
|
|
1018
|
-
|
|
677
|
+
const memoryFailed = result.memory?.days.some((day) => day.failed !== void 0) === true;
|
|
678
|
+
return anySourceFailed(result.days) || memoryFailed ? 1 : 0;
|
|
1019
679
|
}
|
|
1020
680
|
case "day": {
|
|
1021
681
|
const parsed = parseCliFlags(rest);
|
|
@@ -1052,42 +712,20 @@ export {
|
|
|
1052
712
|
getLocationProvider,
|
|
1053
713
|
listLocationProviders,
|
|
1054
714
|
clearLocationProviders,
|
|
1055
|
-
isValidLocationDate,
|
|
1056
|
-
locationDayWindow,
|
|
1057
|
-
localDayKey,
|
|
1058
|
-
bucketObservationsByDay,
|
|
1059
|
-
intervalOverlapMs,
|
|
1060
|
-
observationSegments,
|
|
1061
|
-
placeDurations,
|
|
1062
|
-
dominantPlace,
|
|
1063
|
-
LOCATIONS_DIR_NAME,
|
|
1064
|
-
LOCATION_DAY_KIND,
|
|
1065
|
-
LOCATION_DAY_FORMAT_VERSION,
|
|
1066
|
-
locationDayFilePath,
|
|
1067
|
-
locationSyncStateFilePath,
|
|
1068
|
-
emptyLocationSyncState,
|
|
1069
|
-
loadLocationSyncState,
|
|
1070
|
-
saveLocationSyncState,
|
|
1071
|
-
updateLocationSourceDay,
|
|
1072
|
-
hashLocationBody,
|
|
1073
|
-
composeLocationDayBody,
|
|
1074
|
-
composeLocationDayMeta,
|
|
1075
|
-
serializeLocationDay,
|
|
1076
|
-
parseLocationDaySummary,
|
|
1077
|
-
writeLocationDay,
|
|
1078
|
-
readLocationDay,
|
|
1079
|
-
listLocationDayDates,
|
|
1080
715
|
sanitizeProviderError,
|
|
1081
716
|
syncLocationDay,
|
|
1082
717
|
locationStatus,
|
|
1083
718
|
checkLocationSources,
|
|
1084
719
|
syncLocation,
|
|
720
|
+
backfillMemoryStorage,
|
|
721
|
+
backfillLocationTags,
|
|
1085
722
|
ensureConfiguredLocationProviders,
|
|
1086
723
|
runLocationStatus,
|
|
1087
724
|
runLocationCheck,
|
|
1088
725
|
runLocationSync,
|
|
1089
726
|
runLocationDay,
|
|
1090
727
|
parseLocationBackfillRange,
|
|
728
|
+
runLocationBackfill,
|
|
1091
729
|
runLocationCliCommand
|
|
1092
730
|
};
|
|
1093
|
-
//# sourceMappingURL=chunk-
|
|
731
|
+
//# sourceMappingURL=chunk-JKTV3JNX.js.map
|