@remnic/core 9.65.7 → 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 +15 -14
- package/dist/access-admin-ops-surface.js +65 -62
- package/dist/access-authorization-probe.d.ts +15 -14
- package/dist/access-authorization-probe.js +66 -63
- package/dist/access-boundary.d.ts +15 -14
- package/dist/access-boundary.js +65 -62
- package/dist/access-citation-namespace.js +3 -3
- package/dist/access-cli.js +182 -174
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +2 -2
- package/dist/access-coding-context-resolution.js +2 -2
- package/dist/access-extraction-force-flush.d.ts +15 -14
- package/dist/access-extraction-force-flush.js +65 -62
- package/dist/access-health-types.d.ts +2 -2
- package/dist/access-http-lcm-compaction.d.ts +15 -14
- package/dist/access-http-lifecycle-flush.d.ts +15 -14
- package/dist/access-http-offline-stream.d.ts +15 -14
- package/dist/access-http-query.d.ts +3 -3
- package/dist/access-http-query.js +67 -64
- package/dist/access-http.d.ts +16 -15
- package/dist/access-http.js +87 -84
- package/dist/access-identity-continuity-surface.d.ts +13 -12
- package/dist/access-identity-continuity-surface.js +65 -62
- package/dist/access-lcm-surface.d.ts +15 -14
- package/dist/access-lcm-surface.js +65 -62
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +15 -14
- package/dist/access-mcp.js +77 -74
- package/dist/access-memory-search-fanout.d.ts +3 -3
- package/dist/{access-namespace-preflight-8VYKmRX0.d.ts → access-namespace-preflight-CLWUoMyW.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -4
- package/dist/access-namespace-preflight.js +65 -62
- package/dist/access-observe-write-surface.d.ts +15 -14
- package/dist/access-observe-write-surface.js +65 -62
- package/dist/access-offline-manifest.d.ts +13 -12
- package/dist/access-offline-manifest.js +16 -16
- package/dist/access-operations-batch.js +69 -66
- package/dist/access-operations.d.ts +16 -15
- package/dist/access-operations.js +74 -71
- package/dist/access-recall-concurrency.d.ts +15 -14
- package/dist/access-recall-concurrency.js +65 -62
- package/dist/access-recall-response.d.ts +15 -14
- package/dist/access-recall-response.js +65 -62
- package/dist/access-recall-surface.d.ts +15 -14
- package/dist/access-recall-surface.js +65 -62
- package/dist/access-schema.js +7 -7
- package/dist/{access-service-Crk__Git.d.ts → access-service-CEUE1Isj.d.ts} +14 -14
- package/dist/access-service-helpers.d.ts +15 -14
- package/dist/access-service.d.ts +15 -14
- package/dist/access-service.js +65 -62
- package/dist/access-surface-catalog.d.ts +15 -14
- package/dist/access-surface-catalog.js +69 -64
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +6 -4
- package/dist/action-confidence.d.ts +2 -2
- package/dist/active-context-config.d.ts +27 -0
- package/dist/active-context-config.js +14 -0
- package/dist/active-context-transform.d.ts +267 -0
- package/dist/active-context-transform.js +31 -0
- package/dist/active-memory-bridge.d.ts +2 -2
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.d.ts +2 -2
- package/dist/active-recall.js +17 -16
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/ambient-provenance.d.ts +2 -2
- package/dist/artifact-search.d.ts +2 -2
- package/dist/{auto-sync-XVMLL2RH.js → auto-sync-Q6Q2FVSC.js} +10 -10
- package/dist/behavior-learner.d.ts +2 -2
- package/dist/behavior-signals.d.ts +2 -2
- package/dist/bootstrap.d.ts +13 -12
- package/dist/briefing-window.d.ts +5 -3
- package/dist/briefing.d.ts +5 -3
- package/dist/briefing.js +33 -33
- package/dist/buffer-surprise-report.d.ts +2 -2
- package/dist/buffer-turn-helpers.d.ts +2 -2
- package/dist/buffer.d.ts +5 -3
- package/dist/buffer.js +24 -8
- package/dist/bulk-import/index.d.ts +4 -4
- package/dist/calibration.d.ts +2 -2
- package/dist/calibration.js +1 -1
- package/dist/capabilities.d.ts +2 -2
- package/dist/{capsule-merge-SGIVB3WA.js → capsule-merge-SEHERWWP.js} +4 -4
- package/dist/{catalog-DybwVNW3.d.ts → catalog-D1HgugTA.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +4 -4
- package/dist/causal-consolidation.d.ts +2 -2
- package/dist/causal-consolidation.js +34 -34
- package/dist/causal-trajectory-graph.d.ts +2 -2
- package/dist/{chunk-CFGU52XJ.js → chunk-23CVL7HS.js} +2 -2
- package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
- package/dist/{chunk-6CPUQ5D6.js → chunk-2LBAFHOQ.js} +15 -15
- package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
- package/dist/{chunk-IP4ZNT4U.js → chunk-33MFRY25.js} +2 -2
- package/dist/{chunk-VFYRYFLL.js → chunk-3TSU662L.js} +3 -3
- package/dist/chunk-43HUVDTD.js +114 -0
- package/dist/chunk-43HUVDTD.js.map +1 -0
- package/dist/{chunk-VXVZ2GM3.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-5VPQSRQO.js → chunk-4STAANV7.js} +3 -3
- package/dist/{chunk-46WM6JX2.js → chunk-4ZWCQJNM.js} +5 -5
- package/dist/{chunk-LLQCM2U2.js → chunk-56IV4J5W.js} +617 -167
- package/dist/chunk-56IV4J5W.js.map +1 -0
- package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
- package/dist/{chunk-YKWFK7XA.js → chunk-6CEGSTBD.js} +7 -7
- package/dist/{chunk-I7EX6KSH.js → chunk-6QDXA26G.js} +264 -210
- package/dist/chunk-6QDXA26G.js.map +1 -0
- package/dist/{chunk-GEPACVWN.js → chunk-6RUHELWR.js} +3 -3
- package/dist/{chunk-ZAOHJDKH.js → chunk-72OIT7KS.js} +4 -4
- package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
- package/dist/{chunk-7TCGNUVP.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-B32WYRXX.js +77 -0
- package/dist/chunk-B32WYRXX.js.map +1 -0
- package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
- package/dist/{chunk-YOXVZJFM.js → chunk-CFVTRUR3.js} +2 -2
- package/dist/{chunk-ACOC27BB.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-T42L3S6A.js → chunk-DDX6KIXF.js} +2 -2
- package/dist/{chunk-JIYDRBVZ.js → chunk-DJORULH3.js} +2 -2
- package/dist/{chunk-WTOZBZNN.js → chunk-DMEHOEC7.js} +6 -6
- package/dist/{chunk-OPPBTPUU.js → chunk-DUAJKRR2.js} +4 -4
- 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-SVVIASVX.js → chunk-EFQCDJZ2.js} +7 -7
- 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-Z4U3UN56.js → chunk-EZSCW4EM.js} +6 -6
- package/dist/{chunk-F6QHHRWP.js → chunk-FESUGFIL.js} +3 -3
- package/dist/{chunk-S3K2CIK5.js → chunk-FKKGCGYL.js} +3 -3
- package/dist/{chunk-BWGCOLEL.js → chunk-FTTJRVB7.js} +2 -2
- package/dist/{chunk-JAQXUGLN.js → chunk-FYWLSFFS.js} +2 -2
- package/dist/{chunk-BJTHRFFC.js → chunk-GEJKYA7D.js} +77 -36
- package/dist/chunk-GEJKYA7D.js.map +1 -0
- package/dist/chunk-GSKINLAK.js +267 -0
- package/dist/chunk-GSKINLAK.js.map +1 -0
- package/dist/{chunk-OPGL46PX.js → chunk-GX6FTSYH.js} +2 -2
- package/dist/{chunk-A32YEQAM.js → chunk-H7VDIF2V.js} +2 -2
- package/dist/{chunk-PDDSFELN.js → chunk-HJXA6ZM7.js} +2 -2
- package/dist/{chunk-RGCF4XNH.js → chunk-HNPE66LB.js} +8 -8
- package/dist/{chunk-SEA6M7SS.js → chunk-I5VB44ZK.js} +2 -2
- package/dist/{chunk-SDEPLF7V.js → chunk-IBJ6U753.js} +2 -2
- package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
- package/dist/{chunk-RQE4TITU.js → chunk-IHGMRDEE.js} +431 -1834
- package/dist/chunk-IHGMRDEE.js.map +1 -0
- package/dist/{chunk-3RI5Y7KU.js → chunk-IVIAHQBR.js} +2 -2
- package/dist/{chunk-7WR462EM.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-T3JQTCCO.js → chunk-JI7U6AS3.js} +4 -4
- package/dist/{chunk-DVYRD4HY.js → chunk-JRRQ747T.js} +36 -7
- package/dist/chunk-JRRQ747T.js.map +1 -0
- package/dist/{chunk-I32NKXE2.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-ZPUIRTIZ.js → chunk-KOLJJN5G.js} +12 -75
- package/dist/chunk-KOLJJN5G.js.map +1 -0
- package/dist/{chunk-FMQ4MOQO.js → chunk-KXIXO76C.js} +32 -19
- package/dist/chunk-KXIXO76C.js.map +1 -0
- package/dist/{chunk-VKCAHCBI.js → chunk-L4X4PJYK.js} +2 -2
- package/dist/chunk-LB7WCZHY.js +553 -0
- package/dist/chunk-LB7WCZHY.js.map +1 -0
- package/dist/{chunk-W4BMEGQA.js → chunk-LUDBXTBJ.js} +8 -8
- package/dist/{chunk-I4343FIA.js → chunk-MAH64N55.js} +28 -10
- package/dist/chunk-MAH64N55.js.map +1 -0
- package/dist/{chunk-RIAM7DND.js → chunk-ME35HVDJ.js} +2 -2
- package/dist/{chunk-H63EDPFJ.js → chunk-MI2OTWV5.js} +15 -2
- package/dist/{chunk-H63EDPFJ.js.map → chunk-MI2OTWV5.js.map} +1 -1
- package/dist/{chunk-LBFFNDFM.js → chunk-MINHJ55X.js} +1 -1
- package/dist/chunk-MINHJ55X.js.map +1 -0
- package/dist/{chunk-NG3MBQV4.js → chunk-MJRGVXPQ.js} +2 -2
- package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
- package/dist/{chunk-7F27PCSN.js → chunk-MN5NOOI7.js} +2 -2
- package/dist/{chunk-JCWY73FK.js → chunk-N4F7ZSSG.js} +2 -2
- package/dist/{chunk-TR7DGXGI.js → chunk-NACLNNFQ.js} +5 -5
- package/dist/{chunk-LC2BDILZ.js → chunk-NBP4EX5N.js} +2 -2
- package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
- package/dist/{chunk-MFOSZUIT.js → chunk-NPIBN2VL.js} +2 -2
- package/dist/{chunk-IY7UXD3J.js → chunk-O57GM3FR.js} +2 -2
- package/dist/{chunk-I2HTKOOP.js → chunk-O7ERGZDA.js} +5 -5
- package/dist/{chunk-GTSVEEP3.js → chunk-OAJMQKQR.js} +3 -3
- package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
- package/dist/{chunk-D4QVPP3G.js → chunk-PEBH5DCK.js} +18 -11
- package/dist/chunk-PEBH5DCK.js.map +1 -0
- package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
- package/dist/{chunk-EOHKUWXW.js → chunk-QCRJMU5V.js} +2 -2
- package/dist/chunk-QJCWK2A7.js +1466 -0
- package/dist/chunk-QJCWK2A7.js.map +1 -0
- package/dist/{chunk-THG4GYIE.js → chunk-RDGKVH6T.js} +11 -7
- package/dist/{chunk-THG4GYIE.js.map → chunk-RDGKVH6T.js.map} +1 -1
- package/dist/{chunk-5DH6PG4B.js → chunk-RZ3IZIJG.js} +3 -3
- package/dist/{chunk-AAXJNINV.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-SVSRPG6M.js → chunk-TNGH4ZYI.js} +2 -2
- package/dist/{chunk-HZNYJN77.js → chunk-TNXNECAN.js} +6 -6
- package/dist/{chunk-JOEJG4SD.js → chunk-TVW4C7PV.js} +5 -5
- package/dist/{chunk-UFKPQBXH.js → chunk-U62OK7BB.js} +2 -2
- package/dist/{chunk-R2MZCYA6.js → chunk-UNUMFURP.js} +3 -3
- package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
- package/dist/chunk-UYA36DQ7.js.map +1 -0
- package/dist/{chunk-AFR6AIM4.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-YRVAKONL.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-RAIUTAZZ.js → chunk-WKAXBXVA.js} +2 -2
- package/dist/{chunk-ZIJDI4CP.js → chunk-WKJFIMVN.js} +2 -2
- package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
- package/dist/{chunk-7BEPVIH3.js → chunk-X5YYSAZX.js} +4 -4
- package/dist/{chunk-FZEEWOI2.js → chunk-XJJYSX6F.js} +2 -2
- package/dist/{chunk-F635GAL7.js → chunk-XKNHFDTT.js} +33 -13
- 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-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
- package/dist/{chunk-ANJXPFRS.js → chunk-YXFCALVT.js} +14 -14
- package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
- package/dist/{chunk-5HERQ5FX.js → chunk-Z3YEGSR4.js} +10 -10
- package/dist/{chunk-YWSQD2IB.js → chunk-ZJPM7GZ3.js} +2 -2
- package/dist/{chunk-5S4LQOPE.js → chunk-ZW4VXELZ.js} +2 -2
- package/dist/{cli-B322UMvB.d.ts → cli-BEkm2MEf.d.ts} +5 -5
- package/dist/cli.d.ts +17 -16
- package/dist/cli.js +126 -120
- 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 +2 -2
- package/dist/compounding/engine.d.ts +5 -3
- package/dist/compounding/engine.js +34 -34
- package/dist/compounding/preference-consolidator.d.ts +4 -4
- package/dist/compression-optimizer.d.ts +2 -2
- package/dist/config-security.js +2 -2
- package/dist/config.d.ts +2 -2
- package/dist/config.js +17 -16
- package/dist/connectors/codex-materialize-runner.d.ts +2 -2
- package/dist/connectors/codex-materialize-runner.js +33 -33
- package/dist/connectors/codex-materialize.d.ts +2 -2
- package/dist/connectors/index.d.ts +2 -2
- package/dist/connectors/index.js +33 -33
- package/dist/consolidation-provenance-check.d.ts +5 -3
- package/dist/consolidation-provenance-check.js +5 -5
- package/dist/consolidation-undo.d.ts +5 -3
- package/dist/consolidation-undo.js +3 -3
- package/dist/context-summary.d.ts +43 -0
- package/dist/context-summary.js +14 -0
- package/dist/context-summary.js.map +1 -0
- package/dist/contradiction/index.d.ts +6 -4
- package/dist/contradiction/index.js +10 -10
- package/dist/{contradiction-scan-AKUWPX5N.js → contradiction-scan-NOYMFG66.js} +3 -3
- package/dist/contradiction-scan-NOYMFG66.js.map +1 -0
- package/dist/converge-config.d.ts +2 -2
- package/dist/convergence-refresh.d.ts +5 -3
- package/dist/convergence-refresh.js +36 -36
- package/dist/conversation-index/backend.d.ts +2 -2
- package/dist/conversation-index/chunker.d.ts +2 -2
- package/dist/conversation-index/faiss-adapter.d.ts +2 -2
- package/dist/conversation-index/indexer.d.ts +2 -2
- package/dist/conversation-index/search.d.ts +2 -2
- package/dist/corpus-watermark.d.ts +2 -2
- package/dist/corpus-watermark.js +35 -35
- package/dist/cross-lingual-recall.d.ts +2 -2
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +2 -2
- package/dist/delinearize.d.ts +2 -2
- package/dist/dependency-propagation-config.d.ts +2 -2
- package/dist/{dependency-propagation-delivery-BGcNairQ.d.ts → dependency-propagation-delivery-BCpeo14F.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +2 -2
- package/dist/direct-answer.d.ts +2 -2
- package/dist/embedding-fallback.d.ts +2 -2
- package/dist/enrichment/index.d.ts +2 -2
- package/dist/entity-origin-fields.d.ts +2 -2
- package/dist/entity-retrieval.d.ts +5 -3
- package/dist/entity-retrieval.js +34 -34
- package/dist/entity-schema.d.ts +2 -2
- package/dist/episodic-context.d.ts +2 -2
- package/dist/eval-trajectory-contracts.d.ts +2 -2
- package/dist/eval-trajectory-store.d.ts +2 -2
- package/dist/eval-trajectory.d.ts +2 -2
- package/dist/event-order-recall.js +3 -3
- package/dist/explicit-capture.d.ts +13 -12
- package/dist/explicit-capture.js +12 -12
- package/dist/external-wiki-access.d.ts +15 -14
- package/dist/external-wiki-access.js +66 -63
- package/dist/external-wiki-collection-registration.d.ts +2 -2
- package/dist/external-wiki-collection.d.ts +2 -2
- package/dist/external-wiki-mcp-tools.d.ts +15 -14
- package/dist/extraction-error-classification.d.ts +2 -2
- package/dist/extraction-faithfulness.d.ts +2 -2
- package/dist/extraction-faithfulness.js +2 -2
- package/dist/extraction-judge-telemetry.d.ts +2 -2
- package/dist/extraction-judge-training.d.ts +2 -2
- package/dist/extraction-judge.d.ts +2 -2
- package/dist/extraction-judge.js +2 -2
- package/dist/extraction-liveness.d.ts +2 -2
- package/dist/extraction-normalization.d.ts +2 -2
- package/dist/extraction-prompt.d.ts +2 -2
- package/dist/extraction-source-grounding-rules.d.ts +2 -2
- package/dist/extraction-source-grounding.d.ts +2 -2
- package/dist/extraction.d.ts +2 -2
- package/dist/extraction.js +47 -44
- package/dist/fallback-llm.d.ts +8 -2
- package/dist/fallback-llm.js +1 -1
- package/dist/{first-start-migration-4NETATFF.js → first-start-migration-KHIMCBIC.js} +3 -3
- package/dist/{forget-SZ2BXDGF.js → forget-2AE4MDK3.js} +3 -3
- package/dist/graph-dashboard-diff.d.ts +2 -2
- package/dist/graph-dashboard-key.d.ts +2 -2
- package/dist/graph-dashboard-parser.d.ts +2 -2
- package/dist/graph-edge-reinforcement.d.ts +2 -2
- package/dist/graph-path-reconstruction.d.ts +2 -2
- package/dist/graph-path-scoring.d.ts +2 -2
- package/dist/graph-snapshot.d.ts +2 -2
- package/dist/graph.d.ts +2 -2
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/importance.d.ts +2 -2
- package/dist/importers/index.d.ts +2 -2
- package/dist/in-flight-reads.d.ts +2 -2
- package/dist/{index-By2QUAMh.d.ts → index-D_pyMUaP.d.ts} +2 -2
- package/dist/index.d.ts +261 -30
- package/dist/index.js +321 -257
- package/dist/intent.d.ts +2 -2
- package/dist/lcm/engine.d.ts +3 -3
- package/dist/lcm/engine.js +5 -4
- package/dist/lcm/index.d.ts +4 -3
- package/dist/lcm/index.js +12 -11
- package/dist/lcm/summarizer.d.ts +4 -6
- package/dist/lcm/summarizer.js +2 -1
- package/dist/lcm/tools.d.ts +4 -4
- package/dist/lifecycle.d.ts +2 -2
- package/dist/live-connectors-runner.d.ts +2 -2
- package/dist/local-llm.d.ts +2 -2
- package/dist/local-model-endpoint.d.ts +2 -2
- package/dist/location/index.d.ts +315 -6
- package/dist/location/index.js +151 -19
- package/dist/maintenance/memory-governance.d.ts +2 -2
- package/dist/maintenance/memory-governance.js +34 -34
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +5 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +33 -33
- package/dist/maintenance/rebuild-memory-projection.d.ts +5 -3
- package/dist/maintenance/rebuild-memory-projection.js +35 -35
- package/dist/{maintenance-Dm2McrIx.d.ts → maintenance-DDUX9d6D.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +15 -14
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +18 -3
- package/dist/memory-action-policy.js +3 -1
- package/dist/memory-cache.d.ts +2 -2
- package/dist/memory-controller.d.ts +2 -2
- package/dist/memory-controller.js +2 -2
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -2
- package/dist/memory-projection-mutations.js +3 -3
- package/dist/memory-projection-store.d.ts +2 -2
- package/dist/memory-projection-store.js +1 -1
- package/dist/memory-provenance.d.ts +2 -2
- package/dist/memory-snapshot.d.ts +2 -2
- package/dist/memory-subject-cli.d.ts +15 -14
- package/dist/memory-subject.d.ts +15 -14
- package/dist/memory-subject.js +5 -5
- package/dist/memory-worth-outcomes.d.ts +5 -3
- package/dist/models-json.d.ts +2 -2
- package/dist/namespaces/migrate.d.ts +6 -4
- package/dist/namespaces/migrate.js +34 -34
- package/dist/namespaces/principal.d.ts +2 -2
- package/dist/namespaces/search.d.ts +2 -2
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.d.ts +6 -4
- package/dist/namespaces/storage.js +33 -33
- package/dist/native-knowledge.d.ts +2 -2
- package/dist/offline-sync-file-io.js +3 -3
- package/dist/offline-sync-impression-drain.d.ts +2 -2
- package/dist/offline-sync-impression-drain.js +9 -9
- package/dist/offline-sync.js +4 -4
- package/dist/operator-doctor-corpus.d.ts +2 -2
- package/dist/operator-doctor-corpus.js +36 -36
- package/dist/operator-doctor-replica.d.ts +2 -2
- package/dist/operator-toolkit.d.ts +6 -4
- package/dist/operator-toolkit.js +56 -55
- package/dist/orchestration/compression-guideline-coordinator.d.ts +5 -3
- package/dist/orchestration/maintenance.d.ts +7 -5
- package/dist/orchestration/maintenance.js +48 -47
- package/dist/{orchestrator-Co1DyfuP.d.ts → orchestrator-3F4jihCo.d.ts} +8 -8
- package/dist/orchestrator.d.ts +13 -12
- package/dist/orchestrator.js +182 -174
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +2 -2
- package/dist/{pipeline-DotMnb6y.d.ts → pipeline-CB1dj6Uh.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +2 -2
- package/dist/proactive-contention.d.ts +2 -2
- package/dist/provenance.d.ts +2 -2
- package/dist/{public-http-PJRtnSi-.d.ts → public-http-34-JIAGQ.d.ts} +1 -1
- package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
- package/dist/{qmd-BP0n11fR.d.ts → qmd-edLLZXc5.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +3 -3
- package/dist/qmd-recall-cache.d.ts +2 -2
- package/dist/qmd.d.ts +3 -3
- package/dist/qmd.js +4 -4
- package/dist/recall-concurrency-config.d.ts +2 -2
- package/dist/recall-disclosure-escalation.d.ts +2 -2
- package/dist/recall-explain-renderer.d.ts +2 -2
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +2 -2
- package/dist/recall-planner-llm.d.ts +2 -2
- package/dist/recall-planner-llm.js +1 -1
- package/dist/recall-state.d.ts +2 -2
- package/dist/recall-tag-filter.d.ts +2 -2
- package/dist/recall-timings.d.ts +2 -2
- package/dist/recall-xray-cli.d.ts +2 -2
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -2
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +2 -2
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +2 -2
- package/dist/reconcile/manifest.d.ts +2 -2
- package/dist/reconcile/manifest.js +5 -5
- package/dist/reconcile/plan.d.ts +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +2 -2
- package/dist/replay/normalizers/claude.d.ts +2 -2
- package/dist/replay/normalizers/openclaw.d.ts +2 -2
- package/dist/replay/normalizers/shared.d.ts +2 -2
- package/dist/replay/runner.d.ts +2 -2
- package/dist/replay/types.d.ts +2 -2
- package/dist/replica-divergence.d.ts +2 -2
- package/dist/replica-peers-config.d.ts +2 -2
- package/dist/{resolution-4552BNRV.js → resolution-4DLI3IOR.js} +11 -11
- package/dist/resolution-4DLI3IOR.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +2 -2
- package/dist/resume-bundles.js +18 -17
- package/dist/retrieval-agents.d.ts +3 -3
- package/dist/retrieval-tiers.d.ts +2 -2
- package/dist/routing/engine.d.ts +2 -2
- package/dist/routing/store.d.ts +2 -2
- package/dist/salvage-envelope.d.ts +2 -2
- package/dist/salvage-envelope.js +7 -7
- package/dist/schemas.d.ts +572 -107
- package/dist/schemas.js +3 -1
- package/dist/{scope-profiles-6ChZKTy-.d.ts → scope-profiles-BF2lu81V.d.ts} +1 -1
- package/dist/search/document-scanner.js +1 -1
- package/dist/search/embed-helper.d.ts +2 -2
- package/dist/search/factory.d.ts +2 -2
- package/dist/search/factory.js +7 -7
- package/dist/search/index.d.ts +2 -2
- package/dist/search/index.js +13 -13
- package/dist/search/lancedb-backend.d.ts +2 -2
- package/dist/search/lancedb-backend.js +1 -1
- package/dist/search/meilisearch-backend.d.ts +2 -2
- package/dist/search/meilisearch-backend.js +1 -1
- package/dist/search/noop-backend.d.ts +2 -2
- package/dist/search/orama-backend.d.ts +2 -2
- package/dist/search/orama-backend.js +1 -1
- package/dist/search/port.d.ts +2 -2
- package/dist/search/remote-backend.d.ts +2 -2
- package/dist/secure-store/index.js +3 -3
- package/dist/{semantic-consolidation-DziYcW5J.d.ts → semantic-consolidation-5OuWXBRt.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -3
- package/dist/semantic-consolidation.js +37 -37
- package/dist/semantic-rule-promotion.js +33 -33
- package/dist/semantic-rule-verifier.d.ts +2 -2
- package/dist/semantic-rule-verifier.js +33 -33
- package/dist/{service-C7rIBuK_.d.ts → service-CrqEhLXD.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +2 -2
- package/dist/session-observer-state.d.ts +2 -2
- package/dist/shared-context/manager.d.ts +2 -2
- package/dist/signal.d.ts +2 -2
- package/dist/source-agent-qualifier.d.ts +2 -2
- package/dist/source-agent-qualifier.js +42 -39
- 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-B1hEx8Xg.d.ts → storage-BQn-xnxm.d.ts} +4 -1
- package/dist/storage.d.ts +5 -3
- package/dist/storage.js +32 -32
- package/dist/subject-config.d.ts +2 -2
- package/dist/subject-config.js +6 -6
- package/dist/summarizer.d.ts +2 -2
- package/dist/summarizer.js +2 -2
- package/dist/summary-snapshot.d.ts +2 -2
- package/dist/support-passport/index.d.ts +20 -19
- package/dist/support-passport/index.js +68 -65
- package/dist/temporal-supersession.d.ts +3 -3
- package/dist/temporal-timeline-recall.d.ts +2 -2
- package/dist/temporal-validity.d.ts +2 -2
- package/dist/threading.d.ts +2 -2
- package/dist/tier-migration.d.ts +5 -3
- package/dist/tier-routing.d.ts +2 -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 +2 -2
- package/dist/transcript.d.ts +2 -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 +12 -12
- package/dist/trust-score-stage.d.ts +2 -2
- package/dist/trust-score.d.ts +2 -2
- package/dist/{types-BHDNxGTT.d.ts → types-BRpcNjHZ.d.ts} +119 -3
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -2
- package/dist/verified-recall.js +33 -33
- package/dist/who-knows-cli.d.ts +15 -14
- package/dist/who-knows-cli.js +34 -34
- package/dist/who-knows.d.ts +15 -14
- package/dist/who-knows.js +33 -33
- package/dist/write-envelope.d.ts +2 -2
- package/dist/write-envelope.js +6 -6
- package/package.json +54 -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/active-context-config.ts +98 -0
- package/src/active-context-transform.test.ts +533 -0
- package/src/active-context-transform.ts +981 -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/config.ts +3 -5
- package/src/context-summary.ts +182 -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/index.ts +4 -11
- package/src/lcm/summarizer.ts +14 -93
- 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-action-policy.ts +28 -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/storage/context-transform-ledger.ts +39 -0
- package/src/storage/secure-line-reader.ts +50 -1
- package/src/storage.ts +4 -1
- 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 +2 -3
- 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-AFR6AIM4.js.map +0 -1
- package/dist/chunk-AX7UXCHJ.js.map +0 -1
- package/dist/chunk-BJTHRFFC.js.map +0 -1
- package/dist/chunk-D4QVPP3G.js.map +0 -1
- package/dist/chunk-DVYRD4HY.js.map +0 -1
- package/dist/chunk-F635GAL7.js.map +0 -1
- package/dist/chunk-FMQ4MOQO.js.map +0 -1
- package/dist/chunk-FP7YTTVO.js.map +0 -1
- package/dist/chunk-I4343FIA.js.map +0 -1
- package/dist/chunk-I7EX6KSH.js.map +0 -1
- package/dist/chunk-LBFFNDFM.js.map +0 -1
- package/dist/chunk-LLQCM2U2.js.map +0 -1
- package/dist/chunk-RQE4TITU.js.map +0 -1
- package/dist/chunk-UW5NPZJ2.js.map +0 -1
- package/dist/chunk-XAB6STPO.js.map +0 -1
- package/dist/chunk-ZPUIRTIZ.js.map +0 -1
- package/dist/types-CM86alG1.d.ts +0 -89
- /package/dist/{contradiction-scan-AKUWPX5N.js.map → active-context-config.js.map} +0 -0
- /package/dist/{resolution-4552BNRV.js.map → active-context-transform.js.map} +0 -0
- /package/dist/{auto-sync-XVMLL2RH.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-CFGU52XJ.js.map → chunk-23CVL7HS.js.map} +0 -0
- /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
- /package/dist/{chunk-6CPUQ5D6.js.map → chunk-2LBAFHOQ.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-IP4ZNT4U.js.map → chunk-33MFRY25.js.map} +0 -0
- /package/dist/{chunk-VFYRYFLL.js.map → chunk-3TSU662L.js.map} +0 -0
- /package/dist/{chunk-VXVZ2GM3.js.map → chunk-4FHRZD5T.js.map} +0 -0
- /package/dist/{chunk-5VPQSRQO.js.map → chunk-4STAANV7.js.map} +0 -0
- /package/dist/{chunk-46WM6JX2.js.map → chunk-4ZWCQJNM.js.map} +0 -0
- /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
- /package/dist/{chunk-YKWFK7XA.js.map → chunk-6CEGSTBD.js.map} +0 -0
- /package/dist/{chunk-GEPACVWN.js.map → chunk-6RUHELWR.js.map} +0 -0
- /package/dist/{chunk-ZAOHJDKH.js.map → chunk-72OIT7KS.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
- /package/dist/{chunk-7TCGNUVP.js.map → chunk-7UTDHQZ5.js.map} +0 -0
- /package/dist/{chunk-5HK3CJAR.js.map → chunk-7XOG75AU.js.map} +0 -0
- /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
- /package/dist/{chunk-YOXVZJFM.js.map → chunk-CFVTRUR3.js.map} +0 -0
- /package/dist/{chunk-ACOC27BB.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-T42L3S6A.js.map → chunk-DDX6KIXF.js.map} +0 -0
- /package/dist/{chunk-JIYDRBVZ.js.map → chunk-DJORULH3.js.map} +0 -0
- /package/dist/{chunk-WTOZBZNN.js.map → chunk-DMEHOEC7.js.map} +0 -0
- /package/dist/{chunk-OPPBTPUU.js.map → chunk-DUAJKRR2.js.map} +0 -0
- /package/dist/{chunk-SVVIASVX.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-Z4U3UN56.js.map → chunk-EZSCW4EM.js.map} +0 -0
- /package/dist/{chunk-F6QHHRWP.js.map → chunk-FESUGFIL.js.map} +0 -0
- /package/dist/{chunk-S3K2CIK5.js.map → chunk-FKKGCGYL.js.map} +0 -0
- /package/dist/{chunk-BWGCOLEL.js.map → chunk-FTTJRVB7.js.map} +0 -0
- /package/dist/{chunk-JAQXUGLN.js.map → chunk-FYWLSFFS.js.map} +0 -0
- /package/dist/{chunk-OPGL46PX.js.map → chunk-GX6FTSYH.js.map} +0 -0
- /package/dist/{chunk-A32YEQAM.js.map → chunk-H7VDIF2V.js.map} +0 -0
- /package/dist/{chunk-PDDSFELN.js.map → chunk-HJXA6ZM7.js.map} +0 -0
- /package/dist/{chunk-RGCF4XNH.js.map → chunk-HNPE66LB.js.map} +0 -0
- /package/dist/{chunk-SEA6M7SS.js.map → chunk-I5VB44ZK.js.map} +0 -0
- /package/dist/{chunk-SDEPLF7V.js.map → chunk-IBJ6U753.js.map} +0 -0
- /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
- /package/dist/{chunk-3RI5Y7KU.js.map → chunk-IVIAHQBR.js.map} +0 -0
- /package/dist/{chunk-7WR462EM.js.map → chunk-J3OND5QT.js.map} +0 -0
- /package/dist/{chunk-T3JQTCCO.js.map → chunk-JI7U6AS3.js.map} +0 -0
- /package/dist/{chunk-I32NKXE2.js.map → chunk-JTWZKNUH.js.map} +0 -0
- /package/dist/{chunk-VKCAHCBI.js.map → chunk-L4X4PJYK.js.map} +0 -0
- /package/dist/{chunk-W4BMEGQA.js.map → chunk-LUDBXTBJ.js.map} +0 -0
- /package/dist/{chunk-RIAM7DND.js.map → chunk-ME35HVDJ.js.map} +0 -0
- /package/dist/{chunk-NG3MBQV4.js.map → chunk-MJRGVXPQ.js.map} +0 -0
- /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.js.map} +0 -0
- /package/dist/{chunk-7F27PCSN.js.map → chunk-MN5NOOI7.js.map} +0 -0
- /package/dist/{chunk-JCWY73FK.js.map → chunk-N4F7ZSSG.js.map} +0 -0
- /package/dist/{chunk-TR7DGXGI.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-MFOSZUIT.js.map → chunk-NPIBN2VL.js.map} +0 -0
- /package/dist/{chunk-IY7UXD3J.js.map → chunk-O57GM3FR.js.map} +0 -0
- /package/dist/{chunk-I2HTKOOP.js.map → chunk-O7ERGZDA.js.map} +0 -0
- /package/dist/{chunk-GTSVEEP3.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-EOHKUWXW.js.map → chunk-QCRJMU5V.js.map} +0 -0
- /package/dist/{chunk-5DH6PG4B.js.map → chunk-RZ3IZIJG.js.map} +0 -0
- /package/dist/{chunk-AAXJNINV.js.map → chunk-SN4JXNLL.js.map} +0 -0
- /package/dist/{chunk-SVSRPG6M.js.map → chunk-TNGH4ZYI.js.map} +0 -0
- /package/dist/{chunk-HZNYJN77.js.map → chunk-TNXNECAN.js.map} +0 -0
- /package/dist/{chunk-JOEJG4SD.js.map → chunk-TVW4C7PV.js.map} +0 -0
- /package/dist/{chunk-UFKPQBXH.js.map → chunk-U62OK7BB.js.map} +0 -0
- /package/dist/{chunk-R2MZCYA6.js.map → chunk-UNUMFURP.js.map} +0 -0
- /package/dist/{chunk-YRVAKONL.js.map → chunk-VQ4AMTGZ.js.map} +0 -0
- /package/dist/{chunk-RAIUTAZZ.js.map → chunk-WKAXBXVA.js.map} +0 -0
- /package/dist/{chunk-ZIJDI4CP.js.map → chunk-WKJFIMVN.js.map} +0 -0
- /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
- /package/dist/{chunk-7BEPVIH3.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-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
- /package/dist/{chunk-ANJXPFRS.js.map → chunk-YXFCALVT.js.map} +0 -0
- /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
- /package/dist/{chunk-5HERQ5FX.js.map → chunk-Z3YEGSR4.js.map} +0 -0
- /package/dist/{chunk-YWSQD2IB.js.map → chunk-ZJPM7GZ3.js.map} +0 -0
- /package/dist/{chunk-5S4LQOPE.js.map → chunk-ZW4VXELZ.js.map} +0 -0
- /package/dist/{first-start-migration-4NETATFF.js.map → first-start-migration-KHIMCBIC.js.map} +0 -0
- /package/dist/{forget-SZ2BXDGF.js.map → forget-2AE4MDK3.js.map} +0 -0
- /package/dist/{purge-GB7PZHT2.js.map → purge-OP6BEDFY.js.map} +0 -0
- /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OKF_RESERVED_BASENAMES
|
|
3
|
+
} from "./chunk-GEJKYA7D.js";
|
|
4
|
+
import {
|
|
5
|
+
MAGIC_BYTES
|
|
6
|
+
} from "./chunk-ET2CNMLD.js";
|
|
7
|
+
|
|
8
|
+
// src/okf/lint.ts
|
|
9
|
+
import fs from "fs";
|
|
10
|
+
import path from "path";
|
|
11
|
+
function isEncryptedBlob(raw) {
|
|
12
|
+
return raw.startsWith(MAGIC_BYTES.toString("ascii"));
|
|
13
|
+
}
|
|
14
|
+
function hasFrontmatter(raw) {
|
|
15
|
+
return raw.startsWith("---\n") || raw.startsWith("---\r\n");
|
|
16
|
+
}
|
|
17
|
+
function readType(raw) {
|
|
18
|
+
const close = raw.indexOf("\n---", 4);
|
|
19
|
+
if (close === -1) return void 0;
|
|
20
|
+
const block = raw.slice(4, close);
|
|
21
|
+
const match = /^type:[ \t]*(.*)$/m.exec(block);
|
|
22
|
+
if (!match) return void 0;
|
|
23
|
+
const value = match[1].trim().replace(/^["']|["']$/g, "");
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
function walkMarkdown(root, out) {
|
|
27
|
+
let entries;
|
|
28
|
+
try {
|
|
29
|
+
entries = fs.readdirSync(root, { withFileTypes: true });
|
|
30
|
+
} catch {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
34
|
+
if (entry.name === "state" || entry.name === ".git") continue;
|
|
35
|
+
const full = path.join(root, entry.name);
|
|
36
|
+
let stat;
|
|
37
|
+
try {
|
|
38
|
+
stat = fs.lstatSync(full);
|
|
39
|
+
} catch {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (stat.isSymbolicLink()) continue;
|
|
43
|
+
if (stat.isDirectory()) {
|
|
44
|
+
walkMarkdown(full, out);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (stat.isFile() && entry.name.endsWith(".md")) out.push(full);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function lintOkfDir(memoryDir) {
|
|
51
|
+
const files = [];
|
|
52
|
+
walkMarkdown(memoryDir, files);
|
|
53
|
+
const findings = [];
|
|
54
|
+
for (const file of files) {
|
|
55
|
+
const rel = path.relative(memoryDir, file);
|
|
56
|
+
const base = path.basename(file);
|
|
57
|
+
if (OKF_RESERVED_BASENAMES[base] === true) {
|
|
58
|
+
findings.push({
|
|
59
|
+
file: rel,
|
|
60
|
+
code: "reserved_basename",
|
|
61
|
+
message: `${base} is reserved by OKF \xA76/\xA77`
|
|
62
|
+
});
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
let raw;
|
|
66
|
+
try {
|
|
67
|
+
raw = fs.readFileSync(file, "utf8");
|
|
68
|
+
} catch {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (isEncryptedBlob(raw)) {
|
|
72
|
+
findings.push({
|
|
73
|
+
file: rel,
|
|
74
|
+
code: "skipped_encrypted",
|
|
75
|
+
message: "skipped (encrypted)"
|
|
76
|
+
});
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (!hasFrontmatter(raw)) {
|
|
80
|
+
findings.push({
|
|
81
|
+
file: rel,
|
|
82
|
+
code: "missing_frontmatter",
|
|
83
|
+
message: "missing YAML frontmatter"
|
|
84
|
+
});
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const type = readType(raw);
|
|
88
|
+
if (type === void 0) {
|
|
89
|
+
findings.push({ file: rel, code: "missing_type", message: "missing type" });
|
|
90
|
+
} else if (type.length === 0) {
|
|
91
|
+
findings.push({ file: rel, code: "empty_type", message: "empty type" });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const actionable = findings.filter((f) => f.code !== "skipped_encrypted");
|
|
95
|
+
return { ok: actionable.length === 0, scanned: files.length, findings };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// src/okf/render.ts
|
|
99
|
+
import { lstatSync, mkdirSync, readdirSync, renameSync, rmSync, writeFileSync } from "fs";
|
|
100
|
+
import path2 from "path";
|
|
101
|
+
var OKF_EXPORT_VERSION = "0.1";
|
|
102
|
+
function renderFrontmatter(fields) {
|
|
103
|
+
const keys = Object.keys(fields).sort((a, b) => {
|
|
104
|
+
const order = ["type", "title", "description", "tags", "timestamp"];
|
|
105
|
+
const ai = order.indexOf(a);
|
|
106
|
+
const bi = order.indexOf(b);
|
|
107
|
+
if (ai >= 0 || bi >= 0) return (ai < 0 ? 99 : ai) - (bi < 0 ? 99 : bi);
|
|
108
|
+
return a.localeCompare(b);
|
|
109
|
+
});
|
|
110
|
+
const lines = keys.flatMap((key) => yamlLine(key, fields[key]));
|
|
111
|
+
return `---
|
|
112
|
+
${lines.join("\n")}
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
function yamlLine(key, value) {
|
|
118
|
+
if (value === void 0) return [];
|
|
119
|
+
if (Array.isArray(value)) {
|
|
120
|
+
if (value.length === 0) return [`${key}: []`];
|
|
121
|
+
if (value.every((item) => typeof item !== "object" || item === null)) {
|
|
122
|
+
return [`${key}:`, ...value.map((item) => ` - ${yamlScalar(item)}`)];
|
|
123
|
+
}
|
|
124
|
+
return [`${key}: ${JSON.stringify(value)}`];
|
|
125
|
+
}
|
|
126
|
+
if (typeof value === "object" && value !== null) return [`${key}: ${JSON.stringify(value)}`];
|
|
127
|
+
return [`${key}: ${yamlScalar(value)}`];
|
|
128
|
+
}
|
|
129
|
+
function yamlScalar(value) {
|
|
130
|
+
if (typeof value === "string") {
|
|
131
|
+
if (value === "" || /[:#\n]/.test(value) || value !== value.trim()) return JSON.stringify(value);
|
|
132
|
+
return value;
|
|
133
|
+
}
|
|
134
|
+
return String(value);
|
|
135
|
+
}
|
|
136
|
+
function writeBundleFile(root, rel, content) {
|
|
137
|
+
const dest = path2.join(root, ...rel.split("/"));
|
|
138
|
+
mkdirSync(path2.dirname(dest), { recursive: true });
|
|
139
|
+
writeFileSync(dest, content, "utf8");
|
|
140
|
+
}
|
|
141
|
+
function publishBundle(staging, outDir, force) {
|
|
142
|
+
let exists = false;
|
|
143
|
+
try {
|
|
144
|
+
const stat = lstatSync(outDir);
|
|
145
|
+
if (stat.isSymbolicLink()) throw new Error(`--out must not be a symlink: ${outDir}`);
|
|
146
|
+
exists = true;
|
|
147
|
+
const entries = readdirSync(outDir).filter((name) => name !== "." && name !== "..");
|
|
148
|
+
if (entries.length > 0 && !force) {
|
|
149
|
+
rmSync(staging, { recursive: true, force: true });
|
|
150
|
+
throw new Error(`--out ${outDir} is not empty; pass --force to replace it`);
|
|
151
|
+
}
|
|
152
|
+
} catch (err) {
|
|
153
|
+
if (err.code !== "ENOENT") throw err;
|
|
154
|
+
}
|
|
155
|
+
mkdirSync(path2.dirname(outDir), { recursive: true });
|
|
156
|
+
if (exists && force) {
|
|
157
|
+
const backup = `${outDir}.okf-prev`;
|
|
158
|
+
try {
|
|
159
|
+
renameSync(outDir, backup);
|
|
160
|
+
} catch {
|
|
161
|
+
rmSync(staging, { recursive: true, force: true });
|
|
162
|
+
throw new Error(`cannot replace --out ${outDir}`);
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
renameSync(staging, outDir);
|
|
166
|
+
rmSync(backup, { recursive: true, force: true });
|
|
167
|
+
} catch (err) {
|
|
168
|
+
try {
|
|
169
|
+
renameSync(backup, outDir);
|
|
170
|
+
} catch {
|
|
171
|
+
}
|
|
172
|
+
throw err;
|
|
173
|
+
}
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
renameSync(staging, outDir);
|
|
177
|
+
}
|
|
178
|
+
function rejectSymlinkPath(target) {
|
|
179
|
+
let current = path2.resolve(target);
|
|
180
|
+
while (true) {
|
|
181
|
+
try {
|
|
182
|
+
if (lstatSync(current).isSymbolicLink()) {
|
|
183
|
+
throw new Error(`--out path component is a symlink: ${current}`);
|
|
184
|
+
}
|
|
185
|
+
} catch (err) {
|
|
186
|
+
if (err.code !== "ENOENT") throw err;
|
|
187
|
+
}
|
|
188
|
+
const parent = path2.dirname(current);
|
|
189
|
+
if (parent === current) break;
|
|
190
|
+
current = parent;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export {
|
|
195
|
+
lintOkfDir,
|
|
196
|
+
OKF_EXPORT_VERSION,
|
|
197
|
+
renderFrontmatter,
|
|
198
|
+
writeBundleFile,
|
|
199
|
+
publishBundle,
|
|
200
|
+
rejectSymlinkPath
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=chunk-K66OY4EI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/okf/lint.ts","../src/okf/render.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { MAGIC_BYTES } from \"../secure-store/secure-fs.js\";\nimport { OKF_RESERVED_BASENAMES } from \"./type-mapping.js\";\n\nexport interface OkfLintFinding {\n file: string;\n code: \"missing_frontmatter\" | \"missing_type\" | \"empty_type\" | \"reserved_basename\" | \"skipped_encrypted\";\n message: string;\n}\n\nexport interface OkfLintResult {\n ok: boolean;\n scanned: number;\n findings: OkfLintFinding[];\n}\n\nfunction isEncryptedBlob(raw: string): boolean {\n // secure-store writes a binary envelope starting with MAGIC_BYTES at offset\n // 0 — match that fixed position, never a substring anywhere in the file.\n return raw.startsWith(MAGIC_BYTES.toString(\"ascii\"));\n}\n\nfunction hasFrontmatter(raw: string): boolean {\n return raw.startsWith(\"---\\n\") || raw.startsWith(\"---\\r\\n\");\n}\n\nfunction readType(raw: string): string | undefined {\n const close = raw.indexOf(\"\\n---\", 4);\n if (close === -1) return undefined;\n const block = raw.slice(4, close);\n const match = /^type:[ \\t]*(.*)$/m.exec(block);\n if (!match) return undefined;\n const value = match[1]!.trim().replace(/^[\"']|[\"']$/g, \"\");\n return value;\n}\n\nfunction walkMarkdown(root: string, out: string[]): void {\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(root, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n if (entry.name === \"state\" || entry.name === \".git\") continue;\n const full = path.join(root, entry.name);\n let stat: fs.Stats;\n try {\n stat = fs.lstatSync(full);\n } catch {\n continue;\n }\n if (stat.isSymbolicLink()) continue;\n if (stat.isDirectory()) {\n walkMarkdown(full, out);\n continue;\n }\n if (stat.isFile() && entry.name.endsWith(\".md\")) out.push(full);\n }\n}\n\nexport function lintOkfDir(memoryDir: string): OkfLintResult {\n const files: string[] = [];\n walkMarkdown(memoryDir, files);\n const findings: OkfLintFinding[] = [];\n for (const file of files) {\n const rel = path.relative(memoryDir, file);\n const base = path.basename(file);\n if (OKF_RESERVED_BASENAMES[base] === true) {\n findings.push({\n file: rel,\n code: \"reserved_basename\",\n message: `${base} is reserved by OKF §6/§7`,\n });\n continue;\n }\n let raw: string;\n try {\n raw = fs.readFileSync(file, \"utf8\");\n } catch {\n continue;\n }\n if (isEncryptedBlob(raw)) {\n findings.push({\n file: rel,\n code: \"skipped_encrypted\",\n message: \"skipped (encrypted)\",\n });\n continue;\n }\n if (!hasFrontmatter(raw)) {\n findings.push({\n file: rel,\n code: \"missing_frontmatter\",\n message: \"missing YAML frontmatter\",\n });\n continue;\n }\n const type = readType(raw);\n if (type === undefined) {\n findings.push({ file: rel, code: \"missing_type\", message: \"missing type\" });\n } else if (type.length === 0) {\n findings.push({ file: rel, code: \"empty_type\", message: \"empty type\" });\n }\n }\n const actionable = findings.filter((f) => f.code !== \"skipped_encrypted\");\n return { ok: actionable.length === 0, scanned: files.length, findings };\n}\n","/**\n * Shared OKF bundle-rendering helpers (issues #1948 + #1950).\n *\n * One source of truth for the mechanics every OKF bundle exporter uses:\n * deterministic frontmatter rendering, staging-directory file writes, the\n * symlink-guarded atomic publish, and the bundle version stamp. The memory\n * exporter (transfer/export-okf.ts) and the codegraph exporter\n * (coding/export-okf-codegraph.ts) both consume this module so their\n * bundles are byte-compatible in convention (rule 38 — deterministic\n * rendering discipline; rule 9 — stable seam over shared mechanics).\n */\nimport { lstatSync, mkdirSync, readdirSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\n\n/** OKF spec version emitted in every bundle root index. */\nexport const OKF_EXPORT_VERSION = \"0.1\";\n\n/**\n * Render a YAML frontmatter block from a flat field map.\n *\n * Key order: the canonical OKF keys first (`type`, `title`, `description`,\n * `tags`, `timestamp`), everything else alphabetical — one deterministic\n * layout so identical inputs always render byte-identical files. A key set\n * to `undefined` is omitted; callers must not pass a key twice.\n */\nexport function renderFrontmatter(fields: Record<string, unknown>): string {\n const keys = Object.keys(fields).sort((a, b) => {\n const order = [\"type\", \"title\", \"description\", \"tags\", \"timestamp\"];\n const ai = order.indexOf(a);\n const bi = order.indexOf(b);\n if (ai >= 0 || bi >= 0) return (ai < 0 ? 99 : ai) - (bi < 0 ? 99 : bi);\n return a.localeCompare(b);\n });\n const lines = keys.flatMap((key) => yamlLine(key, fields[key]));\n return `---\\n${lines.join(\"\\n\")}\\n---\\n\\n`;\n}\n\nfunction yamlLine(key: string, value: unknown): string[] {\n if (value === undefined) return [];\n if (Array.isArray(value)) {\n if (value.length === 0) return [`${key}: []`];\n if (value.every((item) => typeof item !== \"object\" || item === null)) {\n return [`${key}:`, ...value.map((item) => ` - ${yamlScalar(item)}`)];\n }\n return [`${key}: ${JSON.stringify(value)}`];\n }\n if (typeof value === \"object\" && value !== null) return [`${key}: ${JSON.stringify(value)}`];\n return [`${key}: ${yamlScalar(value)}`];\n}\n\nfunction yamlScalar(value: unknown): string {\n if (typeof value === \"string\") {\n if (value === \"\" || /[:#\\n]/.test(value) || value !== value.trim()) return JSON.stringify(value);\n return value;\n }\n return String(value);\n}\n\n/**\n * Write one file into a bundle staging tree. `rel` is a POSIX-style\n * bundle-relative path; parent directories are created as needed.\n */\nexport function writeBundleFile(root: string, rel: string, content: string): void {\n const dest = path.join(root, ...rel.split(\"/\"));\n mkdirSync(path.dirname(dest), { recursive: true });\n writeFileSync(dest, content, \"utf8\");\n}\n\n/**\n * Publish a staged bundle: refuse a non-empty target without `--force`,\n * swap via rename so the target is never observed half-written, and keep a\n * restorable backup when replacing an existing tree.\n */\nexport function publishBundle(staging: string, outDir: string, force: boolean): void {\n let exists = false;\n try {\n const stat = lstatSync(outDir);\n if (stat.isSymbolicLink()) throw new Error(`--out must not be a symlink: ${outDir}`);\n exists = true;\n const entries = readdirSync(outDir).filter((name) => name !== \".\" && name !== \"..\");\n if (entries.length > 0 && !force) {\n rmSync(staging, { recursive: true, force: true });\n throw new Error(`--out ${outDir} is not empty; pass --force to replace it`);\n }\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n mkdirSync(path.dirname(outDir), { recursive: true });\n if (exists && force) {\n const backup = `${outDir}.okf-prev`;\n try {\n renameSync(outDir, backup);\n } catch {\n rmSync(staging, { recursive: true, force: true });\n throw new Error(`cannot replace --out ${outDir}`);\n }\n try {\n renameSync(staging, outDir);\n rmSync(backup, { recursive: true, force: true });\n } catch (err) {\n try {\n renameSync(backup, outDir);\n } catch {\n // Keep backup if restore fails.\n }\n throw err;\n }\n return;\n }\n renameSync(staging, outDir);\n}\n\n/**\n * Reject a --out path with a symlink anywhere in its component chain\n * (pattern 42 + hermes-shim precedent): a symlinked component could aim\n * the atomic rename outside the operator's chosen directory.\n */\nexport function rejectSymlinkPath(target: string): void {\n let current = path.resolve(target);\n while (true) {\n try {\n if (lstatSync(current).isSymbolicLink()) {\n throw new Error(`--out path component is a symlink: ${current}`);\n }\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n}\n\n"],"mappings":"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","names":["path"]}
|
|
@@ -23,7 +23,8 @@ function defaultActivityConfig() {
|
|
|
23
23
|
reviewTrust: 0.5,
|
|
24
24
|
minConfidence: 0.7,
|
|
25
25
|
minImportance: "normal",
|
|
26
|
-
maxMemoriesPerDay: 0
|
|
26
|
+
maxMemoriesPerDay: 0,
|
|
27
|
+
timeline: { enabled: false }
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
function asRecord(value, name) {
|
|
@@ -148,13 +149,26 @@ function parseActivityConfig(raw) {
|
|
|
148
149
|
reviewTrust,
|
|
149
150
|
minConfidence: parseUnitInterval(config.minConfidence, "minConfidence", defaults.minConfidence),
|
|
150
151
|
minImportance,
|
|
151
|
-
maxMemoriesPerDay
|
|
152
|
+
maxMemoriesPerDay,
|
|
153
|
+
timeline: parseTimelineConfig(config.timeline)
|
|
152
154
|
};
|
|
153
155
|
}
|
|
156
|
+
function parseTimelineConfig(raw) {
|
|
157
|
+
if (raw === void 0) return { enabled: false };
|
|
158
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
159
|
+
throw new TypeError("activity.timeline must be an object");
|
|
160
|
+
}
|
|
161
|
+
const timeline = raw;
|
|
162
|
+
const enabledValue = coerceBooleanLike(timeline.enabled, "activity.timeline.enabled");
|
|
163
|
+
if (timeline.enabled !== void 0 && enabledValue === void 0) {
|
|
164
|
+
throw new TypeError("activity.timeline.enabled must be a boolean");
|
|
165
|
+
}
|
|
166
|
+
return { enabled: enabledValue ?? false };
|
|
167
|
+
}
|
|
154
168
|
|
|
155
169
|
export {
|
|
156
170
|
defaultActivityConfig,
|
|
157
171
|
validateActivityBaseUrl,
|
|
158
172
|
parseActivityConfig
|
|
159
173
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-KODXCHXJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/activity/config.ts"],"sourcesContent":["import { coerceBooleanLike, coerceNumber } from \"../connectors/coerce.js\";\nimport { assertValidTimezone } from \"./digest.js\";\nimport type { ImportanceLevel } from \"../types.js\";\nimport type { ActivityConfig, ActivityExtractionMode, ActivitySourceConfig, ActivityTimelineConfig } from \"./types.js\";\n\nconst EXTRACTION_MODES: readonly ActivityExtractionMode[] = [\"off\", \"smart\"];\nconst IMPORTANCE_LEVELS: readonly ImportanceLevel[] = [\"critical\", \"high\", \"normal\", \"low\", \"trivial\"];\nconst LOOPBACK_HOSTS: Record<string, true> = { localhost: true, \"127.0.0.1\": true, \"::1\": true };\n\n/** The inert default: disabled, search-only, no sources, no extraction. */\nexport function defaultActivityConfig(): ActivityConfig {\n return {\n enabled: false,\n timezone: \"UTC\",\n syncDays: 1,\n autoSyncIntervalMinutes: 15,\n sources: [],\n extractionMode: \"off\",\n sourceTrust: 0.6,\n autoApproveTrust: 0.8,\n reviewTrust: 0.5,\n minConfidence: 0.7,\n minImportance: \"normal\",\n maxMemoriesPerDay: 0,\n timeline: { enabled: false },\n };\n}\n\nfunction asRecord(value: unknown, name: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} must be an object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalString(value: unknown, name: string): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || value.length === 0) throw new TypeError(`${name} must be a non-empty string`);\n return value;\n}\n\nfunction parseUnitInterval(value: unknown, key: string, fallback: number): number {\n if (value === undefined) return fallback;\n const parsed = coerceNumber(value);\n if (parsed === undefined || !Number.isFinite(parsed) || parsed < 0 || parsed > 1) {\n throw new RangeError(`activity.${key} must be a number in [0, 1]`);\n }\n return parsed;\n}\n\n/**\n * Parse, protocol-check, and confine an activity source base URL to a local\n * loopback host. Shared with ActivityHttpSourceClient so config-load and client\n * construction reject the exact same shapes with the same prefixed message. The\n * bearer token travels in an Authorization header, so a non-loopback baseUrl\n * would exfiltrate it; the subsystem contract is local capture daemons only.\n */\nexport function validateActivityBaseUrl(baseUrl: string): URL {\n let parsed: URL;\n try {\n parsed = new URL(baseUrl);\n } catch {\n throw new RangeError(`activity source baseUrl must be a valid URL: ${baseUrl}`);\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new RangeError(\"activity source baseUrl must use HTTP or HTTPS\");\n }\n // URL keeps IPv6 hosts bracketed (e.g. \"[::1]\"); normalize before the lookup.\n const host = parsed.hostname.replace(/^\\[|\\]$/g, \"\");\n if (LOOPBACK_HOSTS[host] !== true && !/^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(host)) {\n throw new RangeError(`activity source baseUrl must target a loopback host (got ${parsed.hostname})`);\n }\n return parsed;\n}\n\nfunction parseSource(value: unknown): ActivitySourceConfig {\n const raw = asRecord(value, \"activity source\");\n const machineLabel = optionalString(raw.machineLabel, \"activity source machineLabel\");\n const baseUrl = optionalString(raw.baseUrl, \"activity source baseUrl\");\n if (machineLabel === undefined || baseUrl === undefined) {\n throw new TypeError(\"activity source requires machineLabel and baseUrl\");\n }\n // Reject whitespace-only labels here so config-load fails loudly rather than\n // parsing clean and then failing on the first sync (the client and pipeline\n // both reject a blank label via trim()).\n if (machineLabel.trim().length === 0) {\n throw new RangeError(\"activity source machineLabel must not be blank\");\n }\n validateActivityBaseUrl(baseUrl);\n const token = optionalString(raw.token, \"activity source token\");\n return { machineLabel, baseUrl, ...(token === undefined ? {} : { token }) };\n}\n\n/**\n * Parse the unified `activity.*` block. `enabled` gates source ingestion (and\n * requires at least one source); `extractionMode` independently gates durable\n * trust-gated memory extraction (default `off`, i.e. search-only).\n */\nexport function parseActivityConfig(raw: unknown): ActivityConfig {\n const defaults = defaultActivityConfig();\n if (raw === undefined || raw === null) {\n return { ...defaults };\n }\n const config = asRecord(raw, \"activity\");\n const enabledValue = coerceBooleanLike(config.enabled, \"activity.enabled\");\n if (config.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.enabled must be a boolean\");\n }\n const timezone = optionalString(config.timezone, \"activity.timezone\") ?? \"UTC\";\n // Validate the IANA zone at parse so a typo fails before any daemon is\n // contacted; otherwise activityDayWindow() throws mid-sync after snapshot\n // pages may already be persisted, and every retry replays the same window.\n assertValidTimezone(timezone);\n const syncDaysValue = coerceNumber(config.syncDays, \"activity.syncDays\");\n if (config.syncDays !== undefined && syncDaysValue === undefined) {\n throw new TypeError(\"activity.syncDays must be a finite number\");\n }\n const syncDays = syncDaysValue ?? 1;\n if (!Number.isInteger(syncDays) || syncDays < 1 || syncDays > 90) {\n throw new RangeError(\"activity.syncDays must be an integer from 1 to 90\");\n }\n const intervalValue = coerceNumber(config.autoSyncIntervalMinutes, \"activity.autoSyncIntervalMinutes\");\n if (config.autoSyncIntervalMinutes !== undefined && intervalValue === undefined) {\n throw new TypeError(\"activity.autoSyncIntervalMinutes must be a finite number\");\n }\n const autoSyncIntervalMinutes = intervalValue ?? 15;\n if (!Number.isInteger(autoSyncIntervalMinutes) || autoSyncIntervalMinutes < 1 || autoSyncIntervalMinutes > 1440) {\n throw new RangeError(\"activity.autoSyncIntervalMinutes must be an integer from 1 to 1440\");\n }\n if (config.sources !== undefined && !Array.isArray(config.sources)) {\n throw new TypeError(\"activity.sources must be an array\");\n }\n const sources = (config.sources ?? []).map(parseSource);\n // Cursors and row dedup are keyed on machineLabel alone; two sources sharing\n // a label would share a cursor and dedup namespace, silently skipping or\n // conflating snapshots. Reject the collision at parse.\n const labels = new Set<string>();\n for (const source of sources) {\n if (labels.has(source.machineLabel)) {\n throw new RangeError(`activity source machineLabel must be unique: ${source.machineLabel}`);\n }\n labels.add(source.machineLabel);\n }\n const enabled = enabledValue ?? false;\n if (enabled && sources.length === 0) throw new RangeError(\"activity.enabled requires at least one source\");\n\n // Extraction gate (independent of `enabled` ingestion). Default `off`.\n // Default only for a missing key; an explicit null/non-string is a malformed\n // enum and must fail rather than silently disabling extraction.\n const extractionMode = config.extractionMode === undefined ? defaults.extractionMode : config.extractionMode;\n if (typeof extractionMode !== \"string\" || !EXTRACTION_MODES.includes(extractionMode as ActivityExtractionMode)) {\n throw new RangeError(`activity.extractionMode must be one of: ${EXTRACTION_MODES.join(\", \")}`);\n }\n const minImportance = config.minImportance === undefined ? defaults.minImportance : config.minImportance;\n if (typeof minImportance !== \"string\" || !IMPORTANCE_LEVELS.includes(minImportance as ImportanceLevel)) {\n throw new RangeError(`activity.minImportance must be one of: ${IMPORTANCE_LEVELS.join(\", \")}`);\n }\n // Default only for a missing key; an explicit null/unparseable value must fail\n // rather than silently uncapping (parity with the enum/unit-interval fields).\n const rawMaxMemoriesPerDay =\n config.maxMemoriesPerDay === undefined ? defaults.maxMemoriesPerDay : config.maxMemoriesPerDay;\n const maxMemoriesPerDay = coerceNumber(rawMaxMemoriesPerDay);\n if (maxMemoriesPerDay === undefined || !Number.isInteger(maxMemoriesPerDay) || maxMemoriesPerDay < 0) {\n throw new RangeError(\"activity.maxMemoriesPerDay must be a non-negative integer\");\n }\n const autoApproveTrust = parseUnitInterval(config.autoApproveTrust, \"autoApproveTrust\", defaults.autoApproveTrust);\n const reviewTrust = parseUnitInterval(config.reviewTrust, \"reviewTrust\", defaults.reviewTrust);\n if (reviewTrust >= autoApproveTrust) {\n throw new RangeError(\n `activity.reviewTrust (${reviewTrust}) must be below autoApproveTrust (${autoApproveTrust})`,\n );\n }\n return {\n enabled,\n timezone,\n syncDays,\n autoSyncIntervalMinutes,\n sources,\n extractionMode: extractionMode as ActivityExtractionMode,\n sourceTrust: parseUnitInterval(config.sourceTrust, \"sourceTrust\", defaults.sourceTrust),\n autoApproveTrust,\n reviewTrust,\n minConfidence: parseUnitInterval(config.minConfidence, \"minConfidence\", defaults.minConfidence),\n minImportance: minImportance as ImportanceLevel,\n maxMemoriesPerDay,\n timeline: parseTimelineConfig(config.timeline),\n };\n}\n\n/**\n * Parse the `activity.timeline.*` block. `enabled` is the master gate for\n * timeline-card derivation (issue #2049); default false. A non-object block\n * is malformed and must fail rather than silently disabling the layer.\n */\nfunction parseTimelineConfig(raw: unknown): ActivityTimelineConfig {\n if (raw === undefined) return { enabled: false };\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n throw new TypeError(\"activity.timeline must be an object\");\n }\n const timeline = raw as Record<string, unknown>;\n const enabledValue = coerceBooleanLike(timeline.enabled, \"activity.timeline.enabled\");\n if (timeline.enabled !== undefined && enabledValue === undefined) {\n throw new TypeError(\"activity.timeline.enabled must be a boolean\");\n }\n return { enabled: enabledValue ?? false };\n}\n"],"mappings":";;;;;;;;;AAKA,IAAM,mBAAsD,CAAC,OAAO,OAAO;AAC3E,IAAM,oBAAgD,CAAC,YAAY,QAAQ,UAAU,OAAO,SAAS;AACrG,IAAM,iBAAuC,EAAE,WAAW,MAAM,aAAa,MAAM,OAAO,KAAK;AAGxF,SAAS,wBAAwC;AACtD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,IACzB,SAAS,CAAC;AAAA,IACV,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,UAAU,EAAE,SAAS,MAAM;AAAA,EAC7B;AACF;AAEA,SAAS,SAAS,OAAgB,MAAuC;AACvE,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,UAAU,GAAG,IAAI,oBAAoB;AAAA,EACjD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAgB,MAAkC;AACxE,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,YAAY,MAAM,WAAW,EAAG,OAAM,IAAI,UAAU,GAAG,IAAI,6BAA6B;AAC7G,SAAO;AACT;AAEA,SAAS,kBAAkB,OAAgB,KAAa,UAA0B;AAChF,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,SAAS,aAAa,KAAK;AACjC,MAAI,WAAW,UAAa,CAAC,OAAO,SAAS,MAAM,KAAK,SAAS,KAAK,SAAS,GAAG;AAChF,UAAM,IAAI,WAAW,YAAY,GAAG,6BAA6B;AAAA,EACnE;AACA,SAAO;AACT;AASO,SAAS,wBAAwB,SAAsB;AAC5D,MAAI;AACJ,MAAI;AACF,aAAS,IAAI,IAAI,OAAO;AAAA,EAC1B,QAAQ;AACN,UAAM,IAAI,WAAW,gDAAgD,OAAO,EAAE;AAAA,EAChF;AACA,MAAI,OAAO,aAAa,WAAW,OAAO,aAAa,UAAU;AAC/D,UAAM,IAAI,WAAW,gDAAgD;AAAA,EACvE;AAEA,QAAM,OAAO,OAAO,SAAS,QAAQ,YAAY,EAAE;AACnD,MAAI,eAAe,IAAI,MAAM,QAAQ,CAAC,mCAAmC,KAAK,IAAI,GAAG;AACnF,UAAM,IAAI,WAAW,4DAA4D,OAAO,QAAQ,GAAG;AAAA,EACrG;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAsC;AACzD,QAAM,MAAM,SAAS,OAAO,iBAAiB;AAC7C,QAAM,eAAe,eAAe,IAAI,cAAc,8BAA8B;AACpF,QAAM,UAAU,eAAe,IAAI,SAAS,yBAAyB;AACrE,MAAI,iBAAiB,UAAa,YAAY,QAAW;AACvD,UAAM,IAAI,UAAU,mDAAmD;AAAA,EACzE;AAIA,MAAI,aAAa,KAAK,EAAE,WAAW,GAAG;AACpC,UAAM,IAAI,WAAW,gDAAgD;AAAA,EACvE;AACA,0BAAwB,OAAO;AAC/B,QAAM,QAAQ,eAAe,IAAI,OAAO,uBAAuB;AAC/D,SAAO,EAAE,cAAc,SAAS,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM,EAAG;AAC5E;AAOO,SAAS,oBAAoB,KAA8B;AAChE,QAAM,WAAW,sBAAsB;AACvC,MAAI,QAAQ,UAAa,QAAQ,MAAM;AACrC,WAAO,EAAE,GAAG,SAAS;AAAA,EACvB;AACA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,eAAe,kBAAkB,OAAO,SAAS,kBAAkB;AACzE,MAAI,OAAO,YAAY,UAAa,iBAAiB,QAAW;AAC9D,UAAM,IAAI,UAAU,oCAAoC;AAAA,EAC1D;AACA,QAAM,WAAW,eAAe,OAAO,UAAU,mBAAmB,KAAK;AAIzE,sBAAoB,QAAQ;AAC5B,QAAM,gBAAgB,aAAa,OAAO,UAAU,mBAAmB;AACvE,MAAI,OAAO,aAAa,UAAa,kBAAkB,QAAW;AAChE,UAAM,IAAI,UAAU,2CAA2C;AAAA,EACjE;AACA,QAAM,WAAW,iBAAiB;AAClC,MAAI,CAAC,OAAO,UAAU,QAAQ,KAAK,WAAW,KAAK,WAAW,IAAI;AAChE,UAAM,IAAI,WAAW,mDAAmD;AAAA,EAC1E;AACA,QAAM,gBAAgB,aAAa,OAAO,yBAAyB,kCAAkC;AACrG,MAAI,OAAO,4BAA4B,UAAa,kBAAkB,QAAW;AAC/E,UAAM,IAAI,UAAU,0DAA0D;AAAA,EAChF;AACA,QAAM,0BAA0B,iBAAiB;AACjD,MAAI,CAAC,OAAO,UAAU,uBAAuB,KAAK,0BAA0B,KAAK,0BAA0B,MAAM;AAC/G,UAAM,IAAI,WAAW,oEAAoE;AAAA,EAC3F;AACA,MAAI,OAAO,YAAY,UAAa,CAAC,MAAM,QAAQ,OAAO,OAAO,GAAG;AAClE,UAAM,IAAI,UAAU,mCAAmC;AAAA,EACzD;AACA,QAAM,WAAW,OAAO,WAAW,CAAC,GAAG,IAAI,WAAW;AAItD,QAAM,SAAS,oBAAI,IAAY;AAC/B,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,IAAI,OAAO,YAAY,GAAG;AACnC,YAAM,IAAI,WAAW,gDAAgD,OAAO,YAAY,EAAE;AAAA,IAC5F;AACA,WAAO,IAAI,OAAO,YAAY;AAAA,EAChC;AACA,QAAM,UAAU,gBAAgB;AAChC,MAAI,WAAW,QAAQ,WAAW,EAAG,OAAM,IAAI,WAAW,+CAA+C;AAKzG,QAAM,iBAAiB,OAAO,mBAAmB,SAAY,SAAS,iBAAiB,OAAO;AAC9F,MAAI,OAAO,mBAAmB,YAAY,CAAC,iBAAiB,SAAS,cAAwC,GAAG;AAC9G,UAAM,IAAI,WAAW,2CAA2C,iBAAiB,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/F;AACA,QAAM,gBAAgB,OAAO,kBAAkB,SAAY,SAAS,gBAAgB,OAAO;AAC3F,MAAI,OAAO,kBAAkB,YAAY,CAAC,kBAAkB,SAAS,aAAgC,GAAG;AACtG,UAAM,IAAI,WAAW,0CAA0C,kBAAkB,KAAK,IAAI,CAAC,EAAE;AAAA,EAC/F;AAGA,QAAM,uBACJ,OAAO,sBAAsB,SAAY,SAAS,oBAAoB,OAAO;AAC/E,QAAM,oBAAoB,aAAa,oBAAoB;AAC3D,MAAI,sBAAsB,UAAa,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,GAAG;AACpG,UAAM,IAAI,WAAW,2DAA2D;AAAA,EAClF;AACA,QAAM,mBAAmB,kBAAkB,OAAO,kBAAkB,oBAAoB,SAAS,gBAAgB;AACjH,QAAM,cAAc,kBAAkB,OAAO,aAAa,eAAe,SAAS,WAAW;AAC7F,MAAI,eAAe,kBAAkB;AACnC,UAAM,IAAI;AAAA,MACR,yBAAyB,WAAW,qCAAqC,gBAAgB;AAAA,IAC3F;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,kBAAkB,OAAO,aAAa,eAAe,SAAS,WAAW;AAAA,IACtF;AAAA,IACA;AAAA,IACA,eAAe,kBAAkB,OAAO,eAAe,iBAAiB,SAAS,aAAa;AAAA,IAC9F;AAAA,IACA;AAAA,IACA,UAAU,oBAAoB,OAAO,QAAQ;AAAA,EAC/C;AACF;AAOA,SAAS,oBAAoB,KAAsC;AACjE,MAAI,QAAQ,OAAW,QAAO,EAAE,SAAS,MAAM;AAC/C,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,MAAM,QAAQ,GAAG,GAAG;AACjE,UAAM,IAAI,UAAU,qCAAqC;AAAA,EAC3D;AACA,QAAM,WAAW;AACjB,QAAM,eAAe,kBAAkB,SAAS,SAAS,2BAA2B;AACpF,MAAI,SAAS,YAAY,UAAa,iBAAiB,QAAW;AAChE,UAAM,IAAI,UAAU,6CAA6C;AAAA,EACnE;AACA,SAAO,EAAE,SAAS,gBAAgB,MAAM;AAC1C;","names":[]}
|
|
@@ -2,14 +2,8 @@ import {
|
|
|
2
2
|
estimateTokens
|
|
3
3
|
} from "./chunk-WVP2I6C5.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
estimateTokenCount
|
|
9
|
-
} from "./chunk-TOTT6S2V.js";
|
|
10
|
-
import {
|
|
11
|
-
log
|
|
12
|
-
} from "./chunk-3WCASNQZ.js";
|
|
5
|
+
summarizeContextPure
|
|
6
|
+
} from "./chunk-43HUVDTD.js";
|
|
13
7
|
|
|
14
8
|
// src/lcm/summarizer.ts
|
|
15
9
|
function generateNodeId() {
|
|
@@ -103,76 +97,19 @@ var LcmSummarizer = class {
|
|
|
103
97
|
return totalCreated;
|
|
104
98
|
}
|
|
105
99
|
/**
|
|
106
|
-
* Three-level escalation
|
|
107
|
-
* 0 =
|
|
108
|
-
* 1 = Aggressive bullet compression
|
|
109
|
-
* 2 = Deterministic truncation (no LLM)
|
|
100
|
+
* Three-level escalation, delegated to the shared pure summary seam
|
|
101
|
+
* (context-summary.ts): 0 = normal LLM, 1 = aggressive, 2 = deterministic.
|
|
110
102
|
*/
|
|
111
103
|
async summarizeWithEscalation(text, targetTokens) {
|
|
112
|
-
const { telemetryPrefilterEnabled } = this.config;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
escalation: 2
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const result = await this.summarizeFn(text, targetTokens, false);
|
|
124
|
-
if (result && estimateTokens(result) <= targetTokens * 1.5) {
|
|
125
|
-
return { text: result, escalation: 0 };
|
|
126
|
-
}
|
|
127
|
-
} catch (err) {
|
|
128
|
-
log.debug(`LCM level-0 summary failed: ${err}`);
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
const aggressiveTarget = Math.max(32, Math.ceil(targetTokens * 0.5));
|
|
132
|
-
const result = await this.summarizeFn(text, aggressiveTarget, true);
|
|
133
|
-
if (result && estimateTokens(result) <= targetTokens * 1.5) {
|
|
134
|
-
return { text: result, escalation: 1 };
|
|
135
|
-
}
|
|
136
|
-
} catch (err) {
|
|
137
|
-
log.debug(`LCM level-1 summary failed: ${err}`);
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
text: deterministicTruncate(text, this.config.deterministicMaxTokens),
|
|
141
|
-
escalation: 2
|
|
142
|
-
};
|
|
104
|
+
const { deterministicMaxTokens, telemetryPrefilterEnabled } = this.config;
|
|
105
|
+
const result = await summarizeContextPure(text, targetTokens, "auto", {
|
|
106
|
+
llm: this.summarizeFn,
|
|
107
|
+
deterministicMaxTokens,
|
|
108
|
+
telemetryPrefilterEnabled
|
|
109
|
+
});
|
|
110
|
+
return { text: result.text, escalation: result.escalation ?? 2 };
|
|
143
111
|
}
|
|
144
112
|
};
|
|
145
|
-
function deterministicTruncate(text, maxTokens) {
|
|
146
|
-
if (maxTokens <= 0 || estimateTokenCount(text) <= maxTokens) return text;
|
|
147
|
-
const sentences = text.split(/(?<=[.!?])\s+/).filter((s) => s.length > 0);
|
|
148
|
-
if (sentences.length <= 2) return clampToTokenBudget(text, maxTokens);
|
|
149
|
-
const first = sentences[0];
|
|
150
|
-
const last = sentences[sentences.length - 1];
|
|
151
|
-
const render = (middle2, truncated2) => `${first} ${middle2.join(" ")}${truncated2 ? " [...] " : " "}${last}`;
|
|
152
|
-
const base = render([], false);
|
|
153
|
-
if (estimateTokenCount(base) > maxTokens) return clampToTokenBudget(text, maxTokens);
|
|
154
|
-
if (estimateTokenCount(render([], true)) > maxTokens) return base;
|
|
155
|
-
const middle = [];
|
|
156
|
-
for (let i = 1; i < sentences.length - 1; i++) {
|
|
157
|
-
const candidate = [...middle, sentences[i]];
|
|
158
|
-
const truncated2 = i < sentences.length - 2;
|
|
159
|
-
if (estimateTokenCount(render(candidate, truncated2)) > maxTokens) break;
|
|
160
|
-
middle.push(sentences[i]);
|
|
161
|
-
}
|
|
162
|
-
const truncated = middle.length < sentences.length - 2;
|
|
163
|
-
return clampToTokenBudget(render(middle, truncated), maxTokens);
|
|
164
|
-
}
|
|
165
|
-
function clampToTokenBudget(text, maxTokens) {
|
|
166
|
-
const codePoints = [...text];
|
|
167
|
-
let low = 0;
|
|
168
|
-
let high = codePoints.length;
|
|
169
|
-
while (low < high) {
|
|
170
|
-
const mid = Math.ceil((low + high) / 2);
|
|
171
|
-
if (estimateTokenCount(codePoints.slice(0, mid).join("")) <= maxTokens) low = mid;
|
|
172
|
-
else high = mid - 1;
|
|
173
|
-
}
|
|
174
|
-
return codePoints.slice(0, low).join("");
|
|
175
|
-
}
|
|
176
113
|
function chunkArray(arr, size) {
|
|
177
114
|
const chunks = [];
|
|
178
115
|
for (let i = 0; i < arr.length; i += size) {
|
|
@@ -184,4 +121,4 @@ function chunkArray(arr, size) {
|
|
|
184
121
|
export {
|
|
185
122
|
LcmSummarizer
|
|
186
123
|
};
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-KOLJJN5G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lcm/summarizer.ts"],"sourcesContent":["import { summarizeContextPure, type SummarizeFn } from \"../context-summary.js\";\nimport { estimateTokens } from \"./archive.js\";\nimport type { LcmArchive, LcmMessage } from \"./archive.js\";\nimport type { LcmDag } from \"./dag.js\";\n\n/** Generate a ULID-like ID (timestamp + random). */\nfunction generateNodeId(): string {\n const ts = Date.now().toString(36).padStart(9, \"0\");\n const rand = Math.random().toString(36).slice(2, 10);\n return `lcm-${ts}-${rand}`;\n}\n\n// `SummarizeFn` moved to the shared pure summary seam (context-summary.ts,\n// #2347); re-exported here for back-compat with existing imports.\nexport type { SummarizeFn };\n\nexport interface LcmSummarizerConfig {\n leafBatchSize: number;\n rollupFanIn: number;\n maxDepth: number;\n deterministicMaxTokens: number;\n telemetryPrefilterEnabled: boolean;\n}\n\nexport class LcmSummarizer {\n constructor(\n private readonly archive: LcmArchive,\n private readonly dag: LcmDag,\n private readonly summarizeFn: SummarizeFn,\n private readonly config: LcmSummarizerConfig,\n ) {}\n\n /**\n * Run incremental summarization for a session.\n * Creates leaf nodes from unsummarized messages, then rolls up as needed.\n */\n async summarizeIncremental(sessionId: string): Promise<number> {\n let nodesCreated = 0;\n\n // Phase 1: Create leaf nodes from unsummarized messages\n const unsummarized = this.archive.getUnsummarizedMessages(sessionId);\n if (unsummarized.length >= this.config.leafBatchSize) {\n const batches = chunkArray(unsummarized, this.config.leafBatchSize);\n // Only process complete batches (leave partial for next time)\n const completeBatches = unsummarized.length % this.config.leafBatchSize === 0\n ? batches\n : batches.slice(0, -1);\n\n for (const batch of completeBatches) {\n const created = await this.createLeafNode(sessionId, batch);\n if (created) nodesCreated++;\n }\n }\n\n // Phase 2: Roll up at each depth level\n if (nodesCreated > 0) {\n nodesCreated += await this.rollupAll(sessionId);\n }\n\n return nodesCreated;\n }\n\n /** Create a leaf summary node (depth 0) from a batch of messages. */\n private async createLeafNode(\n sessionId: string,\n messages: LcmMessage[],\n ): Promise<boolean> {\n if (messages.length === 0) return false;\n\n const combinedText = messages\n .map((m) => `[${m.role}] ${m.content}`)\n .join(\"\\n\\n\");\n\n const inputTokens = estimateTokens(combinedText);\n const targetTokens = Math.max(64, Math.ceil(inputTokens * 0.25));\n\n const summary = await this.summarizeWithEscalation(combinedText, targetTokens);\n\n this.dag.insertNode({\n id: generateNodeId(),\n session_id: sessionId,\n depth: 0,\n parent_id: null,\n summary_text: summary.text,\n token_count: estimateTokens(summary.text),\n msg_start: messages[0].turn_index,\n msg_end: messages[messages.length - 1].turn_index,\n escalation: summary.escalation,\n });\n\n return true;\n }\n\n /** Roll up orphan nodes at each depth level up to maxDepth. */\n private async rollupAll(sessionId: string): Promise<number> {\n let totalCreated = 0;\n\n for (let depth = 0; depth < this.config.maxDepth; depth++) {\n const orphans = this.dag.getOrphanNodesAtDepth(sessionId, depth);\n if (orphans.length < this.config.rollupFanIn) continue;\n\n const batches = chunkArray(orphans, this.config.rollupFanIn);\n // Only process complete batches\n const completeBatches = orphans.length % this.config.rollupFanIn === 0\n ? batches\n : batches.slice(0, -1);\n\n for (const batch of completeBatches) {\n const combinedText = batch\n .map((n) => n.summary_text)\n .join(\"\\n\\n\");\n\n const inputTokens = estimateTokens(combinedText);\n const targetTokens = Math.max(64, Math.ceil(inputTokens * 0.25));\n\n const summary = await this.summarizeWithEscalation(combinedText, targetTokens);\n\n const parentId = generateNodeId();\n this.dag.insertNode({\n id: parentId,\n session_id: sessionId,\n depth: depth + 1,\n parent_id: null,\n summary_text: summary.text,\n token_count: estimateTokens(summary.text),\n msg_start: batch[0].msg_start,\n msg_end: batch[batch.length - 1].msg_end,\n escalation: summary.escalation,\n });\n\n this.dag.setParent(\n batch.map((n) => n.id),\n parentId,\n );\n\n totalCreated++;\n }\n }\n\n return totalCreated;\n }\n\n /**\n * Three-level escalation, delegated to the shared pure summary seam\n * (context-summary.ts): 0 = normal LLM, 1 = aggressive, 2 = deterministic.\n */\n private async summarizeWithEscalation(\n text: string,\n targetTokens: number,\n ): Promise<{ text: string; escalation: number }> {\n const { deterministicMaxTokens, telemetryPrefilterEnabled } = this.config;\n const result = await summarizeContextPure(text, targetTokens, \"auto\", {\n llm: this.summarizeFn,\n deterministicMaxTokens,\n telemetryPrefilterEnabled,\n });\n return { text: result.text, escalation: result.escalation ?? 2 };\n }\n}\n\n\nfunction chunkArray<T>(arr: T[], size: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n}\n"],"mappings":";;;;;;;;AAMA,SAAS,iBAAyB;AAChC,QAAM,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAClD,QAAM,OAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE;AACnD,SAAO,OAAO,EAAE,IAAI,IAAI;AAC1B;AAcO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YACmB,SACA,KACA,aACA,QACjB;AAJiB;AACA;AACA;AACA;AAAA,EAChB;AAAA,EAJgB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnB,MAAM,qBAAqB,WAAoC;AAC7D,QAAI,eAAe;AAGnB,UAAM,eAAe,KAAK,QAAQ,wBAAwB,SAAS;AACnE,QAAI,aAAa,UAAU,KAAK,OAAO,eAAe;AACpD,YAAM,UAAU,WAAW,cAAc,KAAK,OAAO,aAAa;AAElE,YAAM,kBAAkB,aAAa,SAAS,KAAK,OAAO,kBAAkB,IACxE,UACA,QAAQ,MAAM,GAAG,EAAE;AAEvB,iBAAW,SAAS,iBAAiB;AACnC,cAAM,UAAU,MAAM,KAAK,eAAe,WAAW,KAAK;AAC1D,YAAI,QAAS;AAAA,MACf;AAAA,IACF;AAGA,QAAI,eAAe,GAAG;AACpB,sBAAgB,MAAM,KAAK,UAAU,SAAS;AAAA,IAChD;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAc,eACZ,WACA,UACkB;AAClB,QAAI,SAAS,WAAW,EAAG,QAAO;AAElC,UAAM,eAAe,SAClB,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE,EACrC,KAAK,MAAM;AAEd,UAAM,cAAc,eAAe,YAAY;AAC/C,UAAM,eAAe,KAAK,IAAI,IAAI,KAAK,KAAK,cAAc,IAAI,CAAC;AAE/D,UAAM,UAAU,MAAM,KAAK,wBAAwB,cAAc,YAAY;AAE7E,SAAK,IAAI,WAAW;AAAA,MAClB,IAAI,eAAe;AAAA,MACnB,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc,QAAQ;AAAA,MACtB,aAAa,eAAe,QAAQ,IAAI;AAAA,MACxC,WAAW,SAAS,CAAC,EAAE;AAAA,MACvB,SAAS,SAAS,SAAS,SAAS,CAAC,EAAE;AAAA,MACvC,YAAY,QAAQ;AAAA,IACtB,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAc,UAAU,WAAoC;AAC1D,QAAI,eAAe;AAEnB,aAAS,QAAQ,GAAG,QAAQ,KAAK,OAAO,UAAU,SAAS;AACzD,YAAM,UAAU,KAAK,IAAI,sBAAsB,WAAW,KAAK;AAC/D,UAAI,QAAQ,SAAS,KAAK,OAAO,YAAa;AAE9C,YAAM,UAAU,WAAW,SAAS,KAAK,OAAO,WAAW;AAE3D,YAAM,kBAAkB,QAAQ,SAAS,KAAK,OAAO,gBAAgB,IACjE,UACA,QAAQ,MAAM,GAAG,EAAE;AAEvB,iBAAW,SAAS,iBAAiB;AACnC,cAAM,eAAe,MAClB,IAAI,CAAC,MAAM,EAAE,YAAY,EACzB,KAAK,MAAM;AAEd,cAAM,cAAc,eAAe,YAAY;AAC/C,cAAM,eAAe,KAAK,IAAI,IAAI,KAAK,KAAK,cAAc,IAAI,CAAC;AAE/D,cAAM,UAAU,MAAM,KAAK,wBAAwB,cAAc,YAAY;AAE7E,cAAM,WAAW,eAAe;AAChC,aAAK,IAAI,WAAW;AAAA,UAClB,IAAI;AAAA,UACJ,YAAY;AAAA,UACZ,OAAO,QAAQ;AAAA,UACf,WAAW;AAAA,UACX,cAAc,QAAQ;AAAA,UACtB,aAAa,eAAe,QAAQ,IAAI;AAAA,UACxC,WAAW,MAAM,CAAC,EAAE;AAAA,UACpB,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE;AAAA,UACjC,YAAY,QAAQ;AAAA,QACtB,CAAC;AAED,aAAK,IAAI;AAAA,UACP,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,UACrB;AAAA,QACF;AAEA;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,wBACZ,MACA,cAC+C;AAC/C,UAAM,EAAE,wBAAwB,0BAA0B,IAAI,KAAK;AACnE,UAAM,SAAS,MAAM,qBAAqB,MAAM,cAAc,QAAQ;AAAA,MACpE,KAAK,KAAK;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AACD,WAAO,EAAE,MAAM,OAAO,MAAM,YAAY,OAAO,cAAc,EAAE;AAAA,EACjE;AACF;AAGA,SAAS,WAAc,KAAU,MAAqB;AACpD,QAAM,SAAgB,CAAC;AACvB,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,MAAM;AACzC,WAAO,KAAK,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC;AAAA,EACpC;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WearablesInputError
|
|
3
3
|
} from "./chunk-V7IZKJI3.js";
|
|
4
|
+
import {
|
|
5
|
+
AdapterRegistry
|
|
6
|
+
} from "./chunk-2QSZNTDO.js";
|
|
4
7
|
import {
|
|
5
8
|
WriteRateLimiter
|
|
6
9
|
} from "./chunk-TB6CBZ5V.js";
|
|
7
|
-
import {
|
|
8
|
-
AdapterRegistry
|
|
9
|
-
} from "./chunk-JBPKEARU.js";
|
|
10
10
|
import {
|
|
11
11
|
serializeInlineScriptValue
|
|
12
12
|
} from "./chunk-3HSRWJTC.js";
|
|
13
13
|
import {
|
|
14
14
|
handleSupportPassportOwnerHttp
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-23CVL7HS.js";
|
|
16
16
|
import {
|
|
17
17
|
buildSupportPassportPublicRequestHandler
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-H7VDIF2V.js";
|
|
19
19
|
import {
|
|
20
20
|
nonEmptyQueryParam,
|
|
21
21
|
optionalNamespaceKindQueryParam,
|
|
22
22
|
optionalQueryString,
|
|
23
23
|
positiveIntQueryParam
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-QCRJMU5V.js";
|
|
25
25
|
import {
|
|
26
26
|
EngramMcpServer,
|
|
27
27
|
MCP_SUPPORTED_PROTOCOL_VERSIONS,
|
|
@@ -31,14 +31,14 @@ import {
|
|
|
31
31
|
processChatMessage,
|
|
32
32
|
sessionBelongsToPrincipal,
|
|
33
33
|
subscribeChatTranscript
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-MAH64N55.js";
|
|
35
35
|
import {
|
|
36
36
|
RelayMissionStoreError
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-VCKWULAK.js";
|
|
38
38
|
import {
|
|
39
39
|
executeResolution,
|
|
40
40
|
isValidResolutionVerb
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-JTWZKNUH.js";
|
|
42
42
|
import {
|
|
43
43
|
isDefaultReviewNamespace,
|
|
44
44
|
listPairs,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
} from "./chunk-CTVWELNK.js";
|
|
47
47
|
import {
|
|
48
48
|
validateRequest
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-7XOG75AU.js";
|
|
50
50
|
import {
|
|
51
51
|
maybeHandleLifecycleFlush
|
|
52
52
|
} from "./chunk-TIDEL77O.js";
|
|
@@ -61,15 +61,15 @@ import {
|
|
|
61
61
|
authorizationProbeNamespaces,
|
|
62
62
|
authorizationProbeRequiresPrincipalNamespace,
|
|
63
63
|
probeOperationAuthorization
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-IVIAHQBR.js";
|
|
65
65
|
import {
|
|
66
66
|
CorrectionContractError,
|
|
67
67
|
getOperation,
|
|
68
68
|
resolveQueryNamespaceWritablePreflight
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-IHGMRDEE.js";
|
|
70
70
|
import {
|
|
71
71
|
handleWhoKnowsHttpQuery
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-WKJFIMVN.js";
|
|
73
73
|
import {
|
|
74
74
|
isTrustZoneName
|
|
75
75
|
} from "./chunk-5QZR2RA3.js";
|
|
@@ -78,12 +78,12 @@ import {
|
|
|
78
78
|
} from "./chunk-DEUNUKTD.js";
|
|
79
79
|
import {
|
|
80
80
|
isRecallDisclosure
|
|
81
|
-
} from "./chunk-
|
|
81
|
+
} from "./chunk-MINHJ55X.js";
|
|
82
82
|
import {
|
|
83
83
|
OFFLINE_SYNC_APPLY_MAX_BODY_BYTES,
|
|
84
84
|
OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
|
|
85
85
|
OFFLINE_SYNC_SNAPSHOT_BASE_MAX_BODY_BYTES
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-XJJYSX6F.js";
|
|
87
87
|
import {
|
|
88
88
|
assertOperationAllowed,
|
|
89
89
|
capabilityAllowsOp,
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
} from "./chunk-MZWSOLMT.js";
|
|
94
94
|
import {
|
|
95
95
|
projectTagProjectId
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-QBC33MPY.js";
|
|
97
97
|
import {
|
|
98
98
|
expandTildePath
|
|
99
99
|
} from "./chunk-EYIEWJNI.js";
|
|
@@ -221,7 +221,7 @@ async function respondLocationSync(body, res, respondJson2, service) {
|
|
|
221
221
|
}
|
|
222
222
|
async function respondLocationBackfill(body, res, respondJson2, service) {
|
|
223
223
|
const output = await requireLocationOperation("location_backfill").run(
|
|
224
|
-
{ from: body.from ?? null, to: body.to ?? null },
|
|
224
|
+
{ from: body.from ?? null, to: body.to ?? null, dryRun: body.dryRun === true },
|
|
225
225
|
{ service }
|
|
226
226
|
);
|
|
227
227
|
respondJson2(res, 200, output.result);
|
|
@@ -234,6 +234,14 @@ async function respondLocationDay(date, res, respondJson2, service) {
|
|
|
234
234
|
respondJson2(res, output.result.found ? 200 : 404, output.result);
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
+
// src/standup/http-glue.ts
|
|
238
|
+
async function respondStandup(date, res, respondJson2, service) {
|
|
239
|
+
const op = getOperation("standup");
|
|
240
|
+
if (!op) throw new Error("access-boundary: operation not registered: standup");
|
|
241
|
+
const output = await op.run({ ...date ? { date } : {} }, { service });
|
|
242
|
+
respondJson2(res, 200, output.result);
|
|
243
|
+
}
|
|
244
|
+
|
|
237
245
|
// src/chat/chat-http.ts
|
|
238
246
|
import { createHash } from "crypto";
|
|
239
247
|
var chatInFlight = /* @__PURE__ */ new Map();
|
|
@@ -1817,6 +1825,11 @@ var EngramAccessHttpServer = class extends ReviewDeckAccessHttpBase {
|
|
|
1817
1825
|
await respondLocationDay(parsed.searchParams.get("date"), res, this.respondJson.bind(this), this.service);
|
|
1818
1826
|
return;
|
|
1819
1827
|
}
|
|
1828
|
+
if (req.method === "GET" && (pathname === "/engram/v1/standup" || pathname === "/remnic/v1/standup")) {
|
|
1829
|
+
this.enforceTokenOp("standup");
|
|
1830
|
+
await respondStandup(parsed.searchParams.get("date"), res, this.respondJson.bind(this), this.service);
|
|
1831
|
+
return;
|
|
1832
|
+
}
|
|
1820
1833
|
if (req.method === "POST" && pathname === "/engram/v1/observe") {
|
|
1821
1834
|
this.enforceTokenOp("observe");
|
|
1822
1835
|
const body = await this.readValidatedBody(req, "observe");
|
|
@@ -2546,7 +2559,7 @@ var EngramAccessHttpServer = class extends ReviewDeckAccessHttpBase {
|
|
|
2546
2559
|
if (req.method === "POST" && pathname === "/engram/v1/contradiction-scan") {
|
|
2547
2560
|
this.enforceTokenOp("contradiction_scan_run");
|
|
2548
2561
|
const body = await this.readJsonBody(req);
|
|
2549
|
-
const { runContradictionScan } = await import("./contradiction-scan-
|
|
2562
|
+
const { runContradictionScan } = await import("./contradiction-scan-NOYMFG66.js");
|
|
2550
2563
|
const principal = this.resolveRequestPrincipal(req);
|
|
2551
2564
|
const result = await runContradictionScan({
|
|
2552
2565
|
storage: this.service.storageRef,
|
|
@@ -3557,4 +3570,4 @@ export {
|
|
|
3557
3570
|
resolveDefaultAdminConsolePublicDir,
|
|
3558
3571
|
EngramAccessHttpServer
|
|
3559
3572
|
};
|
|
3560
|
-
//# sourceMappingURL=chunk-
|
|
3573
|
+
//# sourceMappingURL=chunk-KXIXO76C.js.map
|