@remnic/core 9.3.771 → 9.4.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 +5 -5
- package/dist/access-admin-ops-surface.js +36 -35
- package/dist/access-boundary.d.ts +5 -5
- package/dist/access-boundary.js +37 -36
- package/dist/access-cli.js +109 -108
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +5 -5
- package/dist/access-http.js +48 -47
- package/dist/access-identity-continuity-surface.d.ts +4 -4
- package/dist/access-identity-continuity-surface.js +36 -35
- package/dist/access-lcm-surface.d.ts +5 -5
- package/dist/access-lcm-surface.js +36 -35
- package/dist/access-mcp.d.ts +5 -5
- package/dist/access-mcp.js +44 -43
- package/dist/access-observe-write-surface.d.ts +5 -5
- package/dist/access-observe-write-surface.js +36 -35
- package/dist/access-operations-batch.js +41 -40
- package/dist/access-operations.d.ts +5 -5
- package/dist/access-operations.js +43 -42
- package/dist/access-recall-surface.d.ts +5 -5
- package/dist/access-recall-surface.js +36 -35
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-CdW6B2qQ.d.ts → access-service-m-2VO_Ig.d.ts} +3 -3
- package/dist/access-service.d.ts +5 -5
- package/dist/access-service.js +36 -35
- package/dist/access-surface-catalog.d.ts +5 -5
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +2 -2
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/{auto-sync-2SOUW4JW.js → auto-sync-HMHQHUAG.js} +9 -9
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +4 -4
- package/dist/bootstrap.js +2 -2
- package/dist/boxes.js +2 -2
- package/dist/briefing.d.ts +1 -1
- package/dist/briefing.js +12 -12
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/buffer.js +2 -2
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +4 -4
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-bflYNWsM.d.ts → catalog-BxWokdC2.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +4 -4
- package/dist/causal-chain.js +4 -4
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +17 -17
- package/dist/causal-retrieval.js +4 -4
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory-graph.js +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-PSNMICC2.js → chunk-27FLVMDC.js} +14 -14
- package/dist/{chunk-7FL4CNPV.js → chunk-2A3OXAP2.js} +2 -2
- package/dist/{chunk-U5HD7BB2.js → chunk-2FOD2YY3.js} +10 -10
- package/dist/{chunk-GG6AJN7A.js → chunk-2IZAGAJR.js} +2 -2
- package/dist/{chunk-6Y4JTNX7.js → chunk-2MR3MFQB.js} +2 -2
- package/dist/{chunk-AU7Q3LSC.js → chunk-2QSZNTDO.js} +4 -4
- package/dist/{chunk-IBAU2RZN.js → chunk-2U2A5HF4.js} +11 -5
- package/dist/chunk-2U2A5HF4.js.map +1 -0
- package/dist/chunk-37CTGERM.js +62 -0
- package/dist/chunk-37CTGERM.js.map +1 -0
- package/dist/{chunk-MYNRJGOY.js → chunk-3F4N4WDH.js} +76 -111
- package/dist/chunk-3F4N4WDH.js.map +1 -0
- package/dist/{chunk-7OSULYN2.js → chunk-4BFRBP45.js} +2 -2
- package/dist/{chunk-DQC3ZZYM.js → chunk-4KJLYTLS.js} +2 -2
- package/dist/{chunk-DMKMQTBH.js → chunk-4P4626RY.js} +5 -5
- package/dist/{chunk-GY3SKOS4.js → chunk-5EZXHU36.js} +2 -2
- package/dist/{chunk-OW4UXZNP.js → chunk-5QZDMSSN.js} +61 -61
- package/dist/chunk-64UDOIMI.js +121 -0
- package/dist/chunk-64UDOIMI.js.map +1 -0
- package/dist/{chunk-OTMAYEY5.js → chunk-66FLU5BT.js} +3 -3
- package/dist/{chunk-J2QYB2D5.js → chunk-6BISDEN6.js} +7 -7
- package/dist/{chunk-CXBFYSQY.js → chunk-6ZIETXZ2.js} +3 -3
- package/dist/{chunk-KYYL4U6X.js → chunk-7N2RUBAP.js} +3 -3
- package/dist/{chunk-U3TRHUSJ.js → chunk-7QWMTOIF.js} +45 -45
- package/dist/{chunk-L24JROPR.js → chunk-7WSLR2CU.js} +2 -2
- package/dist/{chunk-T4AWNIXJ.js → chunk-7Z2DZNWN.js} +18 -9
- package/dist/{chunk-T4AWNIXJ.js.map → chunk-7Z2DZNWN.js.map} +1 -1
- package/dist/{chunk-EXM3CQTZ.js → chunk-A3GOMRJG.js} +2 -2
- package/dist/{chunk-DCWIQFNA.js → chunk-AKUCU7CI.js} +7 -7
- package/dist/{chunk-XHYGJVXL.js → chunk-AXTXN4T6.js} +2 -2
- package/dist/{chunk-L42FA4BU.js → chunk-BGTAL46Y.js} +2 -2
- package/dist/{chunk-5QANTTY2.js → chunk-BRDJ2HFP.js} +2 -2
- package/dist/{chunk-7VFZTJ7K.js → chunk-BV2TIZ4F.js} +2 -2
- package/dist/{chunk-QMN3CIFS.js → chunk-CGS7UKWM.js} +2 -2
- package/dist/{chunk-LZ73Y56P.js → chunk-CLX5VDNY.js} +8 -8
- package/dist/{chunk-KYC3RLYJ.js → chunk-CXLNZXG5.js} +1 -1
- package/dist/{chunk-YOELDDBF.js → chunk-CZAA5N5S.js} +4 -4
- package/dist/{chunk-XG4NBBRW.js → chunk-CZAZX7JP.js} +5 -5
- package/dist/{chunk-QOGXUNWL.js → chunk-CZGIIADK.js} +7 -7
- package/dist/{chunk-QRDOSYOR.js → chunk-DBRYEIGY.js} +2 -2
- package/dist/{chunk-6QODJKOV.js → chunk-DGYCWCQ7.js} +3 -3
- package/dist/{chunk-RFZW7NID.js → chunk-DR6PEJU3.js} +4 -4
- package/dist/{chunk-UC4YOAC2.js → chunk-E5BK6CGV.js} +2 -2
- package/dist/{chunk-TKZ3AL5V.js → chunk-EHK6KZHK.js} +2 -2
- package/dist/{chunk-X5NUL5N4.js → chunk-EPGWWCZF.js} +3 -3
- package/dist/{chunk-JZ7P26GF.js → chunk-F53UF7CI.js} +2 -2
- package/dist/{chunk-SJHM6I4J.js → chunk-FC77VUX5.js} +2 -2
- package/dist/{chunk-DKTSR7EK.js → chunk-FDPZVY6D.js} +2 -2
- package/dist/{chunk-OUXPVWTZ.js → chunk-FLVL4L3L.js} +5 -5
- package/dist/{chunk-ZI3YYOOV.js → chunk-FZGGZAAU.js} +2 -2
- package/dist/{chunk-TQT3USCG.js → chunk-HG32URJJ.js} +2 -2
- package/dist/{chunk-ZQNCHPTZ.js → chunk-HLTAPHZZ.js} +2 -2
- package/dist/{chunk-LU7ATMRV.js → chunk-HRCACVHL.js} +3 -3
- package/dist/{chunk-LOPZ2DWR.js → chunk-I73G4UH7.js} +2 -2
- package/dist/{chunk-MJE4XV4A.js → chunk-IC6QX5TC.js} +2 -2
- package/dist/{chunk-27TJRC2Y.js → chunk-ILFJ7AVS.js} +7 -7
- package/dist/{chunk-VUA4S7P6.js → chunk-JIKJPDQJ.js} +4 -4
- package/dist/{chunk-BKTC7JCA.js → chunk-JLR3JSTL.js} +3 -3
- package/dist/{chunk-VQ34TERH.js → chunk-JZHHREBL.js} +2 -2
- package/dist/{chunk-IQVQJJL7.js → chunk-K2ZLHESQ.js} +2 -2
- package/dist/{chunk-PWFWCGOO.js → chunk-KAWTOYAW.js} +2 -2
- package/dist/{chunk-YRZMCPC5.js → chunk-KCJ5H6XQ.js} +4 -4
- package/dist/{chunk-DJECGBBM.js → chunk-KQDNAXOM.js} +2 -2
- package/dist/{chunk-WIWPSQYU.js → chunk-KQPJLK3X.js} +2 -2
- package/dist/{chunk-XNWLD3RR.js → chunk-LOR6ZM5R.js} +3 -3
- package/dist/{chunk-EGLUVV6B.js → chunk-M7GGMGMZ.js} +10 -10
- package/dist/{chunk-YTU7WKYN.js → chunk-MNUHL34L.js} +3 -3
- package/dist/{chunk-ZCWIH4LH.js → chunk-MRHFJV44.js} +2 -2
- package/dist/{chunk-W4H5A3TJ.js → chunk-MTR7BZQN.js} +3 -3
- package/dist/{chunk-PNLCEFE4.js → chunk-MTWKDOVO.js} +2 -2
- package/dist/{chunk-TECYUPFB.js → chunk-NG7YBCJO.js} +4 -4
- package/dist/{chunk-OSMBC3JU.js → chunk-O2EL7EGG.js} +2 -2
- package/dist/{chunk-HW5EF6LV.js → chunk-O7BBFJLP.js} +2 -2
- package/dist/{chunk-EHQ5HO5T.js → chunk-OBMR4VIX.js} +1 -1
- package/dist/{chunk-VFHDUFH5.js → chunk-OHDJ34CC.js} +2 -2
- package/dist/{chunk-6SHAUM5S.js → chunk-OUMTBFSQ.js} +4 -4
- package/dist/{chunk-27CQIO7T.js → chunk-P6SYWE4G.js} +57 -10
- package/dist/chunk-P6SYWE4G.js.map +1 -0
- package/dist/{chunk-EEKDRAWX.js → chunk-PRTA6444.js} +2 -2
- package/dist/{chunk-IQ7WCZRW.js → chunk-PUBTHW5O.js} +3 -3
- package/dist/{chunk-AGNBY3VG.js → chunk-PYHOAXTI.js} +2 -2
- package/dist/{chunk-UUH4YQOF.js → chunk-QLULYKWZ.js} +2 -2
- package/dist/{chunk-DBSMLRTO.js → chunk-QT2RZNRT.js} +2 -2
- package/dist/{chunk-HM6UJPPO.js → chunk-QWGNDWKB.js} +2 -2
- package/dist/{chunk-KCQA46NR.js → chunk-R5VAVVHP.js} +2 -2
- package/dist/{chunk-SXN3LCUT.js → chunk-RHOZ5LLO.js} +100 -4
- package/dist/chunk-RHOZ5LLO.js.map +1 -0
- package/dist/{chunk-6KYMPV2O.js → chunk-RL6NEVXT.js} +45 -2
- package/dist/chunk-RL6NEVXT.js.map +1 -0
- package/dist/{chunk-O7GOFAM3.js → chunk-RP7YXA67.js} +2 -2
- package/dist/{chunk-BVKCV2ZY.js → chunk-SMX5267P.js} +2 -2
- package/dist/{chunk-XBZQRZ6G.js → chunk-TN7THW5U.js} +2 -2
- package/dist/{chunk-JRZV3767.js → chunk-UI4FVU6T.js} +2 -2
- package/dist/{chunk-VGUOEDTU.js → chunk-V3UE5I5F.js} +2 -2
- package/dist/{chunk-7WV3F5DQ.js → chunk-V7IZKJI3.js} +2 -2
- package/dist/{chunk-VL7DP3OW.js → chunk-VFSP73LP.js} +2 -2
- package/dist/{chunk-C2DDH5UN.js → chunk-X4A62ET7.js} +14 -14
- package/dist/{chunk-WRBDUNSW.js → chunk-XN3TUUX2.js} +3 -3
- package/dist/{chunk-NNL4LJAD.js → chunk-XZ5I7OZR.js} +5 -5
- package/dist/{chunk-K2I3AWBR.js → chunk-YDSWRD33.js} +5 -5
- package/dist/{chunk-3NN73CM7.js → chunk-YFBTVOMB.js} +3 -3
- package/dist/{chunk-44YXWE35.js → chunk-YPEMNNNY.js} +2 -2
- package/dist/{chunk-ZZMRXJFY.js → chunk-ZIDSD6VC.js} +2 -2
- package/dist/{chunk-BMANIB5B.js → chunk-ZPOROUTX.js} +3 -3
- package/dist/{cli-Dfnc66gs.d.ts → cli-EiBBOt3r.d.ts} +3 -3
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +74 -73
- package/dist/compounding/engine.d.ts +1 -1
- package/dist/compounding/engine.js +13 -13
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compounding/preference-consolidator.js +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +13 -13
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +14 -14
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +1 -1
- package/dist/contradiction/index.js +3 -3
- package/dist/{contradiction-scan-3FJYWS3G.js → contradiction-scan-SSKCAMLX.js} +3 -3
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/backend.js +5 -5
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/cleanup.js +2 -2
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.js +2 -2
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/indexer.js +2 -2
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/conversation-index/search.js +2 -2
- package/dist/day-summary.d.ts +1 -1
- package/dist/day-summary.js +2 -2
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +13 -13
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +4 -4
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-faithfulness.js +5 -5
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-telemetry.js +2 -2
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge-training.js +2 -2
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction-judge.js +5 -5
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +9 -9
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/fallback-llm.js +4 -4
- package/dist/{forget-OEE5OELK.js → forget-KHF7A44H.js} +3 -3
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/{graph-edge-decay-RXUCJIN4.js → graph-edge-decay-FO7AM4UR.js} +3 -3
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph-snapshot.js +2 -2
- package/dist/graph.d.ts +1 -1
- package/dist/graph.js +1 -1
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +17 -12
- package/dist/index.js +124 -123
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/archive.js +2 -2
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +7 -7
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +9 -9
- package/dist/lcm/schema.js +3 -3
- package/dist/lcm/summarizer.js +3 -3
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/logger.d.ts +8 -2
- package/dist/logger.js +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +12 -12
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +12 -12
- package/dist/maintenance/rebuild-memory-projection.js +14 -14
- package/dist/mcp-memory-inspector-app.d.ts +5 -5
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +23 -3
- package/dist/memory-projection-store.js +9 -2
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/model-registry.js +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/models-json.js +2 -2
- package/dist/namespaces/migrate.d.ts +2 -2
- package/dist/namespaces/migrate.js +27 -26
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +15 -14
- package/dist/namespaces/storage.d.ts +2 -2
- package/dist/namespaces/storage.js +12 -12
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/native-knowledge.js +2 -2
- package/dist/negative.js +2 -2
- package/dist/operator-toolkit.d.ts +11 -2
- package/dist/operator-toolkit.js +36 -33
- package/dist/orchestration/compression-guideline-coordinator.d.ts +1 -1
- package/dist/orchestration/compression-guideline-coordinator.js +2 -2
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +14 -14
- package/dist/{orchestrator-Y9wyG4jK.d.ts → orchestrator-B2Y28Z9t.d.ts} +3 -3
- package/dist/orchestrator.d.ts +4 -4
- package/dist/orchestrator.js +109 -108
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/profiling.js +2 -2
- package/dist/provenance.d.ts +1 -1
- package/dist/{purge-IHRX4Z7X.js → purge-NDWV6WYD.js} +4 -3
- package/dist/{purge-IHRX4Z7X.js.map → purge-NDWV6WYD.js.map} +1 -1
- package/dist/qmd-Db9mOkzB.d.ts +330 -0
- package/dist/qmd-preflight.d.ts +5 -0
- package/dist/qmd-preflight.js +31 -0
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +3 -305
- package/dist/qmd.js +11 -9
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-planner-llm.js +4 -4
- package/dist/recall-qos.js +2 -2
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-state.js +2 -2
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray.d.ts +1 -1
- package/dist/relevance.js +2 -2
- package/dist/{resolution-33PIX3TT.js → resolution-VH4NGENZ.js} +3 -3
- package/dist/resolution-VH4NGENZ.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +4 -4
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-agents.js +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/routing/store.js +2 -2
- package/dist/runtime/better-sqlite.d.ts +17 -1
- package/dist/runtime/better-sqlite.js +5 -3
- package/dist/schemas.d.ts +22 -22
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/embed-helper.js +2 -2
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +14 -13
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +18 -17
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/lancedb-backend.js +3 -3
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.js +3 -3
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/orama-backend.js +3 -3
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/search/remote-backend.js +2 -2
- package/dist/{semantic-consolidation-bfXJNKVf.d.ts → semantic-consolidation-BDVIbLRw.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +14 -14
- package/dist/semantic-rule-promotion.js +12 -12
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +12 -12
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/session-observer-state.js +2 -2
- package/dist/session-transcript-migration.js +3 -3
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/shared-context/manager.js +2 -2
- package/dist/signal.d.ts +1 -1
- package/dist/storage-guards.js +2 -2
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +11 -11
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +7 -7
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/temporal-supersession.js +2 -2
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/threading.js +2 -2
- package/dist/tier-migration.d.ts +1 -1
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transcript.js +2 -2
- package/dist/transfer/autodetect.js +1 -1
- package/dist/transfer/backup.js +1 -1
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/export-sqlite.js +2 -2
- package/dist/transfer/import-sqlite.js +2 -2
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-D1iBqhJA.d.ts → types-ljkd82rn.d.ts} +13 -1
- package/dist/types.d.ts +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +13 -13
- package/package.json +2 -2
- package/src/logger.test.ts +120 -0
- package/src/logger.ts +37 -9
- package/src/memory-projection-open-failure.test.ts +322 -0
- package/src/memory-projection-store.ts +179 -2
- package/src/operator-toolkit.ts +64 -0
- package/src/qmd-preflight.test.ts +197 -0
- package/src/qmd-preflight.ts +167 -0
- package/src/qmd.ts +115 -129
- package/src/runtime/better-sqlite.test.ts +54 -0
- package/src/runtime/better-sqlite.ts +83 -3
- package/src/wearables/cleanup.test.ts +56 -0
- package/src/wearables/cleanup.ts +22 -1
- package/src/wearables/config.test.ts +25 -0
- package/src/wearables/config.ts +31 -4
- package/src/wearables/types.ts +12 -1
- package/dist/chunk-27CQIO7T.js.map +0 -1
- package/dist/chunk-6KYMPV2O.js.map +0 -1
- package/dist/chunk-IBAU2RZN.js.map +0 -1
- package/dist/chunk-MYNRJGOY.js.map +0 -1
- package/dist/chunk-NU3CSQ4H.js +0 -48
- package/dist/chunk-NU3CSQ4H.js.map +0 -1
- package/dist/chunk-SXN3LCUT.js.map +0 -1
- /package/dist/{auto-sync-2SOUW4JW.js.map → auto-sync-HMHQHUAG.js.map} +0 -0
- /package/dist/{chunk-PSNMICC2.js.map → chunk-27FLVMDC.js.map} +0 -0
- /package/dist/{chunk-7FL4CNPV.js.map → chunk-2A3OXAP2.js.map} +0 -0
- /package/dist/{chunk-U5HD7BB2.js.map → chunk-2FOD2YY3.js.map} +0 -0
- /package/dist/{chunk-GG6AJN7A.js.map → chunk-2IZAGAJR.js.map} +0 -0
- /package/dist/{chunk-6Y4JTNX7.js.map → chunk-2MR3MFQB.js.map} +0 -0
- /package/dist/{chunk-AU7Q3LSC.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-7OSULYN2.js.map → chunk-4BFRBP45.js.map} +0 -0
- /package/dist/{chunk-DQC3ZZYM.js.map → chunk-4KJLYTLS.js.map} +0 -0
- /package/dist/{chunk-DMKMQTBH.js.map → chunk-4P4626RY.js.map} +0 -0
- /package/dist/{chunk-GY3SKOS4.js.map → chunk-5EZXHU36.js.map} +0 -0
- /package/dist/{chunk-OW4UXZNP.js.map → chunk-5QZDMSSN.js.map} +0 -0
- /package/dist/{chunk-OTMAYEY5.js.map → chunk-66FLU5BT.js.map} +0 -0
- /package/dist/{chunk-J2QYB2D5.js.map → chunk-6BISDEN6.js.map} +0 -0
- /package/dist/{chunk-CXBFYSQY.js.map → chunk-6ZIETXZ2.js.map} +0 -0
- /package/dist/{chunk-KYYL4U6X.js.map → chunk-7N2RUBAP.js.map} +0 -0
- /package/dist/{chunk-U3TRHUSJ.js.map → chunk-7QWMTOIF.js.map} +0 -0
- /package/dist/{chunk-L24JROPR.js.map → chunk-7WSLR2CU.js.map} +0 -0
- /package/dist/{chunk-EXM3CQTZ.js.map → chunk-A3GOMRJG.js.map} +0 -0
- /package/dist/{chunk-DCWIQFNA.js.map → chunk-AKUCU7CI.js.map} +0 -0
- /package/dist/{chunk-XHYGJVXL.js.map → chunk-AXTXN4T6.js.map} +0 -0
- /package/dist/{chunk-L42FA4BU.js.map → chunk-BGTAL46Y.js.map} +0 -0
- /package/dist/{chunk-5QANTTY2.js.map → chunk-BRDJ2HFP.js.map} +0 -0
- /package/dist/{chunk-7VFZTJ7K.js.map → chunk-BV2TIZ4F.js.map} +0 -0
- /package/dist/{chunk-QMN3CIFS.js.map → chunk-CGS7UKWM.js.map} +0 -0
- /package/dist/{chunk-LZ73Y56P.js.map → chunk-CLX5VDNY.js.map} +0 -0
- /package/dist/{chunk-KYC3RLYJ.js.map → chunk-CXLNZXG5.js.map} +0 -0
- /package/dist/{chunk-YOELDDBF.js.map → chunk-CZAA5N5S.js.map} +0 -0
- /package/dist/{chunk-XG4NBBRW.js.map → chunk-CZAZX7JP.js.map} +0 -0
- /package/dist/{chunk-QOGXUNWL.js.map → chunk-CZGIIADK.js.map} +0 -0
- /package/dist/{chunk-QRDOSYOR.js.map → chunk-DBRYEIGY.js.map} +0 -0
- /package/dist/{chunk-6QODJKOV.js.map → chunk-DGYCWCQ7.js.map} +0 -0
- /package/dist/{chunk-RFZW7NID.js.map → chunk-DR6PEJU3.js.map} +0 -0
- /package/dist/{chunk-UC4YOAC2.js.map → chunk-E5BK6CGV.js.map} +0 -0
- /package/dist/{chunk-TKZ3AL5V.js.map → chunk-EHK6KZHK.js.map} +0 -0
- /package/dist/{chunk-X5NUL5N4.js.map → chunk-EPGWWCZF.js.map} +0 -0
- /package/dist/{chunk-JZ7P26GF.js.map → chunk-F53UF7CI.js.map} +0 -0
- /package/dist/{chunk-SJHM6I4J.js.map → chunk-FC77VUX5.js.map} +0 -0
- /package/dist/{chunk-DKTSR7EK.js.map → chunk-FDPZVY6D.js.map} +0 -0
- /package/dist/{chunk-OUXPVWTZ.js.map → chunk-FLVL4L3L.js.map} +0 -0
- /package/dist/{chunk-ZI3YYOOV.js.map → chunk-FZGGZAAU.js.map} +0 -0
- /package/dist/{chunk-TQT3USCG.js.map → chunk-HG32URJJ.js.map} +0 -0
- /package/dist/{chunk-ZQNCHPTZ.js.map → chunk-HLTAPHZZ.js.map} +0 -0
- /package/dist/{chunk-LU7ATMRV.js.map → chunk-HRCACVHL.js.map} +0 -0
- /package/dist/{chunk-LOPZ2DWR.js.map → chunk-I73G4UH7.js.map} +0 -0
- /package/dist/{chunk-MJE4XV4A.js.map → chunk-IC6QX5TC.js.map} +0 -0
- /package/dist/{chunk-27TJRC2Y.js.map → chunk-ILFJ7AVS.js.map} +0 -0
- /package/dist/{chunk-VUA4S7P6.js.map → chunk-JIKJPDQJ.js.map} +0 -0
- /package/dist/{chunk-BKTC7JCA.js.map → chunk-JLR3JSTL.js.map} +0 -0
- /package/dist/{chunk-VQ34TERH.js.map → chunk-JZHHREBL.js.map} +0 -0
- /package/dist/{chunk-IQVQJJL7.js.map → chunk-K2ZLHESQ.js.map} +0 -0
- /package/dist/{chunk-PWFWCGOO.js.map → chunk-KAWTOYAW.js.map} +0 -0
- /package/dist/{chunk-YRZMCPC5.js.map → chunk-KCJ5H6XQ.js.map} +0 -0
- /package/dist/{chunk-DJECGBBM.js.map → chunk-KQDNAXOM.js.map} +0 -0
- /package/dist/{chunk-WIWPSQYU.js.map → chunk-KQPJLK3X.js.map} +0 -0
- /package/dist/{chunk-XNWLD3RR.js.map → chunk-LOR6ZM5R.js.map} +0 -0
- /package/dist/{chunk-EGLUVV6B.js.map → chunk-M7GGMGMZ.js.map} +0 -0
- /package/dist/{chunk-YTU7WKYN.js.map → chunk-MNUHL34L.js.map} +0 -0
- /package/dist/{chunk-ZCWIH4LH.js.map → chunk-MRHFJV44.js.map} +0 -0
- /package/dist/{chunk-W4H5A3TJ.js.map → chunk-MTR7BZQN.js.map} +0 -0
- /package/dist/{chunk-PNLCEFE4.js.map → chunk-MTWKDOVO.js.map} +0 -0
- /package/dist/{chunk-TECYUPFB.js.map → chunk-NG7YBCJO.js.map} +0 -0
- /package/dist/{chunk-OSMBC3JU.js.map → chunk-O2EL7EGG.js.map} +0 -0
- /package/dist/{chunk-HW5EF6LV.js.map → chunk-O7BBFJLP.js.map} +0 -0
- /package/dist/{chunk-EHQ5HO5T.js.map → chunk-OBMR4VIX.js.map} +0 -0
- /package/dist/{chunk-VFHDUFH5.js.map → chunk-OHDJ34CC.js.map} +0 -0
- /package/dist/{chunk-6SHAUM5S.js.map → chunk-OUMTBFSQ.js.map} +0 -0
- /package/dist/{chunk-EEKDRAWX.js.map → chunk-PRTA6444.js.map} +0 -0
- /package/dist/{chunk-IQ7WCZRW.js.map → chunk-PUBTHW5O.js.map} +0 -0
- /package/dist/{chunk-AGNBY3VG.js.map → chunk-PYHOAXTI.js.map} +0 -0
- /package/dist/{chunk-UUH4YQOF.js.map → chunk-QLULYKWZ.js.map} +0 -0
- /package/dist/{chunk-DBSMLRTO.js.map → chunk-QT2RZNRT.js.map} +0 -0
- /package/dist/{chunk-HM6UJPPO.js.map → chunk-QWGNDWKB.js.map} +0 -0
- /package/dist/{chunk-KCQA46NR.js.map → chunk-R5VAVVHP.js.map} +0 -0
- /package/dist/{chunk-O7GOFAM3.js.map → chunk-RP7YXA67.js.map} +0 -0
- /package/dist/{chunk-BVKCV2ZY.js.map → chunk-SMX5267P.js.map} +0 -0
- /package/dist/{chunk-XBZQRZ6G.js.map → chunk-TN7THW5U.js.map} +0 -0
- /package/dist/{chunk-JRZV3767.js.map → chunk-UI4FVU6T.js.map} +0 -0
- /package/dist/{chunk-VGUOEDTU.js.map → chunk-V3UE5I5F.js.map} +0 -0
- /package/dist/{chunk-7WV3F5DQ.js.map → chunk-V7IZKJI3.js.map} +0 -0
- /package/dist/{chunk-VL7DP3OW.js.map → chunk-VFSP73LP.js.map} +0 -0
- /package/dist/{chunk-C2DDH5UN.js.map → chunk-X4A62ET7.js.map} +0 -0
- /package/dist/{chunk-WRBDUNSW.js.map → chunk-XN3TUUX2.js.map} +0 -0
- /package/dist/{chunk-NNL4LJAD.js.map → chunk-XZ5I7OZR.js.map} +0 -0
- /package/dist/{chunk-K2I3AWBR.js.map → chunk-YDSWRD33.js.map} +0 -0
- /package/dist/{chunk-3NN73CM7.js.map → chunk-YFBTVOMB.js.map} +0 -0
- /package/dist/{chunk-44YXWE35.js.map → chunk-YPEMNNNY.js.map} +0 -0
- /package/dist/{chunk-ZZMRXJFY.js.map → chunk-ZIDSD6VC.js.map} +0 -0
- /package/dist/{chunk-BMANIB5B.js.map → chunk-ZPOROUTX.js.map} +0 -0
- /package/dist/{contradiction-scan-3FJYWS3G.js.map → contradiction-scan-SSKCAMLX.js.map} +0 -0
- /package/dist/{forget-OEE5OELK.js.map → forget-KHF7A44H.js.map} +0 -0
- /package/dist/{graph-edge-decay-RXUCJIN4.js.map → graph-edge-decay-FO7AM4UR.js.map} +0 -0
- /package/dist/{resolution-33PIX3TT.js.map → qmd-preflight.js.map} +0 -0
package/dist/orchestrator.js
CHANGED
|
@@ -43,12 +43,12 @@ import {
|
|
|
43
43
|
throwIfRecallAborted,
|
|
44
44
|
tokenizeRecallQuery,
|
|
45
45
|
utcDateKeysForLocalDay
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-5QZDMSSN.js";
|
|
47
|
+
import "./chunk-2U2A5HF4.js";
|
|
48
48
|
import {
|
|
49
49
|
formatCompressionGuidelinesForRecall
|
|
50
|
-
} from "./chunk-
|
|
51
|
-
import "./chunk-
|
|
50
|
+
} from "./chunk-BRDJ2HFP.js";
|
|
51
|
+
import "./chunk-6ZIETXZ2.js";
|
|
52
52
|
import "./chunk-I74SUMNI.js";
|
|
53
53
|
import "./chunk-ILNPU5W5.js";
|
|
54
54
|
import "./chunk-7HYPN2GC.js";
|
|
@@ -57,20 +57,21 @@ import "./chunk-KBL3JJR6.js";
|
|
|
57
57
|
import "./chunk-ABP6QMVM.js";
|
|
58
58
|
import "./chunk-HHLLAQGZ.js";
|
|
59
59
|
import "./chunk-UWK5OXUJ.js";
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-
|
|
63
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-CLX5VDNY.js";
|
|
61
|
+
import "./chunk-KCYE2MZM.js";
|
|
62
|
+
import "./chunk-7N2RUBAP.js";
|
|
63
|
+
import "./chunk-MTR7BZQN.js";
|
|
64
|
+
import "./chunk-O7BBFJLP.js";
|
|
64
65
|
import "./chunk-7N4KAIGN.js";
|
|
65
66
|
import "./chunk-TPDBFYEG.js";
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-QMN3CIFS.js";
|
|
67
|
+
import "./chunk-CGS7UKWM.js";
|
|
68
68
|
import "./chunk-V5OCT34X.js";
|
|
69
69
|
import "./chunk-TECVW3JP.js";
|
|
70
|
-
import "./chunk-
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
70
|
+
import "./chunk-RP7YXA67.js";
|
|
71
|
+
import "./chunk-CZAA5N5S.js";
|
|
72
|
+
import "./chunk-UI4FVU6T.js";
|
|
73
73
|
import "./chunk-LXOM6IQU.js";
|
|
74
|
+
import "./chunk-E2SPGGUI.js";
|
|
74
75
|
import "./chunk-UHGBNIOS.js";
|
|
75
76
|
import "./chunk-BCDKBDSY.js";
|
|
76
77
|
import "./chunk-YN2UN7N3.js";
|
|
@@ -78,40 +79,39 @@ import "./chunk-4EX5WZ4M.js";
|
|
|
78
79
|
import "./chunk-VOUOLGIP.js";
|
|
79
80
|
import "./chunk-S75M5ZRK.js";
|
|
80
81
|
import "./chunk-ECZU5BJH.js";
|
|
81
|
-
import "./chunk-
|
|
82
|
-
import "./chunk-NNL4LJAD.js";
|
|
82
|
+
import "./chunk-XZ5I7OZR.js";
|
|
83
83
|
import "./chunk-3FAMU5TX.js";
|
|
84
84
|
import "./chunk-4SBW47WK.js";
|
|
85
|
-
import "./chunk-
|
|
85
|
+
import "./chunk-FDPZVY6D.js";
|
|
86
86
|
import "./chunk-L6W77GWW.js";
|
|
87
|
-
import "./chunk-
|
|
87
|
+
import "./chunk-7WSLR2CU.js";
|
|
88
88
|
import "./chunk-MGN7VHWQ.js";
|
|
89
89
|
import "./chunk-5IZL4DCV.js";
|
|
90
90
|
import "./chunk-X7XN6YU4.js";
|
|
91
|
-
import "./chunk-
|
|
91
|
+
import "./chunk-2IZAGAJR.js";
|
|
92
92
|
import "./chunk-E3VODCC3.js";
|
|
93
|
-
import "./chunk-VQ34TERH.js";
|
|
94
|
-
import "./chunk-UC4YOAC2.js";
|
|
95
|
-
import "./chunk-ZZTOURJI.js";
|
|
96
93
|
import "./chunk-YDBIWGNI.js";
|
|
94
|
+
import "./chunk-JZHHREBL.js";
|
|
95
|
+
import "./chunk-E5BK6CGV.js";
|
|
96
|
+
import "./chunk-ZZTOURJI.js";
|
|
97
97
|
import "./chunk-3GPTTA4J.js";
|
|
98
98
|
import "./chunk-IISBCCWR.js";
|
|
99
|
-
import "./chunk-
|
|
99
|
+
import "./chunk-A3GOMRJG.js";
|
|
100
100
|
import "./chunk-H63EDPFJ.js";
|
|
101
101
|
import "./chunk-VU3SVYMA.js";
|
|
102
102
|
import "./chunk-YAZNBMNF.js";
|
|
103
103
|
import "./chunk-PD6O7AXF.js";
|
|
104
104
|
import "./chunk-PHRLJFWZ.js";
|
|
105
105
|
import "./chunk-64NJRYU2.js";
|
|
106
|
-
import "./chunk-
|
|
107
|
-
import "./chunk-
|
|
106
|
+
import "./chunk-AXTXN4T6.js";
|
|
107
|
+
import "./chunk-YFBTVOMB.js";
|
|
108
108
|
import "./chunk-LTHVM4XN.js";
|
|
109
|
-
import "./chunk-
|
|
109
|
+
import "./chunk-CZGIIADK.js";
|
|
110
110
|
import "./chunk-4RA3C3EV.js";
|
|
111
111
|
import "./chunk-5GSUBCZM.js";
|
|
112
112
|
import "./chunk-54V4BZWP.js";
|
|
113
|
-
import "./chunk-
|
|
114
|
-
import "./chunk-
|
|
113
|
+
import "./chunk-KAWTOYAW.js";
|
|
114
|
+
import "./chunk-QT2RZNRT.js";
|
|
115
115
|
import "./chunk-LZTFCAKE.js";
|
|
116
116
|
import "./chunk-FIOYURII.js";
|
|
117
117
|
import "./chunk-IAIPNEHD.js";
|
|
@@ -119,60 +119,60 @@ import "./chunk-4463LUIE.js";
|
|
|
119
119
|
import "./chunk-YVVQUAOO.js";
|
|
120
120
|
import "./chunk-LUPVCGYK.js";
|
|
121
121
|
import "./chunk-PYPOFEMK.js";
|
|
122
|
-
import "./chunk-
|
|
122
|
+
import "./chunk-I73G4UH7.js";
|
|
123
123
|
import "./chunk-VEWZZM3H.js";
|
|
124
124
|
import "./chunk-Q6IP2ARR.js";
|
|
125
125
|
import "./chunk-6HEM6HTQ.js";
|
|
126
|
-
import "./chunk-
|
|
127
|
-
import "./chunk-
|
|
128
|
-
import "./chunk-
|
|
126
|
+
import "./chunk-O2EL7EGG.js";
|
|
127
|
+
import "./chunk-ZPOROUTX.js";
|
|
128
|
+
import "./chunk-7QWMTOIF.js";
|
|
129
129
|
import "./chunk-MC4FJXPA.js";
|
|
130
130
|
import "./chunk-LQHDIS7L.js";
|
|
131
131
|
import "./chunk-7F7Z6MOS.js";
|
|
132
132
|
import "./chunk-JJEJJ7RK.js";
|
|
133
|
+
import "./chunk-PYHOAXTI.js";
|
|
133
134
|
import "./chunk-UP6MOYCB.js";
|
|
134
|
-
import "./chunk-
|
|
135
|
-
import "./chunk-HDDRVXX4.js";
|
|
136
|
-
import "./chunk-AGNBY3VG.js";
|
|
135
|
+
import "./chunk-BV2TIZ4F.js";
|
|
137
136
|
import "./chunk-Z734BLO3.js";
|
|
137
|
+
import "./chunk-HDDRVXX4.js";
|
|
138
138
|
import "./chunk-OZKVVUJB.js";
|
|
139
139
|
import "./chunk-2DL3OFLD.js";
|
|
140
140
|
import "./chunk-G4IAEX6D.js";
|
|
141
141
|
import "./chunk-2BFLDH5F.js";
|
|
142
142
|
import "./chunk-765K3SAT.js";
|
|
143
|
-
import "./chunk-WIWPSQYU.js";
|
|
144
|
-
import "./chunk-EEC4PCG5.js";
|
|
145
|
-
import "./chunk-PYIFUBRK.js";
|
|
146
143
|
import "./chunk-HOJZMQ4J.js";
|
|
147
144
|
import "./chunk-2PRQG7PV.js";
|
|
148
|
-
import "./chunk-
|
|
149
|
-
import "./chunk-
|
|
145
|
+
import "./chunk-KQPJLK3X.js";
|
|
146
|
+
import "./chunk-EEC4PCG5.js";
|
|
147
|
+
import "./chunk-PYIFUBRK.js";
|
|
148
|
+
import "./chunk-D6RIFG4O.js";
|
|
149
|
+
import "./chunk-HRCACVHL.js";
|
|
150
|
+
import "./chunk-6BISDEN6.js";
|
|
150
151
|
import "./chunk-LZZNTPLR.js";
|
|
152
|
+
import "./chunk-JCK7V6SN.js";
|
|
151
153
|
import "./chunk-WMWVO45V.js";
|
|
152
154
|
import "./chunk-KJTKLXTH.js";
|
|
153
|
-
import "./chunk-D6RIFG4O.js";
|
|
154
|
-
import "./chunk-JCK7V6SN.js";
|
|
155
155
|
import "./chunk-GQL52GQ5.js";
|
|
156
156
|
import "./chunk-CKITWVWJ.js";
|
|
157
157
|
import "./chunk-OUELRE5E.js";
|
|
158
|
-
import "./chunk-OTMAYEY5.js";
|
|
159
158
|
import "./chunk-2F6NP3NT.js";
|
|
160
159
|
import "./chunk-TERNBNJB.js";
|
|
161
|
-
import "./chunk-
|
|
162
|
-
import "./chunk-
|
|
163
|
-
import "./chunk-
|
|
164
|
-
import "./chunk-
|
|
160
|
+
import "./chunk-66FLU5BT.js";
|
|
161
|
+
import "./chunk-DBRYEIGY.js";
|
|
162
|
+
import "./chunk-OHDJ34CC.js";
|
|
163
|
+
import "./chunk-YPEMNNNY.js";
|
|
164
|
+
import "./chunk-TGQ2NTWH.js";
|
|
165
|
+
import "./chunk-XN3TUUX2.js";
|
|
165
166
|
import "./chunk-ZRWB5D4H.js";
|
|
166
|
-
import "./chunk-
|
|
167
|
+
import "./chunk-5EZXHU36.js";
|
|
167
168
|
import "./chunk-DANV2HTH.js";
|
|
168
|
-
import "./chunk-TGQ2NTWH.js";
|
|
169
169
|
import "./chunk-SFQ6QNL7.js";
|
|
170
170
|
import "./chunk-3T74IZB3.js";
|
|
171
171
|
import "./chunk-33JBK2XP.js";
|
|
172
|
-
import "./chunk-
|
|
173
|
-
import "./chunk-
|
|
174
|
-
import "./chunk-
|
|
175
|
-
import "./chunk-
|
|
172
|
+
import "./chunk-P6SYWE4G.js";
|
|
173
|
+
import "./chunk-LOR6ZM5R.js";
|
|
174
|
+
import "./chunk-JLR3JSTL.js";
|
|
175
|
+
import "./chunk-BGTAL46Y.js";
|
|
176
176
|
import "./chunk-KFY3SGN7.js";
|
|
177
177
|
import "./chunk-CMTINOFS.js";
|
|
178
178
|
import "./chunk-HL4DB7TO.js";
|
|
@@ -181,8 +181,8 @@ import "./chunk-6GUG4YNM.js";
|
|
|
181
181
|
import "./chunk-AV5ZEH4M.js";
|
|
182
182
|
import "./chunk-JXS5PDQ7.js";
|
|
183
183
|
import "./chunk-3PY7VHV7.js";
|
|
184
|
-
import "./chunk-
|
|
185
|
-
import "./chunk-
|
|
184
|
+
import "./chunk-SMX5267P.js";
|
|
185
|
+
import "./chunk-MRHFJV44.js";
|
|
186
186
|
import "./chunk-OKTXM5H4.js";
|
|
187
187
|
import "./chunk-7XH7VJN4.js";
|
|
188
188
|
import "./chunk-FZZ2QTJI.js";
|
|
@@ -193,22 +193,22 @@ import "./chunk-Y4Z4I6WK.js";
|
|
|
193
193
|
import "./chunk-LMDRGRJ2.js";
|
|
194
194
|
import "./chunk-OD4FM2U7.js";
|
|
195
195
|
import "./chunk-3I4FUAVJ.js";
|
|
196
|
-
import "./chunk-
|
|
197
|
-
import "./chunk-
|
|
198
|
-
import "./chunk-
|
|
196
|
+
import "./chunk-EPGWWCZF.js";
|
|
197
|
+
import "./chunk-KCJ5H6XQ.js";
|
|
198
|
+
import "./chunk-QLULYKWZ.js";
|
|
199
199
|
import "./chunk-JLNBQWZ2.js";
|
|
200
200
|
import "./chunk-3UXOZBHV.js";
|
|
201
201
|
import "./chunk-KD3QD3A5.js";
|
|
202
|
-
import "./chunk-
|
|
203
|
-
import "./chunk-
|
|
202
|
+
import "./chunk-V3UE5I5F.js";
|
|
203
|
+
import "./chunk-2A3OXAP2.js";
|
|
204
204
|
import "./chunk-YBPYIAA5.js";
|
|
205
205
|
import "./chunk-66SLUXKM.js";
|
|
206
206
|
import "./chunk-P4BC54KI.js";
|
|
207
207
|
import "./chunk-UQ7RN5HK.js";
|
|
208
|
-
import "./chunk-
|
|
208
|
+
import "./chunk-F53UF7CI.js";
|
|
209
209
|
import "./chunk-H3FZVNRN.js";
|
|
210
210
|
import "./chunk-PI23H7FV.js";
|
|
211
|
-
import "./chunk-
|
|
211
|
+
import "./chunk-7Z2DZNWN.js";
|
|
212
212
|
import "./chunk-NDAH7BJ5.js";
|
|
213
213
|
import "./chunk-Z5LAYHGJ.js";
|
|
214
214
|
import "./chunk-G6NKALRN.js";
|
|
@@ -216,38 +216,38 @@ import "./chunk-OO42R444.js";
|
|
|
216
216
|
import "./chunk-K6MV3TRQ.js";
|
|
217
217
|
import "./chunk-LBJBNWS2.js";
|
|
218
218
|
import "./chunk-OADWQ5CR.js";
|
|
219
|
-
import "./chunk-
|
|
220
|
-
import "./chunk-
|
|
219
|
+
import "./chunk-2FOD2YY3.js";
|
|
220
|
+
import "./chunk-V7IZKJI3.js";
|
|
221
221
|
import "./chunk-SEDEKFYQ.js";
|
|
222
|
-
import "./chunk-
|
|
222
|
+
import "./chunk-2QSZNTDO.js";
|
|
223
|
+
import "./chunk-RSUYKGGZ.js";
|
|
223
224
|
import "./chunk-42NQ7AVG.js";
|
|
224
225
|
import "./chunk-TMSXWOBZ.js";
|
|
225
226
|
import "./chunk-J64TK33U.js";
|
|
226
|
-
import "./chunk-RSUYKGGZ.js";
|
|
227
227
|
import "./chunk-7RXCMVFQ.js";
|
|
228
|
-
import "./chunk-
|
|
228
|
+
import "./chunk-DR6PEJU3.js";
|
|
229
229
|
import "./chunk-D24OXEPB.js";
|
|
230
230
|
import "./chunk-5RUE3GHQ.js";
|
|
231
|
-
import "./chunk-
|
|
232
|
-
import "./chunk-
|
|
233
|
-
import "./chunk-
|
|
231
|
+
import "./chunk-NG7YBCJO.js";
|
|
232
|
+
import "./chunk-2MR3MFQB.js";
|
|
233
|
+
import "./chunk-ILFJ7AVS.js";
|
|
234
234
|
import "./chunk-YF6FMLBT.js";
|
|
235
|
-
import "./chunk-
|
|
236
|
-
import "./chunk-
|
|
237
|
-
import "./chunk-
|
|
235
|
+
import "./chunk-HLTAPHZZ.js";
|
|
236
|
+
import "./chunk-PRTA6444.js";
|
|
237
|
+
import "./chunk-KQDNAXOM.js";
|
|
238
238
|
import "./chunk-35NN3ZFA.js";
|
|
239
239
|
import "./chunk-FTYDWKO6.js";
|
|
240
240
|
import "./chunk-T4WDJPEZ.js";
|
|
241
|
-
import "./chunk-
|
|
242
|
-
import "./chunk-
|
|
241
|
+
import "./chunk-FZGGZAAU.js";
|
|
242
|
+
import "./chunk-X4A62ET7.js";
|
|
243
243
|
import "./chunk-GDASG7NC.js";
|
|
244
244
|
import "./chunk-GDB4J2H3.js";
|
|
245
|
-
import "./chunk-64SE4X5G.js";
|
|
246
245
|
import "./chunk-M5QKGHCR.js";
|
|
246
|
+
import "./chunk-64SE4X5G.js";
|
|
247
247
|
import "./chunk-VQ7B2Q6M.js";
|
|
248
248
|
import "./chunk-ERA5RSMZ.js";
|
|
249
249
|
import "./chunk-JGSKJHF7.js";
|
|
250
|
-
import "./chunk-
|
|
250
|
+
import "./chunk-PUBTHW5O.js";
|
|
251
251
|
import "./chunk-S4DDLTPX.js";
|
|
252
252
|
import "./chunk-FF4KLI5W.js";
|
|
253
253
|
import "./chunk-BT7NVCML.js";
|
|
@@ -259,77 +259,78 @@ import "./chunk-ICP53SKG.js";
|
|
|
259
259
|
import "./chunk-AQEJKOKI.js";
|
|
260
260
|
import "./chunk-6HMYUWXR.js";
|
|
261
261
|
import "./chunk-BAVVI5GP.js";
|
|
262
|
-
import "./chunk-
|
|
263
|
-
import "./chunk-
|
|
264
|
-
import "./chunk-
|
|
265
|
-
import "./chunk-
|
|
262
|
+
import "./chunk-4BFRBP45.js";
|
|
263
|
+
import "./chunk-27FLVMDC.js";
|
|
264
|
+
import "./chunk-ZIDSD6VC.js";
|
|
265
|
+
import "./chunk-QWGNDWKB.js";
|
|
266
|
+
import "./chunk-YDSWRD33.js";
|
|
267
|
+
import "./chunk-4P4626RY.js";
|
|
266
268
|
import "./chunk-CYEPCZN5.js";
|
|
267
|
-
import "./chunk-
|
|
268
|
-
import "./chunk-ZZMRXJFY.js";
|
|
269
|
-
import "./chunk-AER6MT24.js";
|
|
270
|
-
import "./chunk-HM6UJPPO.js";
|
|
269
|
+
import "./chunk-CZAZX7JP.js";
|
|
271
270
|
import "./chunk-CINZGPSJ.js";
|
|
271
|
+
import "./chunk-AER6MT24.js";
|
|
272
272
|
import "./chunk-EGGE52UU.js";
|
|
273
|
-
import "./chunk-
|
|
274
|
-
import "./chunk-
|
|
275
|
-
import "./chunk-
|
|
276
|
-
import "./chunk-
|
|
277
|
-
import "./chunk-
|
|
278
|
-
import "./chunk-
|
|
273
|
+
import "./chunk-IC6QX5TC.js";
|
|
274
|
+
import "./chunk-AKUCU7CI.js";
|
|
275
|
+
import "./chunk-FC77VUX5.js";
|
|
276
|
+
import "./chunk-TN7THW5U.js";
|
|
277
|
+
import "./chunk-R5VAVVHP.js";
|
|
278
|
+
import "./chunk-3F4N4WDH.js";
|
|
279
279
|
import "./chunk-WU46YPY6.js";
|
|
280
|
+
import "./chunk-64UDOIMI.js";
|
|
280
281
|
import "./chunk-EIR5VLIH.js";
|
|
281
|
-
import "./chunk-
|
|
282
|
+
import "./chunk-HG32URJJ.js";
|
|
282
283
|
import "./chunk-EI6V5UXY.js";
|
|
283
|
-
import "./chunk-
|
|
284
|
+
import "./chunk-MTWKDOVO.js";
|
|
284
285
|
import "./chunk-O75CRYGF.js";
|
|
285
286
|
import "./chunk-QDW3E4RD.js";
|
|
286
287
|
import "./chunk-K5LLP4CY.js";
|
|
287
288
|
import "./chunk-3ONXXHQO.js";
|
|
288
289
|
import "./chunk-ODPLEWB6.js";
|
|
289
290
|
import "./chunk-ZY2MNJR6.js";
|
|
290
|
-
import "./chunk-
|
|
291
|
+
import "./chunk-OBMR4VIX.js";
|
|
291
292
|
import "./chunk-2LSZVONP.js";
|
|
292
293
|
import "./chunk-DEUNUKTD.js";
|
|
293
|
-
import "./chunk-
|
|
294
|
-
import "./chunk-
|
|
295
|
-
import "./chunk-
|
|
296
|
-
import "./chunk-L2B3EE7B.js";
|
|
294
|
+
import "./chunk-CXLNZXG5.js";
|
|
295
|
+
import "./chunk-DGYCWCQ7.js";
|
|
296
|
+
import "./chunk-M7GGMGMZ.js";
|
|
297
297
|
import "./chunk-M7XQSUBB.js";
|
|
298
|
+
import "./chunk-L2B3EE7B.js";
|
|
298
299
|
import "./chunk-5UZXUTVO.js";
|
|
299
300
|
import "./chunk-5GPPACXK.js";
|
|
300
|
-
import "./chunk-
|
|
301
|
+
import "./chunk-EHK6KZHK.js";
|
|
301
302
|
import "./chunk-6CIAGZ6X.js";
|
|
302
303
|
import "./chunk-SVOZFLIQ.js";
|
|
303
304
|
import "./chunk-LTJAMRGI.js";
|
|
304
305
|
import "./chunk-J6A3CX5N.js";
|
|
305
|
-
import "./chunk-
|
|
306
|
+
import "./chunk-4KJLYTLS.js";
|
|
306
307
|
import "./chunk-JS2HKKOK.js";
|
|
307
308
|
import "./chunk-AWJ2FHCF.js";
|
|
308
309
|
import "./chunk-42JKGUFJ.js";
|
|
309
310
|
import "./chunk-RULE4VG5.js";
|
|
310
311
|
import "./chunk-SCU65EZI.js";
|
|
311
|
-
import "./chunk-
|
|
312
|
-
import "./chunk-
|
|
312
|
+
import "./chunk-RHOZ5LLO.js";
|
|
313
|
+
import "./chunk-RL6NEVXT.js";
|
|
313
314
|
import "./chunk-DM2T26WE.js";
|
|
314
315
|
import "./chunk-LDXUBPMO.js";
|
|
315
|
-
import "./chunk-
|
|
316
|
+
import "./chunk-MNUHL34L.js";
|
|
316
317
|
import "./chunk-AAD2ZS6P.js";
|
|
317
318
|
import "./chunk-G7D6GZ5J.js";
|
|
318
319
|
import "./chunk-VF4XKTX3.js";
|
|
319
320
|
import "./chunk-W5H6ZRPT.js";
|
|
320
|
-
import "./chunk-
|
|
321
|
-
import "./chunk-
|
|
321
|
+
import "./chunk-JIKJPDQJ.js";
|
|
322
|
+
import "./chunk-K2ZLHESQ.js";
|
|
322
323
|
import "./chunk-L2EXJQJP.js";
|
|
323
|
-
import "./chunk-
|
|
324
|
+
import "./chunk-VFSP73LP.js";
|
|
324
325
|
import "./chunk-RGMVMVMF.js";
|
|
325
326
|
import "./chunk-N7RWREIQ.js";
|
|
326
|
-
import "./chunk-
|
|
327
|
-
import "./chunk-J4EB7DNW.js";
|
|
327
|
+
import "./chunk-FLVL4L3L.js";
|
|
328
328
|
import "./chunk-WEHSQBFR.js";
|
|
329
329
|
import "./chunk-437S3G37.js";
|
|
330
330
|
import "./chunk-GWTFLF2P.js";
|
|
331
331
|
import "./chunk-UKJAGEXH.js";
|
|
332
332
|
import "./chunk-FP2373TW.js";
|
|
333
|
+
import "./chunk-J4EB7DNW.js";
|
|
333
334
|
import "./chunk-Z2YFLXHU.js";
|
|
334
335
|
import "./chunk-I4WBNM3M.js";
|
|
335
336
|
import "./chunk-SOAU2OE2.js";
|
|
@@ -342,7 +343,7 @@ import "./chunk-5GKPFL3S.js";
|
|
|
342
343
|
import "./chunk-4DJQYKMN.js";
|
|
343
344
|
import "./chunk-EYIEWJNI.js";
|
|
344
345
|
import "./chunk-JUC24CTX.js";
|
|
345
|
-
import "./chunk-
|
|
346
|
+
import "./chunk-37CTGERM.js";
|
|
346
347
|
import "./chunk-X64YLC24.js";
|
|
347
348
|
import "./chunk-UI3NYK34.js";
|
|
348
349
|
import "./chunk-GCGJW34D.js";
|
package/dist/patterns-cli.d.ts
CHANGED
package/dist/policy-runtime.d.ts
CHANGED
package/dist/profiling.js
CHANGED
package/dist/provenance.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as ProvenanceSource,
|
|
1
|
+
import { J as ProvenanceSource, am as ProvenanceConfig, q as MemoryFrontmatter } from './types-ljkd82rn.js';
|
|
2
2
|
import './types-gb_SNtjR.js';
|
|
3
3
|
import './message-parts/index.js';
|
|
4
4
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
markProjectedMemoryPathInvalid
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RHOZ5LLO.js";
|
|
4
|
+
import "./chunk-RL6NEVXT.js";
|
|
5
|
+
import "./chunk-37CTGERM.js";
|
|
5
6
|
import "./chunk-PZ5AY32C.js";
|
|
6
7
|
|
|
7
8
|
// src/maintenance/purge.ts
|
|
@@ -208,4 +209,4 @@ async function purgeMemories(options) {
|
|
|
208
209
|
export {
|
|
209
210
|
purgeMemories
|
|
210
211
|
};
|
|
211
|
-
//# sourceMappingURL=purge-
|
|
212
|
+
//# sourceMappingURL=purge-NDWV6WYD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/maintenance/purge.ts"],"sourcesContent":["/**\n * Operator-facing bulk hard-delete (issue #686 retention-completion).\n *\n * `purgeMemories(opts)` hard-deletes memories that are:\n * - older than `olderThanMs` (measured against `updated ?? created`), AND\n * - in the specified tier (`\"cold\"` or `\"all\"`), AND\n * - optionally in `status: \"forgotten\"` only (when `forgottenOnly` is true)\n *\n * Hard-delete means:\n * 1. Remove the file from disk.\n * 2. Trigger a QMD collection update so the index no longer contains it.\n * 3. Append a purge audit entry to the observation ledger.\n *\n * `dryRun: true` (the default) reports what *would* be deleted without\n * actually removing anything — callers must opt into mutations by\n * setting `dryRun: false`.\n *\n * The CLI surface enforces an explicit `--confirm yes` guard and\n * defaults to `--dry-run` to make accidental data loss impossible.\n */\n\nimport path from \"node:path\";\nimport { appendFile, mkdir, unlink } from \"node:fs/promises\";\nimport type { StorageManager } from \"../storage.js\";\nimport type { MemoryFile } from \"../types.js\";\nimport { markProjectedMemoryPathInvalid } from \"../memory-projection-store.js\";\nimport type { SearchBackend } from \"../search/port.js\";\n\nexport type PurgeTierFilter = \"cold\" | \"all\";\n\nexport interface PurgeMemoriesOptions {\n storage: StorageManager;\n /**\n * Only memories whose `updated ?? created` timestamp is older than this\n * value (in milliseconds, Unix epoch) will be candidates.\n */\n olderThanMs: number;\n /**\n * `\"cold\"` — only memories in the cold tier (files under `.../cold/`).\n * `\"all\"` — memories in any tier (hot, cold, or archived).\n * Default: `\"cold\"`.\n */\n tier?: PurgeTierFilter;\n /**\n * When `true`, only memories with `status === \"forgotten\"` are candidates.\n * Default: `false` (purge by age + tier regardless of status).\n */\n forgottenOnly?: boolean;\n /** When `true` (default), report candidates but do not delete. */\n dryRun?: boolean;\n /**\n * Optional QMD backend. When supplied and `dryRun === false`, a\n * `updateCollection` call is issued after each deletion so the index stays\n * consistent. Pass `undefined` or omit to skip index maintenance (e.g. in\n * tests that don't have a live QMD instance).\n */\n qmd?: SearchBackend;\n /** Hot-tier QMD collection name (default: `\"openclaw-engram\"`). */\n hotCollection?: string;\n /** Cold-tier QMD collection name (default: `\"openclaw-engram-cold\"`). */\n coldCollection?: string;\n /** Optional hook for long-lived hosts to clear their live dedupe mirror after purge hash cleanup. */\n afterFactHashRemoval?: () => void | Promise<void>;\n /** Optional shutdown signal forwarded to QMD collection refreshes. */\n signal?: AbortSignal;\n /** Override clock for tests. */\n now?: () => Date;\n}\n\nexport interface PurgeCandidate {\n id: string;\n path: string;\n tier: \"hot\" | \"cold\" | \"archive\";\n status: string;\n updatedOrCreated: string;\n ageMs: number;\n}\n\nexport interface PurgeMemoriesResult {\n dryRun: boolean;\n tier: PurgeTierFilter;\n olderThanMs: number;\n candidates: PurgeCandidate[];\n purgedCount: number;\n alreadyAbsentCount: number;\n errorCount: number;\n errors: Array<{ id: string; path: string; error: string }>;\n}\n\nfunction hasErrorCode(err: unknown, code: string): boolean {\n return typeof err === \"object\" && err !== null && \"code\" in err && (err as { code?: unknown }).code === code;\n}\n\nfunction resolveTimestamp(memory: MemoryFile): string {\n const fm = memory.frontmatter as unknown as Record<string, unknown>;\n const updated = typeof fm.updated === \"string\" ? (fm.updated as string) : \"\";\n const created = typeof fm.created === \"string\" ? (fm.created as string) : \"\";\n return updated.length > 0 ? updated : created;\n}\n\nasync function logPurgeAudit(\n storage: StorageManager,\n candidates: PurgeCandidate[],\n now: Date,\n event: \"PURGE_DELETE_INTENT\" | \"PURGE_HARD_DELETE\" | \"PURGE_ALREADY_ABSENT\" = \"PURGE_HARD_DELETE\",\n): Promise<void> {\n if (candidates.length === 0) return;\n const ledgerDir = path.join(storage.dir, \"state\", \"observation-ledger\");\n await mkdir(ledgerDir, { recursive: true });\n const ledgerPath = path.join(ledgerDir, \"purge-audit.jsonl\");\n const entries = candidates.map((c) =>\n JSON.stringify({\n event,\n timestamp: now.toISOString(),\n memoryId: c.id,\n path: c.path,\n tier: c.tier,\n status: c.status,\n updatedOrCreated: c.updatedOrCreated,\n }),\n );\n if (entries.length > 0) {\n await appendFile(ledgerPath, `${entries.join(\"\\n\")}\\n`, \"utf-8\");\n }\n}\n\nexport async function purgeMemories(\n options: PurgeMemoriesOptions,\n): Promise<PurgeMemoriesResult> {\n const {\n storage,\n olderThanMs,\n tier = \"cold\",\n forgottenOnly = false,\n dryRun = true,\n qmd,\n hotCollection = \"openclaw-engram\",\n coldCollection = \"openclaw-engram-cold\",\n } = options;\n\n if (!Number.isFinite(olderThanMs) || olderThanMs <= 0) {\n throw new Error(\"olderThanMs must be a finite positive number\");\n }\n\n const now = (options.now ?? (() => new Date()))();\n const nowMs = now.getTime();\n\n // Collect all memories from applicable tiers\n const [hotMemories, coldMemories, archivedMemories] = await Promise.all([\n tier === \"all\" ? storage.readAllMemories() : Promise.resolve([]),\n storage.readAllColdMemories(),\n tier === \"all\" ? storage.readArchivedMemories() : Promise.resolve([]),\n ]);\n\n const poolEntries: Array<{ memory: MemoryFile; resolvedTier: \"hot\" | \"cold\" | \"archive\" }> = [];\n\n if (tier === \"all\") {\n for (const m of hotMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"hot\" });\n }\n for (const m of archivedMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"archive\" });\n }\n }\n for (const m of coldMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"cold\" });\n }\n\n // Build candidate list\n const candidates: PurgeCandidate[] = [];\n const candidateMemoriesById = new Map<string, MemoryFile>();\n for (const { memory, resolvedTier } of poolEntries) {\n const ts = resolveTimestamp(memory);\n if (ts.length === 0) continue;\n\n const tsMs = Date.parse(ts);\n if (!Number.isFinite(tsMs)) continue;\n\n const ageMs = nowMs - tsMs;\n if (ageMs < olderThanMs) continue;\n\n const fm = memory.frontmatter as unknown as Record<string, unknown>;\n const status: string =\n typeof fm.status === \"string\" ? (fm.status as string) : \"active\";\n\n if (forgottenOnly && status !== \"forgotten\") continue;\n\n candidates.push({\n id: memory.frontmatter.id,\n path: memory.path,\n tier: resolvedTier,\n status,\n updatedOrCreated: ts,\n ageMs,\n });\n candidateMemoriesById.set(memory.frontmatter.id, memory);\n }\n\n if (dryRun) {\n return {\n dryRun: true,\n tier,\n olderThanMs,\n candidates,\n purgedCount: 0,\n alreadyAbsentCount: 0,\n errorCount: 0,\n errors: [],\n };\n }\n\n // Hard-delete phase\n const errors: Array<{ id: string; path: string; error: string }> = [];\n try {\n await logPurgeAudit(storage, candidates, now, \"PURGE_DELETE_INTENT\");\n } catch (auditErr) {\n errors.push({\n id: \"(purge-audit)\",\n path: path.join(storage.dir, \"state\", \"observation-ledger\", \"purge-audit.jsonl\"),\n error: auditErr instanceof Error ? auditErr.message : String(auditErr),\n });\n }\n\n const actuallyPurged: PurgeCandidate[] = [];\n const alreadyAbsent: PurgeCandidate[] = [];\n const collectionsToUpdate = new Set<string>();\n const addCollectionForCandidate = (candidate: PurgeCandidate) => {\n if (candidate.tier === \"cold\") {\n collectionsToUpdate.add(coldCollection);\n } else if (candidate.tier === \"hot\") {\n collectionsToUpdate.add(hotCollection);\n }\n };\n\n for (const candidate of candidates) {\n try {\n await unlink(candidate.path);\n actuallyPurged.push(candidate);\n addCollectionForCandidate(candidate);\n markProjectedMemoryPathInvalid(storage.dir, candidate.id);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n // ENOENT is fine — already gone\n if (hasErrorCode(err, \"ENOENT\")) {\n alreadyAbsent.push(candidate);\n addCollectionForCandidate(candidate);\n markProjectedMemoryPathInvalid(storage.dir, candidate.id);\n } else {\n errors.push({ id: candidate.id, path: candidate.path, error: message });\n }\n }\n }\n\n const recordPostDeleteAudit = async (\n purgedCandidates: PurgeCandidate[],\n event: \"PURGE_HARD_DELETE\" | \"PURGE_ALREADY_ABSENT\",\n ) => {\n try {\n await logPurgeAudit(storage, purgedCandidates, now, event);\n } catch (auditErr) {\n errors.push({\n id: \"(purge-audit)\",\n path: path.join(storage.dir, \"state\", \"observation-ledger\", \"purge-audit.jsonl\"),\n error: auditErr instanceof Error ? auditErr.message : String(auditErr),\n });\n }\n };\n await recordPostDeleteAudit(actuallyPurged, \"PURGE_HARD_DELETE\");\n await recordPostDeleteAudit(alreadyAbsent, \"PURGE_ALREADY_ABSENT\");\n\n const resolvedPurges = [...actuallyPurged, ...alreadyAbsent];\n\n const invalidateTierCaches = (\n storage as unknown as {\n invalidateMemoryCachesForTiers?: (tiers: Iterable<\"hot\" | \"cold\" | \"archive\">) => void;\n }\n ).invalidateMemoryCachesForTiers;\n if (typeof invalidateTierCaches === \"function\") {\n invalidateTierCaches.call(storage, new Set(resolvedPurges.map((candidate) => candidate.tier)));\n } else if (typeof (storage as unknown as { invalidateAllMemoriesCacheForDir?: () => void }).invalidateAllMemoriesCacheForDir === \"function\") {\n (storage as unknown as { invalidateAllMemoriesCacheForDir: () => void }).invalidateAllMemoriesCacheForDir();\n }\n\n // Update QMD index for affected collections\n if (qmd) {\n for (const collection of collectionsToUpdate) {\n try {\n if (typeof qmd.updateCollectionStrict === \"function\") {\n await qmd.updateCollectionStrict(collection, { signal: options.signal });\n } else {\n await qmd.updateCollection(collection, { signal: options.signal });\n }\n } catch (indexErr) {\n // Non-fatal — operator can re-index manually\n errors.push({\n id: \"(qmd-update)\",\n path: collection,\n error: indexErr instanceof Error ? indexErr.message : String(indexErr),\n });\n }\n }\n }\n\n const purgedFactMemories = resolvedPurges\n .map((candidate) => candidateMemoriesById.get(candidate.id))\n .filter((memory): memory is MemoryFile => memory?.frontmatter.category === \"fact\");\n if (purgedFactMemories.length > 0) {\n const removeFactHashes = (\n storage as unknown as {\n removeFactContentHashesForMemories?: (memories: MemoryFile[]) => Promise<void>;\n }\n ).removeFactContentHashesForMemories;\n if (typeof removeFactHashes === \"function\") {\n try {\n await removeFactHashes.call(storage, purgedFactMemories);\n await options.afterFactHashRemoval?.();\n } catch (hashErr) {\n errors.push({\n id: \"(fact-hash-index)\",\n path: path.join(storage.dir, \"state\", \"fact-hashes.txt\"),\n error: hashErr instanceof Error ? hashErr.message : String(hashErr),\n });\n }\n }\n }\n\n return {\n dryRun: false,\n tier,\n olderThanMs,\n candidates,\n purgedCount: actuallyPurged.length,\n alreadyAbsentCount: alreadyAbsent.length,\n errorCount: errors.length,\n errors,\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/maintenance/purge.ts"],"sourcesContent":["/**\n * Operator-facing bulk hard-delete (issue #686 retention-completion).\n *\n * `purgeMemories(opts)` hard-deletes memories that are:\n * - older than `olderThanMs` (measured against `updated ?? created`), AND\n * - in the specified tier (`\"cold\"` or `\"all\"`), AND\n * - optionally in `status: \"forgotten\"` only (when `forgottenOnly` is true)\n *\n * Hard-delete means:\n * 1. Remove the file from disk.\n * 2. Trigger a QMD collection update so the index no longer contains it.\n * 3. Append a purge audit entry to the observation ledger.\n *\n * `dryRun: true` (the default) reports what *would* be deleted without\n * actually removing anything — callers must opt into mutations by\n * setting `dryRun: false`.\n *\n * The CLI surface enforces an explicit `--confirm yes` guard and\n * defaults to `--dry-run` to make accidental data loss impossible.\n */\n\nimport path from \"node:path\";\nimport { appendFile, mkdir, unlink } from \"node:fs/promises\";\nimport type { StorageManager } from \"../storage.js\";\nimport type { MemoryFile } from \"../types.js\";\nimport { markProjectedMemoryPathInvalid } from \"../memory-projection-store.js\";\nimport type { SearchBackend } from \"../search/port.js\";\n\nexport type PurgeTierFilter = \"cold\" | \"all\";\n\nexport interface PurgeMemoriesOptions {\n storage: StorageManager;\n /**\n * Only memories whose `updated ?? created` timestamp is older than this\n * value (in milliseconds, Unix epoch) will be candidates.\n */\n olderThanMs: number;\n /**\n * `\"cold\"` — only memories in the cold tier (files under `.../cold/`).\n * `\"all\"` — memories in any tier (hot, cold, or archived).\n * Default: `\"cold\"`.\n */\n tier?: PurgeTierFilter;\n /**\n * When `true`, only memories with `status === \"forgotten\"` are candidates.\n * Default: `false` (purge by age + tier regardless of status).\n */\n forgottenOnly?: boolean;\n /** When `true` (default), report candidates but do not delete. */\n dryRun?: boolean;\n /**\n * Optional QMD backend. When supplied and `dryRun === false`, a\n * `updateCollection` call is issued after each deletion so the index stays\n * consistent. Pass `undefined` or omit to skip index maintenance (e.g. in\n * tests that don't have a live QMD instance).\n */\n qmd?: SearchBackend;\n /** Hot-tier QMD collection name (default: `\"openclaw-engram\"`). */\n hotCollection?: string;\n /** Cold-tier QMD collection name (default: `\"openclaw-engram-cold\"`). */\n coldCollection?: string;\n /** Optional hook for long-lived hosts to clear their live dedupe mirror after purge hash cleanup. */\n afterFactHashRemoval?: () => void | Promise<void>;\n /** Optional shutdown signal forwarded to QMD collection refreshes. */\n signal?: AbortSignal;\n /** Override clock for tests. */\n now?: () => Date;\n}\n\nexport interface PurgeCandidate {\n id: string;\n path: string;\n tier: \"hot\" | \"cold\" | \"archive\";\n status: string;\n updatedOrCreated: string;\n ageMs: number;\n}\n\nexport interface PurgeMemoriesResult {\n dryRun: boolean;\n tier: PurgeTierFilter;\n olderThanMs: number;\n candidates: PurgeCandidate[];\n purgedCount: number;\n alreadyAbsentCount: number;\n errorCount: number;\n errors: Array<{ id: string; path: string; error: string }>;\n}\n\nfunction hasErrorCode(err: unknown, code: string): boolean {\n return typeof err === \"object\" && err !== null && \"code\" in err && (err as { code?: unknown }).code === code;\n}\n\nfunction resolveTimestamp(memory: MemoryFile): string {\n const fm = memory.frontmatter as unknown as Record<string, unknown>;\n const updated = typeof fm.updated === \"string\" ? (fm.updated as string) : \"\";\n const created = typeof fm.created === \"string\" ? (fm.created as string) : \"\";\n return updated.length > 0 ? updated : created;\n}\n\nasync function logPurgeAudit(\n storage: StorageManager,\n candidates: PurgeCandidate[],\n now: Date,\n event: \"PURGE_DELETE_INTENT\" | \"PURGE_HARD_DELETE\" | \"PURGE_ALREADY_ABSENT\" = \"PURGE_HARD_DELETE\",\n): Promise<void> {\n if (candidates.length === 0) return;\n const ledgerDir = path.join(storage.dir, \"state\", \"observation-ledger\");\n await mkdir(ledgerDir, { recursive: true });\n const ledgerPath = path.join(ledgerDir, \"purge-audit.jsonl\");\n const entries = candidates.map((c) =>\n JSON.stringify({\n event,\n timestamp: now.toISOString(),\n memoryId: c.id,\n path: c.path,\n tier: c.tier,\n status: c.status,\n updatedOrCreated: c.updatedOrCreated,\n }),\n );\n if (entries.length > 0) {\n await appendFile(ledgerPath, `${entries.join(\"\\n\")}\\n`, \"utf-8\");\n }\n}\n\nexport async function purgeMemories(\n options: PurgeMemoriesOptions,\n): Promise<PurgeMemoriesResult> {\n const {\n storage,\n olderThanMs,\n tier = \"cold\",\n forgottenOnly = false,\n dryRun = true,\n qmd,\n hotCollection = \"openclaw-engram\",\n coldCollection = \"openclaw-engram-cold\",\n } = options;\n\n if (!Number.isFinite(olderThanMs) || olderThanMs <= 0) {\n throw new Error(\"olderThanMs must be a finite positive number\");\n }\n\n const now = (options.now ?? (() => new Date()))();\n const nowMs = now.getTime();\n\n // Collect all memories from applicable tiers\n const [hotMemories, coldMemories, archivedMemories] = await Promise.all([\n tier === \"all\" ? storage.readAllMemories() : Promise.resolve([]),\n storage.readAllColdMemories(),\n tier === \"all\" ? storage.readArchivedMemories() : Promise.resolve([]),\n ]);\n\n const poolEntries: Array<{ memory: MemoryFile; resolvedTier: \"hot\" | \"cold\" | \"archive\" }> = [];\n\n if (tier === \"all\") {\n for (const m of hotMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"hot\" });\n }\n for (const m of archivedMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"archive\" });\n }\n }\n for (const m of coldMemories) {\n poolEntries.push({ memory: m, resolvedTier: \"cold\" });\n }\n\n // Build candidate list\n const candidates: PurgeCandidate[] = [];\n const candidateMemoriesById = new Map<string, MemoryFile>();\n for (const { memory, resolvedTier } of poolEntries) {\n const ts = resolveTimestamp(memory);\n if (ts.length === 0) continue;\n\n const tsMs = Date.parse(ts);\n if (!Number.isFinite(tsMs)) continue;\n\n const ageMs = nowMs - tsMs;\n if (ageMs < olderThanMs) continue;\n\n const fm = memory.frontmatter as unknown as Record<string, unknown>;\n const status: string =\n typeof fm.status === \"string\" ? (fm.status as string) : \"active\";\n\n if (forgottenOnly && status !== \"forgotten\") continue;\n\n candidates.push({\n id: memory.frontmatter.id,\n path: memory.path,\n tier: resolvedTier,\n status,\n updatedOrCreated: ts,\n ageMs,\n });\n candidateMemoriesById.set(memory.frontmatter.id, memory);\n }\n\n if (dryRun) {\n return {\n dryRun: true,\n tier,\n olderThanMs,\n candidates,\n purgedCount: 0,\n alreadyAbsentCount: 0,\n errorCount: 0,\n errors: [],\n };\n }\n\n // Hard-delete phase\n const errors: Array<{ id: string; path: string; error: string }> = [];\n try {\n await logPurgeAudit(storage, candidates, now, \"PURGE_DELETE_INTENT\");\n } catch (auditErr) {\n errors.push({\n id: \"(purge-audit)\",\n path: path.join(storage.dir, \"state\", \"observation-ledger\", \"purge-audit.jsonl\"),\n error: auditErr instanceof Error ? auditErr.message : String(auditErr),\n });\n }\n\n const actuallyPurged: PurgeCandidate[] = [];\n const alreadyAbsent: PurgeCandidate[] = [];\n const collectionsToUpdate = new Set<string>();\n const addCollectionForCandidate = (candidate: PurgeCandidate) => {\n if (candidate.tier === \"cold\") {\n collectionsToUpdate.add(coldCollection);\n } else if (candidate.tier === \"hot\") {\n collectionsToUpdate.add(hotCollection);\n }\n };\n\n for (const candidate of candidates) {\n try {\n await unlink(candidate.path);\n actuallyPurged.push(candidate);\n addCollectionForCandidate(candidate);\n markProjectedMemoryPathInvalid(storage.dir, candidate.id);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n // ENOENT is fine — already gone\n if (hasErrorCode(err, \"ENOENT\")) {\n alreadyAbsent.push(candidate);\n addCollectionForCandidate(candidate);\n markProjectedMemoryPathInvalid(storage.dir, candidate.id);\n } else {\n errors.push({ id: candidate.id, path: candidate.path, error: message });\n }\n }\n }\n\n const recordPostDeleteAudit = async (\n purgedCandidates: PurgeCandidate[],\n event: \"PURGE_HARD_DELETE\" | \"PURGE_ALREADY_ABSENT\",\n ) => {\n try {\n await logPurgeAudit(storage, purgedCandidates, now, event);\n } catch (auditErr) {\n errors.push({\n id: \"(purge-audit)\",\n path: path.join(storage.dir, \"state\", \"observation-ledger\", \"purge-audit.jsonl\"),\n error: auditErr instanceof Error ? auditErr.message : String(auditErr),\n });\n }\n };\n await recordPostDeleteAudit(actuallyPurged, \"PURGE_HARD_DELETE\");\n await recordPostDeleteAudit(alreadyAbsent, \"PURGE_ALREADY_ABSENT\");\n\n const resolvedPurges = [...actuallyPurged, ...alreadyAbsent];\n\n const invalidateTierCaches = (\n storage as unknown as {\n invalidateMemoryCachesForTiers?: (tiers: Iterable<\"hot\" | \"cold\" | \"archive\">) => void;\n }\n ).invalidateMemoryCachesForTiers;\n if (typeof invalidateTierCaches === \"function\") {\n invalidateTierCaches.call(storage, new Set(resolvedPurges.map((candidate) => candidate.tier)));\n } else if (typeof (storage as unknown as { invalidateAllMemoriesCacheForDir?: () => void }).invalidateAllMemoriesCacheForDir === \"function\") {\n (storage as unknown as { invalidateAllMemoriesCacheForDir: () => void }).invalidateAllMemoriesCacheForDir();\n }\n\n // Update QMD index for affected collections\n if (qmd) {\n for (const collection of collectionsToUpdate) {\n try {\n if (typeof qmd.updateCollectionStrict === \"function\") {\n await qmd.updateCollectionStrict(collection, { signal: options.signal });\n } else {\n await qmd.updateCollection(collection, { signal: options.signal });\n }\n } catch (indexErr) {\n // Non-fatal — operator can re-index manually\n errors.push({\n id: \"(qmd-update)\",\n path: collection,\n error: indexErr instanceof Error ? indexErr.message : String(indexErr),\n });\n }\n }\n }\n\n const purgedFactMemories = resolvedPurges\n .map((candidate) => candidateMemoriesById.get(candidate.id))\n .filter((memory): memory is MemoryFile => memory?.frontmatter.category === \"fact\");\n if (purgedFactMemories.length > 0) {\n const removeFactHashes = (\n storage as unknown as {\n removeFactContentHashesForMemories?: (memories: MemoryFile[]) => Promise<void>;\n }\n ).removeFactContentHashesForMemories;\n if (typeof removeFactHashes === \"function\") {\n try {\n await removeFactHashes.call(storage, purgedFactMemories);\n await options.afterFactHashRemoval?.();\n } catch (hashErr) {\n errors.push({\n id: \"(fact-hash-index)\",\n path: path.join(storage.dir, \"state\", \"fact-hashes.txt\"),\n error: hashErr instanceof Error ? hashErr.message : String(hashErr),\n });\n }\n }\n }\n\n return {\n dryRun: false,\n tier,\n olderThanMs,\n candidates,\n purgedCount: actuallyPurged.length,\n alreadyAbsentCount: alreadyAbsent.length,\n errorCount: errors.length,\n errors,\n };\n}\n"],"mappings":"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","names":[]}
|