@remnic/core 1.1.2 → 1.1.3
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/abort-error.js +1 -0
- package/dist/abstraction-nodes.js +1 -0
- package/dist/access-audit.js +1 -0
- package/dist/access-cli.js +70 -45
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +50 -5
- package/dist/access-http.js +37 -15
- package/dist/access-idempotency.js +1 -0
- package/dist/access-mcp.d.ts +10 -5
- package/dist/access-mcp.js +36 -13
- package/dist/access-schema.d.ts +133 -13
- package/dist/access-schema.js +20 -1
- package/dist/access-service-_AEUMVyX.d.ts +1981 -0
- package/dist/access-service.d.ts +11 -6
- package/dist/access-service.js +38 -14
- package/dist/active-memory-bridge.js +1 -0
- package/dist/active-recall.js +1 -0
- package/dist/active-recall.js.map +1 -1
- package/dist/behavior-learner.js +1 -0
- package/dist/behavior-learner.js.map +1 -1
- package/dist/behavior-signals.js +1 -0
- package/dist/bootstrap.d.ts +6 -4
- package/dist/bootstrap.js +1 -0
- package/dist/boxes.js +1 -0
- package/dist/briefing.d.ts +9 -5
- package/dist/briefing.js +9 -6
- package/dist/buffer-surprise-report.js +1 -0
- package/dist/buffer-surprise.js +1 -0
- package/dist/buffer.d.ts +1 -1
- package/dist/buffer.js +1 -0
- package/dist/calibration.d.ts +8 -1
- package/dist/calibration.js +10 -2
- package/dist/calibration.js.map +1 -1
- package/dist/capsule-cli.d.ts +137 -0
- package/dist/capsule-cli.js +34 -0
- package/dist/capsule-crypto-5CYAGVC5.js +18 -0
- package/dist/capsule-export-NZQPOTQ4.js +17 -0
- package/dist/capsule-export-NZQPOTQ4.js.map +1 -0
- package/dist/capsule-import-SDCUXLEV.js +16 -0
- package/dist/capsule-import-SDCUXLEV.js.map +1 -0
- package/dist/capsule-merge-DI7PNQ2H.js +189 -0
- package/dist/capsule-merge-DI7PNQ2H.js.map +1 -0
- package/dist/causal-behavior.js +1 -0
- package/dist/causal-behavior.js.map +1 -1
- package/dist/causal-chain.js +1 -0
- package/dist/causal-consolidation.js +11 -8
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -1
- package/dist/causal-retrieval.js.map +1 -1
- package/dist/causal-trajectory-graph.js +4 -1
- package/dist/causal-trajectory-graph.js.map +1 -1
- package/dist/causal-trajectory.js +2 -1
- package/dist/chunk-2LSZVONP.js +67 -0
- package/dist/chunk-2LSZVONP.js.map +1 -0
- package/dist/chunk-32KD5IHZ.js +245 -0
- package/dist/chunk-32KD5IHZ.js.map +1 -0
- package/dist/{chunk-VDX363PS.js → chunk-34F3PLWZ.js} +10 -3
- package/dist/chunk-34F3PLWZ.js.map +1 -0
- package/dist/chunk-3KIS4VGT.js +228 -0
- package/dist/chunk-3KIS4VGT.js.map +1 -0
- package/dist/chunk-3LCWFNVS.js +350 -0
- package/dist/chunk-3LCWFNVS.js.map +1 -0
- package/dist/chunk-43EKP2UK.js +26 -0
- package/dist/chunk-43EKP2UK.js.map +1 -0
- package/dist/chunk-457A4P3L.js +119 -0
- package/dist/chunk-457A4P3L.js.map +1 -0
- package/dist/{chunk-TMYO7B5P.js → chunk-47WOM4YW.js} +2 -2
- package/dist/{chunk-OC5OXUQ4.js → chunk-4PLGJRBV.js} +653 -17
- package/dist/chunk-4PLGJRBV.js.map +1 -0
- package/dist/{chunk-PVICZTKG.js → chunk-55FXRRSJ.js} +5 -5
- package/dist/{chunk-PVICZTKG.js.map → chunk-55FXRRSJ.js.map} +1 -1
- package/dist/{chunk-ULYOGL6R.js → chunk-5HRY2WRF.js} +7 -3
- package/dist/chunk-5HRY2WRF.js.map +1 -0
- package/dist/chunk-6TBWYBJ3.js +236 -0
- package/dist/chunk-6TBWYBJ3.js.map +1 -0
- package/dist/chunk-74EMIVE4.js +329 -0
- package/dist/chunk-74EMIVE4.js.map +1 -0
- package/dist/chunk-74WWN7ZW.js +82 -0
- package/dist/chunk-74WWN7ZW.js.map +1 -0
- package/dist/{chunk-6YJHX2DL.js → chunk-7GCMLT7J.js} +242 -22
- package/dist/chunk-7GCMLT7J.js.map +1 -0
- package/dist/chunk-A6XUJE5D.js +126 -0
- package/dist/chunk-A6XUJE5D.js.map +1 -0
- package/dist/chunk-AJA46VX5.js +393 -0
- package/dist/chunk-AJA46VX5.js.map +1 -0
- package/dist/{chunk-UWB5LMWY.js → chunk-AKUCB2OG.js} +525 -24
- package/dist/chunk-AKUCB2OG.js.map +1 -0
- package/dist/chunk-ASIQZXYO.js +277 -0
- package/dist/chunk-ASIQZXYO.js.map +1 -0
- package/dist/{chunk-DG6YMRDC.js → chunk-B2TL6GA2.js} +2 -2
- package/dist/chunk-BJMBJZ2Y.js +290 -0
- package/dist/chunk-BJMBJZ2Y.js.map +1 -0
- package/dist/chunk-BT7NVCML.js +79 -0
- package/dist/chunk-BT7NVCML.js.map +1 -0
- package/dist/chunk-CK5NTM2S.js +454 -0
- package/dist/chunk-CK5NTM2S.js.map +1 -0
- package/dist/{chunk-AYXIPSZO.js → chunk-CRU27Q4J.js} +2 -2
- package/dist/{chunk-F5VP6YCB.js → chunk-DCE6SQLA.js} +572 -155
- package/dist/chunk-DCE6SQLA.js.map +1 -0
- package/dist/{chunk-CUPFXL3J.js → chunk-DHRQHX36.js} +4 -4
- package/dist/chunk-DHRQHX36.js.map +1 -0
- package/dist/{chunk-STGWEHYR.js → chunk-DR7MCMPS.js} +981 -61
- package/dist/chunk-DR7MCMPS.js.map +1 -0
- package/dist/chunk-FP2373TW.js +149 -0
- package/dist/chunk-FP2373TW.js.map +1 -0
- package/dist/{chunk-RBBWYEFJ.js → chunk-G2WADRQ3.js} +1 -1
- package/dist/chunk-G7D6GZ5J.js +48 -0
- package/dist/chunk-G7D6GZ5J.js.map +1 -0
- package/dist/chunk-H7XKCNR6.js +60 -0
- package/dist/chunk-H7XKCNR6.js.map +1 -0
- package/dist/{chunk-3YGHKTBF.js → chunk-IM3JSE73.js} +953 -322
- package/dist/chunk-IM3JSE73.js.map +1 -0
- package/dist/chunk-IXEJRKCZ.js +18 -0
- package/dist/chunk-IXEJRKCZ.js.map +1 -0
- package/dist/chunk-IYY4MCPG.js +275 -0
- package/dist/chunk-IYY4MCPG.js.map +1 -0
- package/dist/{chunk-BECYBZLX.js → chunk-JWSENLQI.js} +502 -22
- package/dist/chunk-JWSENLQI.js.map +1 -0
- package/dist/chunk-KNKUID7G.js +183 -0
- package/dist/chunk-KNKUID7G.js.map +1 -0
- package/dist/chunk-L2IO2QPY.js +2036 -0
- package/dist/chunk-L2IO2QPY.js.map +1 -0
- package/dist/{chunk-SPI27QT6.js → chunk-L5IIGA5V.js} +9 -4
- package/dist/chunk-L5IIGA5V.js.map +1 -0
- package/dist/{chunk-XXVWLXSG.js → chunk-LVYGDT5V.js} +56 -82
- package/dist/chunk-LVYGDT5V.js.map +1 -0
- package/dist/{chunk-ZAIM4TUE.js → chunk-LW2NMHDW.js} +46 -1
- package/dist/chunk-LW2NMHDW.js.map +1 -0
- package/dist/{chunk-3OGMS3PE.js → chunk-LZRYQK6L.js} +3 -2
- package/dist/chunk-LZRYQK6L.js.map +1 -0
- package/dist/chunk-MDYG7VI7.js +48 -0
- package/dist/chunk-MDYG7VI7.js.map +1 -0
- package/dist/chunk-MXC3AP5I.js +74 -0
- package/dist/chunk-MXC3AP5I.js.map +1 -0
- package/dist/{chunk-DIXB44VE.js → chunk-N7X62G74.js} +25 -10
- package/dist/chunk-N7X62G74.js.map +1 -0
- package/dist/chunk-NN3TS5BM.js +147 -0
- package/dist/chunk-NN3TS5BM.js.map +1 -0
- package/dist/chunk-OA3L7BFR.js +183 -0
- package/dist/chunk-OA3L7BFR.js.map +1 -0
- package/dist/chunk-OZHRDTDX.js +240 -0
- package/dist/chunk-OZHRDTDX.js.map +1 -0
- package/dist/chunk-PCUKNJAZ.js +165 -0
- package/dist/chunk-PCUKNJAZ.js.map +1 -0
- package/dist/{chunk-6PFRXT4K.js → chunk-PFV5C235.js} +11 -6
- package/dist/chunk-PFV5C235.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/{chunk-Y7R2XJ5Q.js → chunk-Q7FJ5ZHM.js} +6 -2
- package/dist/chunk-Q7FJ5ZHM.js.map +1 -0
- package/dist/{chunk-NBVAS5MT.js → chunk-R2L7SUX2.js} +6 -6
- package/dist/{chunk-WCLICCGB.js → chunk-RILIVK4O.js} +91 -4
- package/dist/chunk-RILIVK4O.js.map +1 -0
- package/dist/{chunk-C2EFFULQ.js → chunk-RK2Y4XOM.js} +163 -20
- package/dist/chunk-RK2Y4XOM.js.map +1 -0
- package/dist/{chunk-TP4FZJIZ.js → chunk-RULE4VG5.js} +5 -1
- package/dist/chunk-RULE4VG5.js.map +1 -0
- package/dist/{chunk-PVPWZSSI.js → chunk-SMA4IMHV.js} +19 -3
- package/dist/chunk-SMA4IMHV.js.map +1 -0
- package/dist/{chunk-L7IXWRYE.js → chunk-SS253RXF.js} +22 -13
- package/dist/chunk-SS253RXF.js.map +1 -0
- package/dist/chunk-TUFG6VXY.js +875 -0
- package/dist/chunk-TUFG6VXY.js.map +1 -0
- package/dist/chunk-TYEOAFH3.js +251 -0
- package/dist/chunk-TYEOAFH3.js.map +1 -0
- package/dist/chunk-UKJAGEXH.js +260 -0
- package/dist/chunk-UKJAGEXH.js.map +1 -0
- package/dist/{chunk-KVBLZUKV.js → chunk-USFPPRAF.js} +93 -3
- package/dist/chunk-USFPPRAF.js.map +1 -0
- package/dist/{chunk-GA5P7RST.js → chunk-VTJVUHRK.js} +22 -36
- package/dist/chunk-VTJVUHRK.js.map +1 -0
- package/dist/chunk-WIICJPET.js +45 -0
- package/dist/chunk-WIICJPET.js.map +1 -0
- package/dist/{chunk-VBVG2M5G.js → chunk-WPGJYVUH.js} +6 -2
- package/dist/chunk-WPGJYVUH.js.map +1 -0
- package/dist/{chunk-4HQS2HPX.js → chunk-WSZIHQBK.js} +29 -9
- package/dist/{chunk-4HQS2HPX.js.map → chunk-WSZIHQBK.js.map} +1 -1
- package/dist/{chunk-NZLQTHS5.js → chunk-WW3QQF4H.js} +4 -1
- package/dist/chunk-WW3QQF4H.js.map +1 -0
- package/dist/{chunk-FVA6TGI3.js → chunk-Y3WQ4ZWK.js} +42 -2
- package/dist/chunk-Y3WQ4ZWK.js.map +1 -0
- package/dist/chunk-YNJHCGDT.js +309 -0
- package/dist/chunk-YNJHCGDT.js.map +1 -0
- package/dist/{chunk-LOIMBRDE.js → chunk-ZGXSCMQN.js} +1993 -411
- package/dist/chunk-ZGXSCMQN.js.map +1 -0
- package/dist/{chunk-W6SL7OFG.js → chunk-ZTSE2ZJ6.js} +12 -2
- package/dist/{chunk-W6SL7OFG.js.map → chunk-ZTSE2ZJ6.js.map} +1 -1
- package/dist/chunking.js +1 -0
- package/dist/cipher-GVE2GQ5H.js +28 -0
- package/dist/cipher-GVE2GQ5H.js.map +1 -0
- package/dist/citations.js +1 -0
- package/dist/{cli-BkeRaYfk.d.ts → cli-x2APT9a6.d.ts} +26 -7
- package/dist/cli.d.ts +11 -6
- package/dist/cli.js +67 -33
- package/dist/codex-thread-key.js +1 -0
- package/dist/commitment-ledger.js +1 -0
- package/dist/compression-optimizer.js +1 -0
- package/dist/config.d.ts +2 -1
- package/dist/config.js +4 -1
- package/dist/connectors-cli-DFGtY2DB.d.ts +257 -0
- package/dist/connectors-cli.d.ts +2 -0
- package/dist/connectors-cli.js +22 -0
- package/dist/connectors-cli.js.map +1 -0
- package/dist/consolidation-operator.d.ts +65 -5
- package/dist/consolidation-operator.js +6 -1
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-provenance-check.js +3 -2
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/consolidation-undo.js +1 -0
- package/dist/consolidation-undo.js.map +1 -1
- package/dist/{contradiction-review-WIUBAR52.js → contradiction-review-5LTTVDQV.js} +2 -1
- package/dist/contradiction-review-5LTTVDQV.js.map +1 -0
- package/dist/{contradiction-scan-E3GJTI4F.js → contradiction-scan-3Z6YW7YA.js} +2 -1
- package/dist/{contradiction-scan-E3GJTI4F.js.map → contradiction-scan-3Z6YW7YA.js.map} +1 -1
- package/dist/cross-namespace-budget.js +1 -0
- package/dist/cue-anchors.js +1 -0
- package/dist/dashboard-runtime.js +1 -0
- package/dist/day-summary.js +1 -0
- package/dist/delinearize.js +1 -0
- package/dist/direct-answer-wiring.js +1 -0
- package/dist/direct-answer.js +1 -0
- package/dist/dreams-ledger-LR2NBAZE.js +286 -0
- package/dist/dreams-ledger-LR2NBAZE.js.map +1 -0
- package/dist/embedding-fallback.js +1 -0
- package/dist/{engine-72LSIWQP.js → engine-ICC2DSQF.js} +10 -7
- package/dist/engine-ICC2DSQF.js.map +1 -0
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +9 -6
- package/dist/entity-schema.js +1 -0
- package/dist/evals.js +1 -0
- package/dist/evidence-pack.d.ts +16 -0
- package/dist/evidence-pack.js +8 -0
- package/dist/evidence-pack.js.map +1 -0
- package/dist/explicit-capture.d.ts +6 -4
- package/dist/explicit-capture.js +1 -0
- package/dist/extraction-judge-telemetry.js +1 -0
- package/dist/extraction-judge-training.js +1 -0
- package/dist/extraction-judge.js +1 -0
- package/dist/extraction.js +7 -6
- package/dist/fallback-llm.js +3 -2
- package/dist/first-start-migration-4MHQEOSD.js +263 -0
- package/dist/first-start-migration-4MHQEOSD.js.map +1 -0
- package/dist/forget-PLR6J5DN.js +69 -0
- package/dist/forget-PLR6J5DN.js.map +1 -0
- package/dist/framework-CyHYDcri.d.ts +153 -0
- package/dist/fs-utils-IRVUFB6G.js +30 -0
- package/dist/fs-utils-IRVUFB6G.js.map +1 -0
- package/dist/graph-dashboard-diff.js +1 -0
- package/dist/graph-dashboard-key.js +1 -0
- package/dist/graph-dashboard-parser.js +1 -0
- package/dist/graph-edge-decay-PWB63GRE.js +207 -0
- package/dist/graph-edge-decay-PWB63GRE.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +81 -0
- package/dist/graph-edge-reinforcement.js +24 -0
- package/dist/graph-edge-reinforcement.js.map +1 -0
- package/dist/graph-events.d.ts +87 -0
- package/dist/graph-events.js +14 -0
- package/dist/graph-events.js.map +1 -0
- package/dist/graph-recall.js +1 -0
- package/dist/graph-retrieval.js +1 -0
- package/dist/graph-snapshot.d.ts +112 -0
- package/dist/graph-snapshot.js +19 -0
- package/dist/graph-snapshot.js.map +1 -0
- package/dist/graph.d.ts +105 -7
- package/dist/graph.js +20 -3
- package/dist/harmonic-retrieval.js +1 -0
- package/dist/himem.js +1 -0
- package/dist/hygiene.js +1 -0
- package/dist/identity-continuity.js +1 -0
- package/dist/importance.js +1 -0
- package/dist/index.d.ts +562 -13
- package/dist/index.js +329 -67
- package/dist/index.js.map +1 -1
- package/dist/intent.js +1 -0
- package/dist/json-extract.js +1 -0
- package/dist/json-store.js +1 -0
- package/dist/kdf-7S6RWKLZ.js +26 -0
- package/dist/kdf-7S6RWKLZ.js.map +1 -0
- package/dist/legacy-hook-compat.js +1 -0
- package/dist/legacy-hook-compat.js.map +1 -1
- package/dist/lifecycle.js +1 -0
- package/dist/live-connectors-runner.d.ts +48 -0
- package/dist/live-connectors-runner.js +17 -0
- package/dist/live-connectors-runner.js.map +1 -0
- package/dist/local-llm.js +1 -0
- package/dist/logger.js +1 -0
- package/dist/memory-action-policy.js +1 -0
- package/dist/memory-cache.d.ts +2 -1
- package/dist/memory-cache.js +4 -1
- package/dist/memory-governance-KG52RITE.js +37 -0
- package/dist/memory-governance-KG52RITE.js.map +1 -0
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/memory-lifecycle-ledger-utils.js +4 -1
- package/dist/memory-projection-format.js +1 -0
- package/dist/{memory-projection-store-DeSXPh1j.d.ts → memory-projection-store-D3vBHS4J.d.ts} +1 -0
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-projection-store.js +1 -0
- package/dist/memory-worth-bench.js +1 -0
- package/dist/memory-worth-bench.js.map +1 -1
- package/dist/memory-worth-filter.js +1 -0
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/memory-worth-outcomes.js +1 -0
- package/dist/memory-worth.js +1 -0
- package/dist/metadata-FC3XPDRQ.js +21 -0
- package/dist/metadata-FC3XPDRQ.js.map +1 -0
- package/dist/migrate-from-identity-anchor-TTEDEJGX.js +8 -0
- package/dist/migrate-from-identity-anchor-TTEDEJGX.js.map +1 -0
- package/dist/model-registry.js +1 -0
- package/dist/models-json.js +1 -0
- package/dist/native-knowledge.js +1 -0
- package/dist/negative.js +1 -0
- package/dist/objective-state-writers.js +1 -0
- package/dist/objective-state-writers.js.map +1 -1
- package/dist/objective-state.js +1 -0
- package/dist/openai-chat-compat.js +1 -0
- package/dist/operator-toolkit.d.ts +46 -2
- package/dist/operator-toolkit.js +28 -16
- package/dist/opik-exporter.js +1 -0
- package/dist/opik-exporter.js.map +1 -1
- package/dist/{orchestrator-CmJ-NTdJ.d.ts → orchestrator-ChkesB8U.d.ts} +177 -13
- package/dist/orchestrator.d.ts +6 -4
- package/dist/orchestrator.js +55 -39
- package/dist/page-versioning.js +1 -0
- package/dist/path-RMTY5Y5A.js +9 -0
- package/dist/path-RMTY5Y5A.js.map +1 -0
- package/dist/patterns-cli.d.ts +160 -0
- package/dist/patterns-cli.js +29 -0
- package/dist/patterns-cli.js.map +1 -0
- package/dist/peers-6OSQ3NK6.js +44 -0
- package/dist/peers-6OSQ3NK6.js.map +1 -0
- package/dist/plugin-id.js +1 -0
- package/dist/policy-runtime.js +1 -0
- package/dist/{port-BADbLZU5.d.ts → port-hqGnoStS.d.ts} +6 -0
- package/dist/profiling.js +1 -0
- package/dist/purge-6ATBGT77.js +205 -0
- package/dist/purge-6ATBGT77.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd-recall-cache.js +1 -0
- package/dist/qmd.d.ts +2 -1
- package/dist/qmd.js +4 -3
- package/dist/reasoning-trace-recall.js +1 -0
- package/dist/reasoning-trace-types.js +1 -0
- package/dist/recall-audit-anomaly.js +1 -0
- package/dist/recall-audit.js +1 -0
- package/dist/recall-disclosure-escalation.d.ts +84 -0
- package/dist/recall-disclosure-escalation.js +14 -0
- package/dist/recall-disclosure-escalation.js.map +1 -0
- package/dist/recall-explain-renderer.js +4 -1
- package/dist/recall-mmr.js +1 -0
- package/dist/recall-qos.js +1 -0
- package/dist/recall-query-policy.js +1 -0
- package/dist/recall-state.d.ts +7 -0
- package/dist/recall-state.js +2 -1
- package/dist/recall-tag-filter.d.ts +56 -0
- package/dist/recall-tag-filter.js +14 -0
- package/dist/recall-tag-filter.js.map +1 -0
- package/dist/recall-tokenization.js +1 -0
- package/dist/recall-xray-cli.d.ts +9 -2
- package/dist/recall-xray-cli.js +9 -4
- package/dist/recall-xray-renderer.js +4 -1
- package/dist/recall-xray.d.ts +116 -2
- package/dist/recall-xray.js +9 -3
- package/dist/reconstruct.js +1 -0
- package/dist/release-changelog.js +2 -0
- package/dist/release-changelog.js.map +1 -1
- package/dist/relevance.js +1 -0
- package/dist/rerank.js +1 -0
- package/dist/{resolution-QBTDHTG7.js → resolution-YGIBORXI.js} +2 -1
- package/dist/{resolution-QBTDHTG7.js.map → resolution-YGIBORXI.js.map} +1 -1
- package/dist/resolve-auth-token.d.ts +51 -0
- package/dist/resolve-auth-token.js +12 -0
- package/dist/resolve-auth-token.js.map +1 -0
- package/dist/resolve-provider-secret.d.ts +9 -1
- package/dist/resolve-provider-secret.js +4 -1
- package/dist/resume-bundles.js +4 -3
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/retrieval-agents.js +1 -0
- package/dist/retrieval-tiers.js +1 -0
- package/dist/retrieval.js +1 -0
- package/dist/sanitize.js +1 -0
- package/dist/schemas.d.ts +37 -24
- package/dist/schemas.js +2 -1
- package/dist/sdk-compat.js +1 -0
- package/dist/sdk-compat.js.map +1 -1
- package/dist/secure-store-4R2GSO7S.js +156 -0
- package/dist/secure-store-4R2GSO7S.js.map +1 -0
- package/dist/semantic-chunking.js +1 -0
- package/dist/{semantic-consolidation-CxJU6MJk.d.ts → semantic-consolidation-ByBXb-sf.d.ts} +3 -3
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +11 -6
- package/dist/semantic-rule-promotion.d.ts +1 -1
- package/dist/semantic-rule-promotion.js +9 -6
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +9 -6
- package/dist/session-integrity.js +1 -0
- package/dist/session-observer-bands.js +1 -0
- package/dist/session-observer-state.js +1 -0
- package/dist/session-toggles.js +2 -0
- package/dist/session-toggles.js.map +1 -1
- package/dist/signal.js +1 -0
- package/dist/skills-registry.js +2 -0
- package/dist/skills-registry.js.map +1 -1
- package/dist/source-attribution.js +1 -0
- package/dist/state-NCHQ4TRG.js +8 -0
- package/dist/state-NCHQ4TRG.js.map +1 -0
- package/dist/state-store-3EH7HYIN.js +16 -0
- package/dist/state-store-3EH7HYIN.js.map +1 -0
- package/dist/storage.d.ts +76 -2
- package/dist/storage.js +8 -5
- package/dist/store-contract.js +1 -0
- package/dist/summarizer.js +5 -4
- package/dist/summary-snapshot.js +1 -0
- package/dist/temporal-index.js +1 -0
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/temporal-supersession.js +2 -1
- package/dist/temporal-validity.d.ts +52 -0
- package/dist/temporal-validity.js +14 -0
- package/dist/temporal-validity.js.map +1 -0
- package/dist/threading.js +1 -0
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-migration.js +1 -0
- package/dist/tier-routing.js +1 -0
- package/dist/tier-stats-62ZVDFKS.js +152 -0
- package/dist/tier-stats-62ZVDFKS.js.map +1 -0
- package/dist/tmt.js +1 -0
- package/dist/tokens.js +1 -0
- package/dist/topics.js +1 -0
- package/dist/trace-C5ETWBEF.js +290 -0
- package/dist/trace-C5ETWBEF.js.map +1 -0
- package/dist/transcript.js +1 -0
- package/dist/trust-zones.js +1 -0
- package/dist/tui-RI7P6PBS.js +13 -0
- package/dist/tui-RI7P6PBS.js.map +1 -0
- package/dist/types-V3FJ26TF.js +30 -0
- package/dist/types-V3FJ26TF.js.map +1 -0
- package/dist/types.d.ts +634 -9
- package/dist/types.js +10 -3
- package/dist/utility-learner.js +1 -0
- package/dist/utility-runtime.js +1 -0
- package/dist/utility-telemetry.js +1 -0
- package/dist/verified-recall.js +9 -6
- package/dist/version-utils.js +1 -0
- package/dist/whitespace.js +1 -0
- package/dist/work-product-ledger.js +1 -0
- package/package.json +2 -1
- package/dist/access-service-Br8ZydTK.d.ts +0 -827
- package/dist/chunk-3OGMS3PE.js.map +0 -1
- package/dist/chunk-3YGHKTBF.js.map +0 -1
- package/dist/chunk-6PFRXT4K.js.map +0 -1
- package/dist/chunk-6YJHX2DL.js.map +0 -1
- package/dist/chunk-BECYBZLX.js.map +0 -1
- package/dist/chunk-C2EFFULQ.js.map +0 -1
- package/dist/chunk-CUPFXL3J.js.map +0 -1
- package/dist/chunk-DIXB44VE.js.map +0 -1
- package/dist/chunk-F5VP6YCB.js.map +0 -1
- package/dist/chunk-FVA6TGI3.js.map +0 -1
- package/dist/chunk-GA5P7RST.js.map +0 -1
- package/dist/chunk-KVBLZUKV.js.map +0 -1
- package/dist/chunk-L7IXWRYE.js.map +0 -1
- package/dist/chunk-LOIMBRDE.js.map +0 -1
- package/dist/chunk-LTCGGW2D.js +0 -14
- package/dist/chunk-LTCGGW2D.js.map +0 -1
- package/dist/chunk-NZLQTHS5.js.map +0 -1
- package/dist/chunk-OC5OXUQ4.js.map +0 -1
- package/dist/chunk-PVPWZSSI.js.map +0 -1
- package/dist/chunk-SPI27QT6.js.map +0 -1
- package/dist/chunk-STGWEHYR.js.map +0 -1
- package/dist/chunk-TP4FZJIZ.js.map +0 -1
- package/dist/chunk-ULYOGL6R.js.map +0 -1
- package/dist/chunk-UWB5LMWY.js.map +0 -1
- package/dist/chunk-VBVG2M5G.js.map +0 -1
- package/dist/chunk-VDX363PS.js.map +0 -1
- package/dist/chunk-WCLICCGB.js.map +0 -1
- package/dist/chunk-X6GF3FX2.js +0 -26
- package/dist/chunk-X6GF3FX2.js.map +0 -1
- package/dist/chunk-XXVWLXSG.js.map +0 -1
- package/dist/chunk-Y7R2XJ5Q.js.map +0 -1
- package/dist/chunk-ZAIM4TUE.js.map +0 -1
- /package/dist/{contradiction-review-WIUBAR52.js.map → capsule-cli.js.map} +0 -0
- /package/dist/{engine-72LSIWQP.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
- /package/dist/{chunk-TMYO7B5P.js.map → chunk-47WOM4YW.js.map} +0 -0
- /package/dist/{chunk-DG6YMRDC.js.map → chunk-B2TL6GA2.js.map} +0 -0
- /package/dist/{chunk-AYXIPSZO.js.map → chunk-CRU27Q4J.js.map} +0 -0
- /package/dist/{chunk-RBBWYEFJ.js.map → chunk-G2WADRQ3.js.map} +0 -0
- /package/dist/{chunk-NBVAS5MT.js.map → chunk-R2L7SUX2.js.map} +0 -0
package/dist/storage.js
CHANGED
|
@@ -8,20 +8,23 @@ import {
|
|
|
8
8
|
normalizeEntityName,
|
|
9
9
|
parseEntityFile,
|
|
10
10
|
serializeEntityFile
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-DCE6SQLA.js";
|
|
12
|
+
import "./chunk-YNJHCGDT.js";
|
|
13
13
|
import "./chunk-4KAN3GZ3.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-43EKP2UK.js";
|
|
15
|
+
import "./chunk-PFV5C235.js";
|
|
16
|
+
import "./chunk-RULE4VG5.js";
|
|
16
17
|
import "./chunk-SCU65EZI.js";
|
|
17
18
|
import "./chunk-BOUYNNYD.js";
|
|
18
19
|
import "./chunk-DM2T26WE.js";
|
|
19
20
|
import "./chunk-QSVPYQPG.js";
|
|
20
21
|
import "./chunk-M62O4P4T.js";
|
|
21
22
|
import "./chunk-4DJQYKMN.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-G7D6GZ5J.js";
|
|
23
24
|
import "./chunk-FAAFWE4G.js";
|
|
24
25
|
import "./chunk-2ODBA7MQ.js";
|
|
26
|
+
import "./chunk-A6XUJE5D.js";
|
|
27
|
+
import "./chunk-PZ5AY32C.js";
|
|
25
28
|
export {
|
|
26
29
|
ContentHashIndex,
|
|
27
30
|
StorageManager,
|
package/dist/store-contract.js
CHANGED
package/dist/summarizer.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HourlySummarizer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-B2TL6GA2.js";
|
|
4
4
|
import "./chunk-ETOW6ACV.js";
|
|
5
5
|
import "./chunk-FEMOX5AD.js";
|
|
6
6
|
import "./chunk-R2XRID2N.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-Y7R2XJ5Q.js";
|
|
7
|
+
import "./chunk-CRU27Q4J.js";
|
|
8
|
+
import "./chunk-Q7FJ5ZHM.js";
|
|
10
9
|
import "./chunk-ODWDQNRE.js";
|
|
11
10
|
import "./chunk-Y27UJK6V.js";
|
|
12
11
|
import "./chunk-UZB5KHKX.js";
|
|
12
|
+
import "./chunk-OR64ZGRZ.js";
|
|
13
13
|
import "./chunk-MARWOCVP.js";
|
|
14
14
|
import "./chunk-2ODBA7MQ.js";
|
|
15
|
+
import "./chunk-PZ5AY32C.js";
|
|
15
16
|
export {
|
|
16
17
|
HourlySummarizer
|
|
17
18
|
};
|
package/dist/summary-snapshot.js
CHANGED
package/dist/temporal-index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { MemoryFrontmatter } from './types.js';
|
|
|
2
2
|
import { StorageManager } from './storage.js';
|
|
3
3
|
import './page-versioning.js';
|
|
4
4
|
import './consolidation-operator.js';
|
|
5
|
-
import './memory-projection-store-
|
|
5
|
+
import './memory-projection-store-D3vBHS4J.js';
|
|
6
6
|
import 'better-sqlite3';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
shouldFilterSupersededFromRecall,
|
|
7
7
|
shouldSupersedeExisting,
|
|
8
8
|
supersessionKeysForFact
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZTSE2ZJ6.js";
|
|
10
10
|
import "./chunk-2ODBA7MQ.js";
|
|
11
|
+
import "./chunk-PZ5AY32C.js";
|
|
11
12
|
export {
|
|
12
13
|
applyTemporalSupersession,
|
|
13
14
|
computeSupersessionKey,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { MemoryFrontmatter } from './types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Temporal validity helpers (issue #680).
|
|
5
|
+
*
|
|
6
|
+
* `valid_at` / `invalid_at` are explicit ISO 8601 timestamps that mark when a
|
|
7
|
+
* fact begins and ends being authoritative. These helpers centralize the
|
|
8
|
+
* read-time defaulting rules so every call site (recall filter, supersession
|
|
9
|
+
* write, tests) agrees on the canonical semantics:
|
|
10
|
+
*
|
|
11
|
+
* - `effectiveValidAt(fm)` — the moment this fact starts being true.
|
|
12
|
+
* Falls back to `created` when `valid_at` is absent so legacy memories
|
|
13
|
+
* written before #680 still participate in `as_of` filtering without
|
|
14
|
+
* a backfill migration.
|
|
15
|
+
* - `effectiveInvalidAt(fm)` — the moment this fact stops being true.
|
|
16
|
+
* Returns `undefined` when no `invalid_at` is set; supersession logic
|
|
17
|
+
* populates it on the older fact when a newer one replaces it.
|
|
18
|
+
* - `isValidAsOf(fm, asOfMs)` — true when the fact was authoritative at
|
|
19
|
+
* `asOfMs` (a numeric timestamp in ms). Half-open interval semantics:
|
|
20
|
+
* `valid_at <= asOf < invalid_at`. Strings are parsed via
|
|
21
|
+
* `Date.parse()` so timezone-suffixed ISO strings compare correctly
|
|
22
|
+
* (CLAUDE.md gotcha — never compare ISO strings lexicographically).
|
|
23
|
+
*
|
|
24
|
+
* Boundary case: when `invalid_at === asOf`, the fact is treated as NOT
|
|
25
|
+
* valid (the upper bound is exclusive), which matches the supersession
|
|
26
|
+
* model — at the instant a successor's `valid_at` fires, the predecessor
|
|
27
|
+
* is no longer authoritative.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
declare function effectiveValidAt(fm: Pick<MemoryFrontmatter, "valid_at" | "created">): string;
|
|
31
|
+
declare function effectiveInvalidAt(fm: Pick<MemoryFrontmatter, "invalid_at" | "supersededAt" | "status">): string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Returns true when the fact was authoritative at `asOfMs` (parsed
|
|
34
|
+
* milliseconds since epoch). Half-open semantics: a fact is valid in
|
|
35
|
+
* `[valid_at, invalid_at)`.
|
|
36
|
+
*
|
|
37
|
+
* If `valid_at` cannot be parsed, the fact is conservatively treated as
|
|
38
|
+
* NOT valid at the requested point — we never silently default a corrupt
|
|
39
|
+
* timestamp to "always true" because that would let bad data leak past
|
|
40
|
+
* the historical filter (CLAUDE.md gotcha #34: distinguish empty from
|
|
41
|
+
* malformed).
|
|
42
|
+
*/
|
|
43
|
+
declare function isValidAsOf(fm: Pick<MemoryFrontmatter, "valid_at" | "invalid_at" | "created" | "supersededAt" | "status">, asOfMs: number): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Parse and validate an `as_of` value supplied at an input boundary
|
|
46
|
+
* (CLI flag, HTTP query param, MCP field). Returns parsed milliseconds
|
|
47
|
+
* on success; throws a `RangeError` with a helpful message on malformed
|
|
48
|
+
* input. CLAUDE.md rule 51 — never silently default invalid input.
|
|
49
|
+
*/
|
|
50
|
+
declare function parseAsOfTimestamp(raw: unknown): number;
|
|
51
|
+
|
|
52
|
+
export { effectiveInvalidAt, effectiveValidAt, isValidAsOf, parseAsOfTimestamp };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
effectiveInvalidAt,
|
|
3
|
+
effectiveValidAt,
|
|
4
|
+
isValidAsOf,
|
|
5
|
+
parseAsOfTimestamp
|
|
6
|
+
} from "./chunk-MDYG7VI7.js";
|
|
7
|
+
import "./chunk-PZ5AY32C.js";
|
|
8
|
+
export {
|
|
9
|
+
effectiveInvalidAt,
|
|
10
|
+
effectiveValidAt,
|
|
11
|
+
isValidAsOf,
|
|
12
|
+
parseAsOfTimestamp
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=temporal-validity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/threading.js
CHANGED
package/dist/tier-migration.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { MemoryFile } from './types.js';
|
|
2
2
|
import { StorageManager } from './storage.js';
|
|
3
3
|
import { MemoryTier } from './tier-routing.js';
|
|
4
|
-
import { S as SearchBackend } from './port-
|
|
4
|
+
import { S as SearchBackend } from './port-hqGnoStS.js';
|
|
5
5
|
import './page-versioning.js';
|
|
6
6
|
import './consolidation-operator.js';
|
|
7
|
-
import './memory-projection-store-
|
|
7
|
+
import './memory-projection-store-D3vBHS4J.js';
|
|
8
8
|
import 'better-sqlite3';
|
|
9
9
|
import './lifecycle.js';
|
|
10
10
|
|
package/dist/tier-migration.js
CHANGED
package/dist/tier-routing.js
CHANGED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
applyUtilityPromotionRuntimePolicy,
|
|
3
|
+
loadUtilityRuntimeValues
|
|
4
|
+
} from "./chunk-FSFEQI74.js";
|
|
5
|
+
import {
|
|
6
|
+
computeTierValueScore,
|
|
7
|
+
decideTierTransition
|
|
8
|
+
} from "./chunk-S75M5ZRK.js";
|
|
9
|
+
import "./chunk-PYXS46O7.js";
|
|
10
|
+
import "./chunk-3QKK7QOS.js";
|
|
11
|
+
import {
|
|
12
|
+
computeLifecycleValueInputs
|
|
13
|
+
} from "./chunk-TBBDFYXW.js";
|
|
14
|
+
import "./chunk-DGXUHMOV.js";
|
|
15
|
+
import "./chunk-LPSF4OQH.js";
|
|
16
|
+
import "./chunk-PZ5AY32C.js";
|
|
17
|
+
|
|
18
|
+
// src/maintenance/tier-stats.ts
|
|
19
|
+
async function readTierVisibleMemories(storage) {
|
|
20
|
+
const [hotMemories, coldMemories] = await Promise.all([
|
|
21
|
+
storage.readAllMemories(),
|
|
22
|
+
storage.readAllColdMemories()
|
|
23
|
+
]);
|
|
24
|
+
return [
|
|
25
|
+
...hotMemories.map((memory) => ({ memory, tier: "hot" })),
|
|
26
|
+
...coldMemories.map((memory) => ({ memory, tier: "cold" }))
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
async function tierRoutingPolicyFromConfig(config) {
|
|
30
|
+
const basePolicy = {
|
|
31
|
+
enabled: config.qmdTierMigrationEnabled,
|
|
32
|
+
demotionMinAgeDays: config.qmdTierDemotionMinAgeDays,
|
|
33
|
+
demotionValueThreshold: config.qmdTierDemotionValueThreshold,
|
|
34
|
+
promotionValueThreshold: config.qmdTierPromotionValueThreshold
|
|
35
|
+
};
|
|
36
|
+
const runtime = await loadUtilityRuntimeValues({
|
|
37
|
+
memoryDir: config.memoryDir,
|
|
38
|
+
memoryUtilityLearningEnabled: config.memoryUtilityLearningEnabled,
|
|
39
|
+
promotionByOutcomeEnabled: config.promotionByOutcomeEnabled
|
|
40
|
+
});
|
|
41
|
+
return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);
|
|
42
|
+
}
|
|
43
|
+
async function summarizeTiers(storage) {
|
|
44
|
+
const all = await readTierVisibleMemories(storage);
|
|
45
|
+
const summary = {
|
|
46
|
+
total: all.length,
|
|
47
|
+
byTier: { hot: 0, cold: 0 },
|
|
48
|
+
byStatus: {},
|
|
49
|
+
forgottenCount: 0,
|
|
50
|
+
byCategory: {}
|
|
51
|
+
};
|
|
52
|
+
for (const { memory: m, tier } of all) {
|
|
53
|
+
summary.byTier[tier] += 1;
|
|
54
|
+
const status = m.frontmatter.status ?? "active";
|
|
55
|
+
summary.byStatus[status] = (summary.byStatus[status] ?? 0) + 1;
|
|
56
|
+
if (status === "forgotten") summary.forgottenCount += 1;
|
|
57
|
+
const cat = m.frontmatter.category ?? "(uncategorized)";
|
|
58
|
+
summary.byCategory[cat] = (summary.byCategory[cat] ?? 0) + 1;
|
|
59
|
+
}
|
|
60
|
+
return summary;
|
|
61
|
+
}
|
|
62
|
+
async function explainTierForMemory(storage, id, config) {
|
|
63
|
+
const trimmed = typeof id === "string" ? id.trim() : "";
|
|
64
|
+
if (trimmed.length === 0) {
|
|
65
|
+
throw new Error("tier explain: memory id is required and must be non-empty");
|
|
66
|
+
}
|
|
67
|
+
const all = await readTierVisibleMemories(storage);
|
|
68
|
+
const entry = all.find(({ memory: m }) => m.frontmatter.id === trimmed);
|
|
69
|
+
if (!entry) {
|
|
70
|
+
throw new Error(`tier explain: memory not found: ${trimmed}`);
|
|
71
|
+
}
|
|
72
|
+
const { memory, tier: currentTier } = entry;
|
|
73
|
+
const now = /* @__PURE__ */ new Date();
|
|
74
|
+
const valueInputs = computeLifecycleValueInputs(memory, now);
|
|
75
|
+
const valueScore = computeTierValueScore(memory, now);
|
|
76
|
+
const policy = await tierRoutingPolicyFromConfig(config);
|
|
77
|
+
const decision = decideTierTransition(memory, currentTier, policy, now);
|
|
78
|
+
const fm = memory.frontmatter;
|
|
79
|
+
return {
|
|
80
|
+
id: trimmed,
|
|
81
|
+
path: memory.path,
|
|
82
|
+
currentTier,
|
|
83
|
+
status: typeof fm.status === "string" ? fm.status : "active",
|
|
84
|
+
category: typeof fm.category === "string" ? fm.category : "",
|
|
85
|
+
valueScore,
|
|
86
|
+
decision,
|
|
87
|
+
signals: {
|
|
88
|
+
confidence: valueInputs.confidence,
|
|
89
|
+
accessCount: typeof fm.accessCount === "number" ? fm.accessCount : 0,
|
|
90
|
+
lastAccessed: typeof fm.lastAccessed === "string" ? fm.lastAccessed : null,
|
|
91
|
+
created: typeof fm.created === "string" ? fm.created : "",
|
|
92
|
+
updated: typeof fm.updated === "string" ? fm.updated : "",
|
|
93
|
+
importance: valueInputs.importance,
|
|
94
|
+
feedback: valueInputs.feedback
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function formatTierSummaryText(summary) {
|
|
99
|
+
const lines = [];
|
|
100
|
+
lines.push("=== Memory Tier Distribution ===");
|
|
101
|
+
lines.push(`Total memories: ${summary.total}`);
|
|
102
|
+
lines.push("");
|
|
103
|
+
lines.push("Tier:");
|
|
104
|
+
lines.push(` hot: ${summary.byTier.hot}`);
|
|
105
|
+
lines.push(` cold: ${summary.byTier.cold}`);
|
|
106
|
+
lines.push("");
|
|
107
|
+
lines.push("Status:");
|
|
108
|
+
const statusEntries = Object.entries(summary.byStatus).sort(
|
|
109
|
+
(a, b) => b[1] - a[1] || a[0].localeCompare(b[0])
|
|
110
|
+
);
|
|
111
|
+
for (const [status, count] of statusEntries) {
|
|
112
|
+
lines.push(` ${status}: ${count}`);
|
|
113
|
+
}
|
|
114
|
+
lines.push("");
|
|
115
|
+
lines.push("Top categories:");
|
|
116
|
+
const categoryEntries = Object.entries(summary.byCategory).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).slice(0, 8);
|
|
117
|
+
for (const [cat, count] of categoryEntries) {
|
|
118
|
+
lines.push(` ${cat}: ${count}`);
|
|
119
|
+
}
|
|
120
|
+
return lines.join("\n");
|
|
121
|
+
}
|
|
122
|
+
function formatTierExplainText(explain) {
|
|
123
|
+
const lines = [];
|
|
124
|
+
lines.push(`=== Tier Explain: ${explain.id} ===`);
|
|
125
|
+
lines.push(`path: ${explain.path}`);
|
|
126
|
+
lines.push(`current tier: ${explain.currentTier}`);
|
|
127
|
+
lines.push(`status: ${explain.status}`);
|
|
128
|
+
lines.push(`category: ${explain.category}`);
|
|
129
|
+
lines.push(`value score: ${explain.valueScore.toFixed(3)}`);
|
|
130
|
+
lines.push("");
|
|
131
|
+
lines.push("Tier-transition decision:");
|
|
132
|
+
lines.push(` next tier: ${explain.decision.nextTier}`);
|
|
133
|
+
lines.push(` changed: ${explain.decision.changed}`);
|
|
134
|
+
lines.push(` reason: ${explain.decision.reason}`);
|
|
135
|
+
lines.push("");
|
|
136
|
+
lines.push("Signals:");
|
|
137
|
+
lines.push(` confidence: ${explain.signals.confidence}`);
|
|
138
|
+
lines.push(` accessCount: ${explain.signals.accessCount}`);
|
|
139
|
+
lines.push(` lastAccessed: ${explain.signals.lastAccessed ?? "(never)"}`);
|
|
140
|
+
lines.push(` created: ${explain.signals.created}`);
|
|
141
|
+
lines.push(` updated: ${explain.signals.updated}`);
|
|
142
|
+
lines.push(` importance: ${explain.signals.importance}`);
|
|
143
|
+
lines.push(` feedback: ${explain.signals.feedback}`);
|
|
144
|
+
return lines.join("\n");
|
|
145
|
+
}
|
|
146
|
+
export {
|
|
147
|
+
explainTierForMemory,
|
|
148
|
+
formatTierExplainText,
|
|
149
|
+
formatTierSummaryText,
|
|
150
|
+
summarizeTiers
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=tier-stats-62ZVDFKS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/maintenance/tier-stats.ts"],"sourcesContent":["/**\n * Operator-facing tier visibility (issue #686 PR 5/6).\n *\n * Two read-only surfaces:\n *\n * - `summarizeTiers(storage)` — count memories by tier (hot vs cold)\n * plus per-status breakdown so operators can see at a glance\n * whether the lifecycle policy has actually demoted anything.\n * - `explainTierForMemory(storage, id)` — show the value-score\n * components and tier-transition decision for a single memory\n * so an operator can reason about why a memory ended up where\n * it did.\n *\n * Pure inspection — neither surface mutates anything. The CLI wires\n * them as `remnic tier list` and `remnic tier explain <id>`.\n */\n\nimport type { StorageManager } from \"../storage.js\";\nimport type { MemoryFile, PluginConfig } from \"../types.js\";\nimport { computeLifecycleValueInputs } from \"../lifecycle.js\";\nimport {\n computeTierValueScore,\n decideTierTransition,\n type MemoryTier,\n type TierRoutingPolicy,\n type TierTransitionDecision,\n} from \"../tier-routing.js\";\nimport {\n applyUtilityPromotionRuntimePolicy,\n loadUtilityRuntimeValues,\n} from \"../utility-runtime.js\";\n\nexport interface TierSummary {\n /** Total memories scanned (all tiers, all statuses). */\n total: number;\n byTier: Record<MemoryTier, number>;\n byStatus: Record<string, number>;\n /** Memories with `status === \"forgotten\"` (issue #686 PR 4/6). */\n forgottenCount: number;\n /** Top contributors to the forgotten / archived buckets, by category. */\n byCategory: Record<string, number>;\n}\n\nexport interface TierExplainResult {\n id: string;\n path: string;\n currentTier: MemoryTier;\n status: string;\n category: string;\n valueScore: number;\n decision: TierTransitionDecision;\n signals: {\n confidence: number;\n accessCount: number;\n lastAccessed: string | null;\n created: string;\n updated: string;\n importance: number;\n feedback: number;\n };\n}\n\ninterface TierVisibleMemory {\n memory: MemoryFile;\n tier: MemoryTier;\n}\n\nasync function readTierVisibleMemories(\n storage: StorageManager,\n): Promise<TierVisibleMemory[]> {\n const [hotMemories, coldMemories] = await Promise.all([\n storage.readAllMemories(),\n storage.readAllColdMemories(),\n ]);\n return [\n ...hotMemories.map((memory) => ({ memory, tier: \"hot\" as const })),\n ...coldMemories.map((memory) => ({ memory, tier: \"cold\" as const })),\n ];\n}\n\nasync function tierRoutingPolicyFromConfig(\n config: PluginConfig,\n): Promise<TierRoutingPolicy> {\n const basePolicy: TierRoutingPolicy = {\n enabled: config.qmdTierMigrationEnabled,\n demotionMinAgeDays: config.qmdTierDemotionMinAgeDays,\n demotionValueThreshold: config.qmdTierDemotionValueThreshold,\n promotionValueThreshold: config.qmdTierPromotionValueThreshold,\n };\n const runtime = await loadUtilityRuntimeValues({\n memoryDir: config.memoryDir,\n memoryUtilityLearningEnabled: config.memoryUtilityLearningEnabled,\n promotionByOutcomeEnabled: config.promotionByOutcomeEnabled,\n });\n return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);\n}\n\nexport async function summarizeTiers(\n storage: StorageManager,\n): Promise<TierSummary> {\n const all = await readTierVisibleMemories(storage);\n const summary: TierSummary = {\n total: all.length,\n byTier: { hot: 0, cold: 0 },\n byStatus: {},\n forgottenCount: 0,\n byCategory: {},\n };\n for (const { memory: m, tier } of all) {\n summary.byTier[tier] += 1;\n const status: string = m.frontmatter.status ?? \"active\";\n summary.byStatus[status] = (summary.byStatus[status] ?? 0) + 1;\n // Compare via the widened `string` type so this module compiles\n // both before and after PR 4/6 lands `\"forgotten\"` in MemoryStatus.\n if (status === \"forgotten\") summary.forgottenCount += 1;\n const cat = m.frontmatter.category ?? \"(uncategorized)\";\n summary.byCategory[cat] = (summary.byCategory[cat] ?? 0) + 1;\n }\n return summary;\n}\n\nexport async function explainTierForMemory(\n storage: StorageManager,\n id: string,\n config: PluginConfig,\n): Promise<TierExplainResult> {\n const trimmed = typeof id === \"string\" ? id.trim() : \"\";\n if (trimmed.length === 0) {\n throw new Error(\"tier explain: memory id is required and must be non-empty\");\n }\n const all = await readTierVisibleMemories(storage);\n const entry = all.find(({ memory: m }) => m.frontmatter.id === trimmed);\n if (!entry) {\n throw new Error(`tier explain: memory not found: ${trimmed}`);\n }\n const { memory, tier: currentTier } = entry;\n const now = new Date();\n const valueInputs = computeLifecycleValueInputs(memory, now);\n const valueScore = computeTierValueScore(memory, now);\n const policy = await tierRoutingPolicyFromConfig(config);\n const decision = decideTierTransition(memory, currentTier, policy, now);\n const fm = memory.frontmatter as unknown as Record<string, unknown>;\n return {\n id: trimmed,\n path: memory.path,\n currentTier,\n status: typeof fm.status === \"string\" ? (fm.status as string) : \"active\",\n category: typeof fm.category === \"string\" ? (fm.category as string) : \"\",\n valueScore,\n decision,\n signals: {\n confidence: valueInputs.confidence,\n accessCount:\n typeof fm.accessCount === \"number\" ? (fm.accessCount as number) : 0,\n lastAccessed:\n typeof fm.lastAccessed === \"string\" ? (fm.lastAccessed as string) : null,\n created: typeof fm.created === \"string\" ? (fm.created as string) : \"\",\n updated: typeof fm.updated === \"string\" ? (fm.updated as string) : \"\",\n importance: valueInputs.importance,\n feedback: valueInputs.feedback,\n },\n };\n}\n\n/**\n * Render a TierSummary as plain text for `remnic tier list` text mode.\n * Pure formatter — exposed so future surfaces (HTTP, MCP) can reuse.\n */\nexport function formatTierSummaryText(summary: TierSummary): string {\n const lines: string[] = [];\n lines.push(\"=== Memory Tier Distribution ===\");\n lines.push(`Total memories: ${summary.total}`);\n lines.push(\"\");\n lines.push(\"Tier:\");\n lines.push(` hot: ${summary.byTier.hot}`);\n lines.push(` cold: ${summary.byTier.cold}`);\n lines.push(\"\");\n lines.push(\"Status:\");\n const statusEntries = Object.entries(summary.byStatus).sort(\n (a, b) => b[1] - a[1] || a[0].localeCompare(b[0]),\n );\n for (const [status, count] of statusEntries) {\n lines.push(` ${status}: ${count}`);\n }\n lines.push(\"\");\n lines.push(\"Top categories:\");\n const categoryEntries = Object.entries(summary.byCategory)\n .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))\n .slice(0, 8);\n for (const [cat, count] of categoryEntries) {\n lines.push(` ${cat}: ${count}`);\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Render a TierExplainResult as plain text for `remnic tier explain`.\n */\nexport function formatTierExplainText(explain: TierExplainResult): string {\n const lines: string[] = [];\n lines.push(`=== Tier Explain: ${explain.id} ===`);\n lines.push(`path: ${explain.path}`);\n lines.push(`current tier: ${explain.currentTier}`);\n lines.push(`status: ${explain.status}`);\n lines.push(`category: ${explain.category}`);\n lines.push(`value score: ${explain.valueScore.toFixed(3)}`);\n lines.push(\"\");\n lines.push(\"Tier-transition decision:\");\n lines.push(` next tier: ${explain.decision.nextTier}`);\n lines.push(` changed: ${explain.decision.changed}`);\n lines.push(` reason: ${explain.decision.reason}`);\n lines.push(\"\");\n lines.push(\"Signals:\");\n lines.push(` confidence: ${explain.signals.confidence}`);\n lines.push(` accessCount: ${explain.signals.accessCount}`);\n lines.push(` lastAccessed: ${explain.signals.lastAccessed ?? \"(never)\"}`);\n lines.push(` created: ${explain.signals.created}`);\n lines.push(` updated: ${explain.signals.updated}`);\n lines.push(` importance: ${explain.signals.importance}`);\n lines.push(` feedback: ${explain.signals.feedback}`);\n return lines.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|
package/dist/tmt.js
CHANGED
package/dist/tokens.js
CHANGED