@remnic/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstraction-nodes.d.ts +52 -0
- package/dist/abstraction-nodes.js +15 -0
- package/dist/abstraction-nodes.js.map +1 -0
- package/dist/access-cli.d.ts +5 -0
- package/dist/access-cli.js +308 -0
- package/dist/access-cli.js.map +1 -0
- package/dist/access-http.d.ts +158 -0
- package/dist/access-http.js +32 -0
- package/dist/access-http.js.map +1 -0
- package/dist/access-idempotency.d.ts +31 -0
- package/dist/access-idempotency.js +11 -0
- package/dist/access-idempotency.js.map +1 -0
- package/dist/access-mcp.d.ts +76 -0
- package/dist/access-mcp.js +8 -0
- package/dist/access-mcp.js.map +1 -0
- package/dist/access-schema.d.ts +266 -0
- package/dist/access-schema.js +29 -0
- package/dist/access-schema.js.map +1 -0
- package/dist/access-service.d.ts +614 -0
- package/dist/access-service.js +32 -0
- package/dist/access-service.js.map +1 -0
- package/dist/behavior-learner.d.ts +16 -0
- package/dist/behavior-learner.js +124 -0
- package/dist/behavior-learner.js.map +1 -0
- package/dist/behavior-signals.d.ts +15 -0
- package/dist/behavior-signals.js +11 -0
- package/dist/behavior-signals.js.map +1 -0
- package/dist/bootstrap.d.ts +46 -0
- package/dist/bootstrap.js +9 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/boxes.d.ts +93 -0
- package/dist/boxes.js +14 -0
- package/dist/boxes.js.map +1 -0
- package/dist/buffer.d.ts +22 -0
- package/dist/buffer.js +9 -0
- package/dist/buffer.js.map +1 -0
- package/dist/calibration.d.ts +81 -0
- package/dist/calibration.js +239 -0
- package/dist/calibration.js.map +1 -0
- package/dist/causal-behavior.d.ts +79 -0
- package/dist/causal-behavior.js +190 -0
- package/dist/causal-behavior.js.map +1 -0
- package/dist/causal-chain.d.ts +61 -0
- package/dist/causal-chain.js +24 -0
- package/dist/causal-chain.js.map +1 -0
- package/dist/causal-consolidation.d.ts +71 -0
- package/dist/causal-consolidation.js +211 -0
- package/dist/causal-consolidation.js.map +1 -0
- package/dist/causal-retrieval.d.ts +44 -0
- package/dist/causal-retrieval.js +184 -0
- package/dist/causal-retrieval.js.map +1 -0
- package/dist/causal-trajectory-graph.d.ts +13 -0
- package/dist/causal-trajectory-graph.js +59 -0
- package/dist/causal-trajectory-graph.js.map +1 -0
- package/dist/causal-trajectory.d.ts +68 -0
- package/dist/causal-trajectory.js +18 -0
- package/dist/causal-trajectory.js.map +1 -0
- package/dist/chunk-2CJCWDMR.js +87 -0
- package/dist/chunk-2CJCWDMR.js.map +1 -0
- package/dist/chunk-2NMMFZ5T.js +216 -0
- package/dist/chunk-2NMMFZ5T.js.map +1 -0
- package/dist/chunk-2PO5ZRKV.js +103 -0
- package/dist/chunk-2PO5ZRKV.js.map +1 -0
- package/dist/chunk-3QKK7QOS.js +154 -0
- package/dist/chunk-3QKK7QOS.js.map +1 -0
- package/dist/chunk-3SLRNYNG.js +26 -0
- package/dist/chunk-3SLRNYNG.js.map +1 -0
- package/dist/chunk-4A24LIM2.js +68 -0
- package/dist/chunk-4A24LIM2.js.map +1 -0
- package/dist/chunk-6HZ6AO2P.js +164 -0
- package/dist/chunk-6HZ6AO2P.js.map +1 -0
- package/dist/chunk-763GUIOU.js +302 -0
- package/dist/chunk-763GUIOU.js.map +1 -0
- package/dist/chunk-AAI7JARD.js +173 -0
- package/dist/chunk-AAI7JARD.js.map +1 -0
- package/dist/chunk-B7LOFDVE.js +112 -0
- package/dist/chunk-B7LOFDVE.js.map +1 -0
- package/dist/chunk-BDFZXRSO.js +318 -0
- package/dist/chunk-BDFZXRSO.js.map +1 -0
- package/dist/chunk-BOUYNNYD.js +707 -0
- package/dist/chunk-BOUYNNYD.js.map +1 -0
- package/dist/chunk-BRK4ODMI.js +60 -0
- package/dist/chunk-BRK4ODMI.js.map +1 -0
- package/dist/chunk-C6QPK5GG.js +111 -0
- package/dist/chunk-C6QPK5GG.js.map +1 -0
- package/dist/chunk-C7VW7C3F.js +117 -0
- package/dist/chunk-C7VW7C3F.js.map +1 -0
- package/dist/chunk-CDW777AI.js +621 -0
- package/dist/chunk-CDW777AI.js.map +1 -0
- package/dist/chunk-CULXMQJH.js +185 -0
- package/dist/chunk-CULXMQJH.js.map +1 -0
- package/dist/chunk-CXWFUJR2.js +1203 -0
- package/dist/chunk-CXWFUJR2.js.map +1 -0
- package/dist/chunk-DGXUHMOV.js +61 -0
- package/dist/chunk-DGXUHMOV.js.map +1 -0
- package/dist/chunk-DM2T26WE.js +61 -0
- package/dist/chunk-DM2T26WE.js.map +1 -0
- package/dist/chunk-DORBM6OB.js +81 -0
- package/dist/chunk-DORBM6OB.js.map +1 -0
- package/dist/chunk-DT5TVLJE.js +32 -0
- package/dist/chunk-DT5TVLJE.js.map +1 -0
- package/dist/chunk-EEQLFRUM.js +89 -0
- package/dist/chunk-EEQLFRUM.js.map +1 -0
- package/dist/chunk-EQINRHYR.js +672 -0
- package/dist/chunk-EQINRHYR.js.map +1 -0
- package/dist/chunk-ESSMF2FR.js +146 -0
- package/dist/chunk-ESSMF2FR.js.map +1 -0
- package/dist/chunk-ETOW6ACV.js +158 -0
- package/dist/chunk-ETOW6ACV.js.map +1 -0
- package/dist/chunk-FYIYMQ5N.js +221 -0
- package/dist/chunk-FYIYMQ5N.js.map +1 -0
- package/dist/chunk-G3AG3KZN.js +78 -0
- package/dist/chunk-G3AG3KZN.js.map +1 -0
- package/dist/chunk-GJR6D6KC.js +61 -0
- package/dist/chunk-GJR6D6KC.js.map +1 -0
- package/dist/chunk-GPGBSNKM.js +380 -0
- package/dist/chunk-GPGBSNKM.js.map +1 -0
- package/dist/chunk-H63EDPFJ.js +57 -0
- package/dist/chunk-H63EDPFJ.js.map +1 -0
- package/dist/chunk-HG2NKWR2.js +185 -0
- package/dist/chunk-HG2NKWR2.js.map +1 -0
- package/dist/chunk-HL4DB7TO.js +13 -0
- package/dist/chunk-HL4DB7TO.js.map +1 -0
- package/dist/chunk-HLBYLYRD.js +346 -0
- package/dist/chunk-HLBYLYRD.js.map +1 -0
- package/dist/chunk-HLXVTBF3.js +109 -0
- package/dist/chunk-HLXVTBF3.js.map +1 -0
- package/dist/chunk-IFFFR3MR.js +68 -0
- package/dist/chunk-IFFFR3MR.js.map +1 -0
- package/dist/chunk-ISY75RLM.js +1027 -0
- package/dist/chunk-ISY75RLM.js.map +1 -0
- package/dist/chunk-IZME7KW2.js +1886 -0
- package/dist/chunk-IZME7KW2.js.map +1 -0
- package/dist/chunk-J3BT33K7.js +720 -0
- package/dist/chunk-J3BT33K7.js.map +1 -0
- package/dist/chunk-J47FNDR7.js +113 -0
- package/dist/chunk-J47FNDR7.js.map +1 -0
- package/dist/chunk-JWPLJLDU.js +63 -0
- package/dist/chunk-JWPLJLDU.js.map +1 -0
- package/dist/chunk-K6WK37A6.js +865 -0
- package/dist/chunk-K6WK37A6.js.map +1 -0
- package/dist/chunk-KL4CP4SB.js +130 -0
- package/dist/chunk-KL4CP4SB.js.map +1 -0
- package/dist/chunk-KT4NEUNF.js +315 -0
- package/dist/chunk-KT4NEUNF.js.map +1 -0
- package/dist/chunk-KWBU5S5U.js +42 -0
- package/dist/chunk-KWBU5S5U.js.map +1 -0
- package/dist/chunk-L5RPWGFK.js +59 -0
- package/dist/chunk-L5RPWGFK.js.map +1 -0
- package/dist/chunk-L7WO3MZ4.js +128 -0
- package/dist/chunk-L7WO3MZ4.js.map +1 -0
- package/dist/chunk-LIRZNNUP.js +74 -0
- package/dist/chunk-LIRZNNUP.js.map +1 -0
- package/dist/chunk-LK6SGL53.js +22 -0
- package/dist/chunk-LK6SGL53.js.map +1 -0
- package/dist/chunk-LOBRX7VD.js +200 -0
- package/dist/chunk-LOBRX7VD.js.map +1 -0
- package/dist/chunk-LPSF4OQH.js +47 -0
- package/dist/chunk-LPSF4OQH.js.map +1 -0
- package/dist/chunk-LU3GQNDQ.js +152 -0
- package/dist/chunk-LU3GQNDQ.js.map +1 -0
- package/dist/chunk-M5KEYE5E.js +350 -0
- package/dist/chunk-M5KEYE5E.js.map +1 -0
- package/dist/chunk-M62O4P4T.js +41 -0
- package/dist/chunk-M62O4P4T.js.map +1 -0
- package/dist/chunk-MARWOCVP.js +48 -0
- package/dist/chunk-MARWOCVP.js.map +1 -0
- package/dist/chunk-MDDAA2AO.js +925 -0
- package/dist/chunk-MDDAA2AO.js.map +1 -0
- package/dist/chunk-MWGVGUIS.js +198 -0
- package/dist/chunk-MWGVGUIS.js.map +1 -0
- package/dist/chunk-N5AKDXAI.js +74 -0
- package/dist/chunk-N5AKDXAI.js.map +1 -0
- package/dist/chunk-NGAVDO7E.js +115 -0
- package/dist/chunk-NGAVDO7E.js.map +1 -0
- package/dist/chunk-NTTLPF7F.js +283 -0
- package/dist/chunk-NTTLPF7F.js.map +1 -0
- package/dist/chunk-ONRU4L2N.js +240 -0
- package/dist/chunk-ONRU4L2N.js.map +1 -0
- package/dist/chunk-ORZMT74A.js +209 -0
- package/dist/chunk-ORZMT74A.js.map +1 -0
- package/dist/chunk-OTAVQCSF.js +268 -0
- package/dist/chunk-OTAVQCSF.js.map +1 -0
- package/dist/chunk-PGK3VUHN.js +160 -0
- package/dist/chunk-PGK3VUHN.js.map +1 -0
- package/dist/chunk-Q6FETXJA.js +1362 -0
- package/dist/chunk-Q6FETXJA.js.map +1 -0
- package/dist/chunk-QANCTXQF.js +271 -0
- package/dist/chunk-QANCTXQF.js.map +1 -0
- package/dist/chunk-QCCCQT3O.js +189 -0
- package/dist/chunk-QCCCQT3O.js.map +1 -0
- package/dist/chunk-QDOSNLB4.js +1048 -0
- package/dist/chunk-QDOSNLB4.js.map +1 -0
- package/dist/chunk-QFQVZOGA.js +2168 -0
- package/dist/chunk-QFQVZOGA.js.map +1 -0
- package/dist/chunk-QPKFPHOO.js +178 -0
- package/dist/chunk-QPKFPHOO.js.map +1 -0
- package/dist/chunk-QSVPYQPG.js +268 -0
- package/dist/chunk-QSVPYQPG.js.map +1 -0
- package/dist/chunk-QWUUMMIK.js +3045 -0
- package/dist/chunk-QWUUMMIK.js.map +1 -0
- package/dist/chunk-QY2BHY5O.js +2378 -0
- package/dist/chunk-QY2BHY5O.js.map +1 -0
- package/dist/chunk-SCHEKPYH.js +349 -0
- package/dist/chunk-SCHEKPYH.js.map +1 -0
- package/dist/chunk-SCU65EZI.js +15 -0
- package/dist/chunk-SCU65EZI.js.map +1 -0
- package/dist/chunk-T4WRIV2C.js +170 -0
- package/dist/chunk-T4WRIV2C.js.map +1 -0
- package/dist/chunk-TKO4HZCK.js +1852 -0
- package/dist/chunk-TKO4HZCK.js.map +1 -0
- package/dist/chunk-TP4FZJIZ.js +93 -0
- package/dist/chunk-TP4FZJIZ.js.map +1 -0
- package/dist/chunk-TPB3I2AC.js +403 -0
- package/dist/chunk-TPB3I2AC.js.map +1 -0
- package/dist/chunk-TVVVQQAK.js +1431 -0
- package/dist/chunk-TVVVQQAK.js.map +1 -0
- package/dist/chunk-U4PV25RD.js +14 -0
- package/dist/chunk-U4PV25RD.js.map +1 -0
- package/dist/chunk-UCYSTFZR.js +284 -0
- package/dist/chunk-UCYSTFZR.js.map +1 -0
- package/dist/chunk-UHGBNIOS.js +205 -0
- package/dist/chunk-UHGBNIOS.js.map +1 -0
- package/dist/chunk-UIYZ5T3I.js +108 -0
- package/dist/chunk-UIYZ5T3I.js.map +1 -0
- package/dist/chunk-UV2FO7J4.js +747 -0
- package/dist/chunk-UV2FO7J4.js.map +1 -0
- package/dist/chunk-UZB5KHKX.js +63 -0
- package/dist/chunk-UZB5KHKX.js.map +1 -0
- package/dist/chunk-V3RXWQIE.js +626 -0
- package/dist/chunk-V3RXWQIE.js.map +1 -0
- package/dist/chunk-V4YC4LUK.js +444 -0
- package/dist/chunk-V4YC4LUK.js.map +1 -0
- package/dist/chunk-VEWZZM3H.js +133 -0
- package/dist/chunk-VEWZZM3H.js.map +1 -0
- package/dist/chunk-WWIQTB2Y.js +98 -0
- package/dist/chunk-WWIQTB2Y.js.map +1 -0
- package/dist/chunk-X7XN6YU4.js +24 -0
- package/dist/chunk-X7XN6YU4.js.map +1 -0
- package/dist/chunk-XKECPATV.js +202 -0
- package/dist/chunk-XKECPATV.js.map +1 -0
- package/dist/chunk-XYIK4LF6.js +75 -0
- package/dist/chunk-XYIK4LF6.js.map +1 -0
- package/dist/chunk-Y27UJK6V.js +39 -0
- package/dist/chunk-Y27UJK6V.js.map +1 -0
- package/dist/chunk-Y4Z4I6WK.js +9 -0
- package/dist/chunk-Y4Z4I6WK.js.map +1 -0
- package/dist/chunk-YAPUAHAY.js +10761 -0
- package/dist/chunk-YAPUAHAY.js.map +1 -0
- package/dist/chunk-YAZNBMNF.js +92 -0
- package/dist/chunk-YAZNBMNF.js.map +1 -0
- package/dist/chunk-YCN4BVDK.js +66 -0
- package/dist/chunk-YCN4BVDK.js.map +1 -0
- package/dist/chunk-YNCQ7E4M.js +388 -0
- package/dist/chunk-YNCQ7E4M.js.map +1 -0
- package/dist/chunk-YNI4S5WT.js +143 -0
- package/dist/chunk-YNI4S5WT.js.map +1 -0
- package/dist/chunk-YRMVARQP.js +406 -0
- package/dist/chunk-YRMVARQP.js.map +1 -0
- package/dist/chunk-Z5AAYHUC.js +79 -0
- package/dist/chunk-Z5AAYHUC.js.map +1 -0
- package/dist/chunk-Z5LAYHGJ.js +15 -0
- package/dist/chunk-Z5LAYHGJ.js.map +1 -0
- package/dist/chunk-ZJLY4QSU.js +823 -0
- package/dist/chunk-ZJLY4QSU.js.map +1 -0
- package/dist/chunk-ZKYI7UVO.js +276 -0
- package/dist/chunk-ZKYI7UVO.js.map +1 -0
- package/dist/chunk-ZPKBYX2F.js +297 -0
- package/dist/chunk-ZPKBYX2F.js.map +1 -0
- package/dist/chunking.d.ts +48 -0
- package/dist/chunking.js +11 -0
- package/dist/chunking.js.map +1 -0
- package/dist/cli.d.ts +1162 -0
- package/dist/cli.js +7187 -0
- package/dist/cli.js.map +1 -0
- package/dist/commitment-ledger.d.ts +83 -0
- package/dist/commitment-ledger.js +19 -0
- package/dist/commitment-ledger.js.map +1 -0
- package/dist/compression-optimizer.d.ts +37 -0
- package/dist/compression-optimizer.js +13 -0
- package/dist/compression-optimizer.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -0
- package/dist/cue-anchors.d.ts +50 -0
- package/dist/cue-anchors.js +15 -0
- package/dist/cue-anchors.js.map +1 -0
- package/dist/dashboard-runtime.d.ts +46 -0
- package/dist/dashboard-runtime.js +10 -0
- package/dist/dashboard-runtime.js.map +1 -0
- package/dist/day-summary.d.ts +6 -0
- package/dist/day-summary.js +10 -0
- package/dist/day-summary.js.map +1 -0
- package/dist/delinearize.d.ts +34 -0
- package/dist/delinearize.js +11 -0
- package/dist/delinearize.js.map +1 -0
- package/dist/embedding-fallback.d.ts +22 -0
- package/dist/embedding-fallback.js +8 -0
- package/dist/embedding-fallback.js.map +1 -0
- package/dist/engine-P26JFSVY.js +19 -0
- package/dist/engine-P26JFSVY.js.map +1 -0
- package/dist/entity-retrieval.d.ts +23 -0
- package/dist/entity-retrieval.js +24 -0
- package/dist/entity-retrieval.js.map +1 -0
- package/dist/evals.d.ts +282 -0
- package/dist/evals.js +32 -0
- package/dist/evals.js.map +1 -0
- package/dist/explicit-capture.d.ts +60 -0
- package/dist/explicit-capture.js +23 -0
- package/dist/explicit-capture.js.map +1 -0
- package/dist/extraction.d.ts +141 -0
- package/dist/extraction.js +22 -0
- package/dist/extraction.js.map +1 -0
- package/dist/fallback-llm.d.ts +95 -0
- package/dist/fallback-llm.js +12 -0
- package/dist/fallback-llm.js.map +1 -0
- package/dist/graph-dashboard-diff.d.ts +12 -0
- package/dist/graph-dashboard-diff.js +8 -0
- package/dist/graph-dashboard-diff.js.map +1 -0
- package/dist/graph-dashboard-key.d.ts +5 -0
- package/dist/graph-dashboard-key.js +7 -0
- package/dist/graph-dashboard-key.js.map +1 -0
- package/dist/graph-dashboard-parser.d.ts +20 -0
- package/dist/graph-dashboard-parser.js +8 -0
- package/dist/graph-dashboard-parser.js.map +1 -0
- package/dist/graph.d.ts +157 -0
- package/dist/graph.js +27 -0
- package/dist/graph.js.map +1 -0
- package/dist/harmonic-retrieval.d.ts +27 -0
- package/dist/harmonic-retrieval.js +12 -0
- package/dist/harmonic-retrieval.js.map +1 -0
- package/dist/himem.d.ts +23 -0
- package/dist/himem.js +7 -0
- package/dist/himem.js.map +1 -0
- package/dist/hygiene.d.ts +24 -0
- package/dist/hygiene.js +9 -0
- package/dist/hygiene.js.map +1 -0
- package/dist/identity-continuity.d.ts +17 -0
- package/dist/identity-continuity.js +19 -0
- package/dist/identity-continuity.js.map +1 -0
- package/dist/importance.d.ts +25 -0
- package/dist/importance.js +11 -0
- package/dist/importance.js.map +1 -0
- package/dist/index.d.ts +923 -0
- package/dist/index.js +2512 -0
- package/dist/index.js.map +1 -0
- package/dist/intent.d.ts +8 -0
- package/dist/intent.js +13 -0
- package/dist/intent.js.map +1 -0
- package/dist/json-extract.d.ts +14 -0
- package/dist/json-extract.js +9 -0
- package/dist/json-extract.js.map +1 -0
- package/dist/json-store.d.ts +5 -0
- package/dist/json-store.js +11 -0
- package/dist/json-store.js.map +1 -0
- package/dist/legacy-hook-compat.d.ts +3 -0
- package/dist/legacy-hook-compat.js +35 -0
- package/dist/legacy-hook-compat.js.map +1 -0
- package/dist/lifecycle.d.ts +52 -0
- package/dist/lifecycle.js +21 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/local-llm.d.ts +154 -0
- package/dist/local-llm.js +10 -0
- package/dist/local-llm.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.js +9 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory-action-policy.d.ts +13 -0
- package/dist/memory-action-policy.js +7 -0
- package/dist/memory-action-policy.js.map +1 -0
- package/dist/memory-cache.d.ts +35 -0
- package/dist/memory-cache.js +37 -0
- package/dist/memory-cache.js.map +1 -0
- package/dist/memory-lifecycle-ledger-utils.d.ts +13 -0
- package/dist/memory-lifecycle-ledger-utils.js +23 -0
- package/dist/memory-lifecycle-ledger-utils.js.map +1 -0
- package/dist/memory-projection-format.d.ts +4 -0
- package/dist/memory-projection-format.js +9 -0
- package/dist/memory-projection-format.js.map +1 -0
- package/dist/memory-projection-store-NxMkbocT.d.ts +221 -0
- package/dist/memory-projection-store.d.ts +3 -0
- package/dist/memory-projection-store.js +31 -0
- package/dist/memory-projection-store.js.map +1 -0
- package/dist/model-registry.d.ts +60 -0
- package/dist/model-registry.js +8 -0
- package/dist/model-registry.js.map +1 -0
- package/dist/native-knowledge.d.ts +94 -0
- package/dist/native-knowledge.js +26 -0
- package/dist/native-knowledge.js.map +1 -0
- package/dist/negative.d.ts +26 -0
- package/dist/negative.js +8 -0
- package/dist/negative.js.map +1 -0
- package/dist/objective-state-writers.d.ts +22 -0
- package/dist/objective-state-writers.js +313 -0
- package/dist/objective-state-writers.js.map +1 -0
- package/dist/objective-state.d.ts +75 -0
- package/dist/objective-state.js +17 -0
- package/dist/objective-state.js.map +1 -0
- package/dist/openai-chat-compat.d.ts +13 -0
- package/dist/openai-chat-compat.js +11 -0
- package/dist/openai-chat-compat.js.map +1 -0
- package/dist/operator-toolkit.d.ts +304 -0
- package/dist/operator-toolkit.js +41 -0
- package/dist/operator-toolkit.js.map +1 -0
- package/dist/opik-exporter.d.ts +72 -0
- package/dist/opik-exporter.js +361 -0
- package/dist/opik-exporter.js.map +1 -0
- package/dist/orchestrator-zTa-Qo-1.d.ts +1104 -0
- package/dist/orchestrator.d.ts +21 -0
- package/dist/orchestrator.js +145 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/policy-runtime.d.ts +37 -0
- package/dist/policy-runtime.js +13 -0
- package/dist/policy-runtime.js.map +1 -0
- package/dist/port-C1GZFv8h.d.ts +41 -0
- package/dist/profiling.d.ts +80 -0
- package/dist/profiling.js +10 -0
- package/dist/profiling.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +29 -0
- package/dist/qmd-recall-cache.js +13 -0
- package/dist/qmd-recall-cache.js.map +1 -0
- package/dist/qmd.d.ts +105 -0
- package/dist/qmd.js +13 -0
- package/dist/qmd.js.map +1 -0
- package/dist/recall-qos.d.ts +33 -0
- package/dist/recall-qos.js +10 -0
- package/dist/recall-qos.js.map +1 -0
- package/dist/recall-query-policy.d.ts +20 -0
- package/dist/recall-query-policy.js +11 -0
- package/dist/recall-query-policy.js.map +1 -0
- package/dist/recall-state.d.ts +113 -0
- package/dist/recall-state.js +12 -0
- package/dist/recall-state.js.map +1 -0
- package/dist/recall-tokenization.d.ts +4 -0
- package/dist/recall-tokenization.js +9 -0
- package/dist/recall-tokenization.js.map +1 -0
- package/dist/reconstruct.d.ts +16 -0
- package/dist/reconstruct.js +7 -0
- package/dist/reconstruct.js.map +1 -0
- package/dist/release-changelog.d.ts +7 -0
- package/dist/release-changelog.js +30 -0
- package/dist/release-changelog.js.map +1 -0
- package/dist/relevance.d.ts +18 -0
- package/dist/relevance.js +8 -0
- package/dist/relevance.js.map +1 -0
- package/dist/rerank.d.ts +57 -0
- package/dist/rerank.js +11 -0
- package/dist/rerank.js.map +1 -0
- package/dist/resolve-provider-secret.d.ts +16 -0
- package/dist/resolve-provider-secret.js +11 -0
- package/dist/resolve-provider-secret.js.map +1 -0
- package/dist/resume-bundles.d.ts +66 -0
- package/dist/resume-bundles.js +27 -0
- package/dist/resume-bundles.js.map +1 -0
- package/dist/retrieval-agents.d.ts +129 -0
- package/dist/retrieval-agents.js +23 -0
- package/dist/retrieval-agents.js.map +1 -0
- package/dist/retrieval.d.ts +19 -0
- package/dist/retrieval.js +10 -0
- package/dist/retrieval.js.map +1 -0
- package/dist/sanitize.d.ts +9 -0
- package/dist/sanitize.js +9 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/schemas.d.ts +688 -0
- package/dist/schemas.js +51 -0
- package/dist/schemas.js.map +1 -0
- package/dist/sdk-compat.d.ts +21 -0
- package/dist/sdk-compat.js +28 -0
- package/dist/sdk-compat.js.map +1 -0
- package/dist/semantic-consolidation.d.ts +42 -0
- package/dist/semantic-consolidation.js +12 -0
- package/dist/semantic-consolidation.js.map +1 -0
- package/dist/semantic-rule-promotion.d.ts +28 -0
- package/dist/semantic-rule-promotion.js +17 -0
- package/dist/semantic-rule-promotion.js.map +1 -0
- package/dist/semantic-rule-verifier.d.ts +19 -0
- package/dist/semantic-rule-verifier.js +18 -0
- package/dist/semantic-rule-verifier.js.map +1 -0
- package/dist/session-integrity.d.ts +67 -0
- package/dist/session-integrity.js +11 -0
- package/dist/session-integrity.js.map +1 -0
- package/dist/session-observer-bands.d.ts +6 -0
- package/dist/session-observer-bands.js +9 -0
- package/dist/session-observer-bands.js.map +1 -0
- package/dist/session-observer-state.d.ts +40 -0
- package/dist/session-observer-state.js +11 -0
- package/dist/session-observer-state.js.map +1 -0
- package/dist/signal.d.ts +6 -0
- package/dist/signal.js +9 -0
- package/dist/signal.js.map +1 -0
- package/dist/storage.d.ts +453 -0
- package/dist/storage.js +24 -0
- package/dist/storage.js.map +1 -0
- package/dist/store-contract.d.ts +10 -0
- package/dist/store-contract.js +21 -0
- package/dist/store-contract.js.map +1 -0
- package/dist/summarizer.d.ts +35 -0
- package/dist/summarizer.js +17 -0
- package/dist/summarizer.js.map +1 -0
- package/dist/summary-snapshot.d.ts +8 -0
- package/dist/summary-snapshot.js +13 -0
- package/dist/summary-snapshot.js.map +1 -0
- package/dist/temporal-index.d.ts +139 -0
- package/dist/temporal-index.js +29 -0
- package/dist/temporal-index.js.map +1 -0
- package/dist/threading.d.ts +62 -0
- package/dist/threading.js +8 -0
- package/dist/threading.js.map +1 -0
- package/dist/tier-migration.d.ts +44 -0
- package/dist/tier-migration.js +7 -0
- package/dist/tier-migration.js.map +1 -0
- package/dist/tier-routing.d.ts +21 -0
- package/dist/tier-routing.js +10 -0
- package/dist/tier-routing.js.map +1 -0
- package/dist/tmt.d.ts +79 -0
- package/dist/tmt.js +29 -0
- package/dist/tmt.js.map +1 -0
- package/dist/tokens.d.ts +24 -0
- package/dist/tokens.js +21 -0
- package/dist/tokens.js.map +1 -0
- package/dist/topics.d.ts +29 -0
- package/dist/topics.js +9 -0
- package/dist/topics.js.map +1 -0
- package/dist/transcript.d.ts +171 -0
- package/dist/transcript.js +9 -0
- package/dist/transcript.js.map +1 -0
- package/dist/trust-zones.d.ts +170 -0
- package/dist/trust-zones.js +32 -0
- package/dist/trust-zones.js.map +1 -0
- package/dist/types.d.ts +1243 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/utility-learner.d.ts +59 -0
- package/dist/utility-learner.js +17 -0
- package/dist/utility-learner.js.map +1 -0
- package/dist/utility-runtime.d.ts +21 -0
- package/dist/utility-runtime.js +16 -0
- package/dist/utility-runtime.js.map +1 -0
- package/dist/utility-telemetry.d.ts +68 -0
- package/dist/utility-telemetry.js +17 -0
- package/dist/utility-telemetry.js.map +1 -0
- package/dist/verified-recall.d.ts +17 -0
- package/dist/verified-recall.js +19 -0
- package/dist/verified-recall.js.map +1 -0
- package/dist/version-utils.d.ts +4 -0
- package/dist/version-utils.js +7 -0
- package/dist/version-utils.js.map +1 -0
- package/dist/work-product-ledger.d.ts +65 -0
- package/dist/work-product-ledger.js +18 -0
- package/dist/work-product-ledger.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import path from \"node:path\";\nimport type {\n IdentityInjectionMode,\n MemoryOsPresetName,\n PluginConfig,\n PrincipalRule,\n RecallPipelineConfig,\n RecallSectionConfig,\n ReasoningEffort,\n SessionObserverBandConfig,\n TriggerMode,\n} from \"./types.js\";\nimport { log } from \"./logger.js\";\nimport { cloneDefaultSessionObserverBands } from \"./session-observer-bands.js\";\nimport { readEnvVar, resolveHomeDir } from \"./runtime/env.js\";\n\nconst DEFAULT_MEMORY_DIR = path.join(\n resolveHomeDir(),\n \".openclaw\",\n \"workspace\",\n \"memory\",\n \"local\",\n);\n\nconst DEFAULT_WORKSPACE_DIR = path.join(\n resolveHomeDir(),\n \".openclaw\",\n \"workspace\",\n);\n\nfunction resolveEnvVars(value: string): string {\n const resolved = value.replace(/\\$\\{([A-Za-z_][A-Za-z0-9_]*)\\}/g, (_, envVar: string) => {\n const envValue = readEnvVar(envVar);\n if (!envValue) {\n throw new Error(`Environment variable ${envVar} is not set`);\n }\n return envValue;\n });\n const remaining = resolved.match(/\\$\\{[^}]*\\}/);\n if (remaining) {\n throw new Error(`Malformed environment variable placeholder: ${remaining[0]}`);\n }\n return resolved;\n}\n\nfunction normalizeOpenaiBaseUrl(value: string | undefined, source: \"config\" | \"env\"): string | undefined {\n if (!value) return undefined;\n const trimmed = value.trim();\n if (trimmed.length === 0) return undefined;\n\n let parsed: URL;\n try {\n parsed = new URL(trimmed);\n } catch {\n log.warn(`ignoring invalid openaiBaseUrl from ${source}: not a valid URL`);\n return undefined;\n }\n\n if (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") {\n log.warn(\n `ignoring openaiBaseUrl from ${source}: unsupported URL scheme (${parsed.protocol.replace(\":\", \"\")})`,\n );\n return undefined;\n }\n\n if (parsed.protocol === \"http:\") {\n log.warn(`openaiBaseUrl from ${source} is using insecure http; prefer https`);\n }\n\n // Avoid duplicate slash behavior in downstream baseURL path joins.\n let url = parsed.toString();\n while (url.endsWith(\"/\")) url = url.slice(0, -1);\n return url;\n}\n\nfunction normalizeMemoryRelativeDir(raw: unknown, fallback: string): string {\n if (typeof raw !== \"string\") return fallback;\n const trimmed = raw.trim();\n if (trimmed.length === 0) return fallback;\n\n const normalized = trimmed\n .replace(/\\\\/g, \"/\")\n .split(\"/\")\n .filter((segment) => segment.length > 0 && segment !== \".\" && segment !== \"..\")\n .join(\"/\");\n return normalized.length > 0 ? normalized : fallback;\n}\n\nconst VALID_EFFORTS: ReasoningEffort[] = [\"none\", \"low\", \"medium\", \"high\"];\nconst VALID_TRIGGERS: TriggerMode[] = [\"smart\", \"every_n\", \"time_based\"];\nconst VALID_IDENTITY_INJECTION_MODES: IdentityInjectionMode[] = [\"recovery_only\", \"minimal\", \"full\"];\nconst VALID_MEMORY_OS_PRESETS: MemoryOsPresetName[] = [\n \"conservative\",\n \"balanced\",\n \"research-max\",\n \"local-llm-heavy\",\n];\nexport const VALID_MEMORY_CATEGORIES = new Set([\n \"fact\",\n \"preference\",\n \"correction\",\n \"entity\",\n \"decision\",\n \"relationship\",\n \"principle\",\n \"commitment\",\n \"moment\",\n \"skill\",\n \"rule\",\n]);\n\nconst DEFAULT_BEHAVIOR_LOOP_PROTECTED_PARAMS = [\n \"maxMemoryTokens\",\n \"qmdMaxResults\",\n \"qmdColdMaxResults\",\n \"recallPlannerMaxQmdResultsMinimal\",\n \"verbatimArtifactsMaxRecall\",\n];\n\nconst MEMORY_OS_PRESET_ALIASES: Record<string, MemoryOsPresetName> = {\n research: \"research-max\",\n};\n\nconst MEMORY_OS_PRESETS: Record<MemoryOsPresetName, Record<string, unknown>> = {\n conservative: {\n maxMemoryTokens: 1500,\n recallPlannerMaxQmdResultsMinimal: 2,\n recallPlannerMaxQmdResultsFull: 5,\n queryAwareIndexingEnabled: false,\n verbatimArtifactsEnabled: false,\n verbatimArtifactsMaxRecall: 2,\n rerankEnabled: false,\n localLlmEnabled: false,\n localLlmFastEnabled: false,\n multiGraphMemoryEnabled: false,\n graphRecallEnabled: false,\n graphAssistInFullModeEnabled: false,\n proactiveExtractionEnabled: false,\n contextCompressionActionsEnabled: false,\n compressionGuidelineLearningEnabled: false,\n compressionGuidelineSemanticRefinementEnabled: false,\n maxProactiveQuestionsPerExtraction: 0,\n maxCompressionTokensPerHour: 0,\n behaviorLoopAutoTuneEnabled: false,\n },\n balanced: {\n maxMemoryTokens: 2000,\n recallPlannerMaxQmdResultsMinimal: 4,\n recallPlannerMaxQmdResultsFull: 8,\n queryAwareIndexingEnabled: true,\n verbatimArtifactsEnabled: true,\n verbatimArtifactsMaxRecall: 4,\n rerankEnabled: true,\n rerankProvider: \"local\",\n localLlmEnabled: false,\n localLlmFastEnabled: false,\n multiGraphMemoryEnabled: false,\n graphRecallEnabled: false,\n graphAssistInFullModeEnabled: false,\n proactiveExtractionEnabled: false,\n contextCompressionActionsEnabled: false,\n compressionGuidelineLearningEnabled: false,\n compressionGuidelineSemanticRefinementEnabled: false,\n maxProactiveQuestionsPerExtraction: 2,\n maxCompressionTokensPerHour: 1500,\n behaviorLoopAutoTuneEnabled: false,\n },\n \"research-max\": {\n maxMemoryTokens: 3200,\n recallPlannerMaxQmdResultsMinimal: 6,\n recallPlannerMaxQmdResultsFull: 12,\n queryAwareIndexingEnabled: true,\n verbatimArtifactsEnabled: true,\n verbatimArtifactsMaxRecall: 6,\n rerankEnabled: true,\n rerankProvider: \"local\",\n localLlmEnabled: false,\n localLlmFastEnabled: false,\n multiGraphMemoryEnabled: true,\n graphRecallEnabled: true,\n graphAssistInFullModeEnabled: true,\n proactiveExtractionEnabled: true,\n contextCompressionActionsEnabled: true,\n compressionGuidelineLearningEnabled: true,\n compressionGuidelineSemanticRefinementEnabled: true,\n maxProactiveQuestionsPerExtraction: 4,\n maxCompressionTokensPerHour: 3000,\n behaviorLoopAutoTuneEnabled: true,\n },\n \"local-llm-heavy\": {\n maxMemoryTokens: 2400,\n recallPlannerMaxQmdResultsMinimal: 4,\n recallPlannerMaxQmdResultsFull: 8,\n queryAwareIndexingEnabled: true,\n verbatimArtifactsEnabled: true,\n verbatimArtifactsMaxRecall: 4,\n rerankEnabled: true,\n rerankProvider: \"local\",\n localLlmEnabled: true,\n localLlmFastEnabled: true,\n embeddingFallbackProvider: \"local\",\n localLlmFallback: true,\n multiGraphMemoryEnabled: false,\n graphRecallEnabled: false,\n graphAssistInFullModeEnabled: false,\n proactiveExtractionEnabled: true,\n contextCompressionActionsEnabled: true,\n compressionGuidelineLearningEnabled: true,\n compressionGuidelineSemanticRefinementEnabled: false,\n maxProactiveQuestionsPerExtraction: 2,\n maxCompressionTokensPerHour: 1500,\n behaviorLoopAutoTuneEnabled: false,\n },\n};\n\nfunction resolveMemoryOsPreset(value: unknown): MemoryOsPresetName | undefined {\n if (typeof value !== \"string\") return undefined;\n const normalized = value.trim();\n if (VALID_MEMORY_OS_PRESETS.includes(normalized as MemoryOsPresetName)) {\n return normalized as MemoryOsPresetName;\n }\n return MEMORY_OS_PRESET_ALIASES[normalized];\n}\n\nexport function parseConfig(raw: unknown): PluginConfig {\n const baseCfg =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? (raw as Record<string, unknown>)\n : {};\n const memoryOsPreset = resolveMemoryOsPreset(baseCfg.memoryOsPreset);\n const cfg = memoryOsPreset\n ? {\n ...MEMORY_OS_PRESETS[memoryOsPreset],\n ...baseCfg,\n memoryOsPreset,\n }\n : baseCfg;\n\n let apiKey: string | undefined;\n if (typeof cfg.openaiApiKey === \"string\" && cfg.openaiApiKey.length > 0) {\n apiKey = resolveEnvVars(cfg.openaiApiKey);\n } else {\n apiKey = process.env.OPENAI_API_KEY;\n }\n\n // API key is optional at load time — retrieval works without it.\n // Extraction will log a warning if called without a key.\n\n const model =\n typeof cfg.model === \"string\" && cfg.model.length > 0\n ? cfg.model\n : \"gpt-5.2\";\n const captureMode =\n cfg.captureMode === \"explicit\" || cfg.captureMode === \"hybrid\"\n ? cfg.captureMode\n : \"implicit\";\n\n const rawEffort = cfg.reasoningEffort as string | undefined;\n const reasoningEffort: ReasoningEffort =\n rawEffort && VALID_EFFORTS.includes(rawEffort as ReasoningEffort)\n ? (rawEffort as ReasoningEffort)\n : \"low\";\n\n const rawTrigger = cfg.triggerMode as string | undefined;\n const triggerMode: TriggerMode =\n rawTrigger && VALID_TRIGGERS.includes(rawTrigger as TriggerMode)\n ? (rawTrigger as TriggerMode)\n : \"smart\";\n\n const memoryDir =\n typeof cfg.memoryDir === \"string\" && cfg.memoryDir.length > 0\n ? cfg.memoryDir\n : DEFAULT_MEMORY_DIR;\n const rawIdentityInjectionMode = cfg.identityInjectionMode as string | undefined;\n const identityInjectionMode: IdentityInjectionMode =\n rawIdentityInjectionMode\n && VALID_IDENTITY_INJECTION_MODES.includes(rawIdentityInjectionMode as IdentityInjectionMode)\n ? (rawIdentityInjectionMode as IdentityInjectionMode)\n : \"recovery_only\";\n const identityContinuityEnabled = cfg.identityContinuityEnabled === true;\n const sessionObserverBands: SessionObserverBandConfig[] = Array.isArray(cfg.sessionObserverBands)\n ? (cfg.sessionObserverBands as Array<Record<string, unknown>>)\n .map((band) => ({\n maxBytes:\n typeof band?.maxBytes === \"number\" ? Math.max(0, Math.floor(band.maxBytes)) : 0,\n triggerDeltaBytes:\n typeof band?.triggerDeltaBytes === \"number\"\n ? Math.max(0, Math.floor(band.triggerDeltaBytes))\n : 0,\n triggerDeltaTokens:\n typeof band?.triggerDeltaTokens === \"number\"\n ? Math.max(0, Math.floor(band.triggerDeltaTokens))\n : 0,\n }))\n .filter((band) => band.maxBytes > 0)\n : cloneDefaultSessionObserverBands();\n\n const principalRules: PrincipalRule[] = Array.isArray(cfg.principalFromSessionKeyRules)\n ? (cfg.principalFromSessionKeyRules as any[]).map((r) => ({\n match: typeof r?.match === \"string\" ? r.match : \"\",\n principal: typeof r?.principal === \"string\" ? r.principal : \"\",\n })).filter((r) => r.match.length > 0 && r.principal.length > 0)\n : [];\n\n // Optional file hygiene (memory file limits / truncation risk mitigation)\n const rawHygiene =\n cfg.fileHygiene && typeof cfg.fileHygiene === \"object\" && !Array.isArray(cfg.fileHygiene)\n ? (cfg.fileHygiene as Record<string, unknown>)\n : undefined;\n const hygieneEnabled = rawHygiene?.enabled === true;\n const fileHygiene = hygieneEnabled\n ? {\n enabled: true,\n lintEnabled: rawHygiene?.lintEnabled !== false,\n lintBudgetBytes:\n typeof rawHygiene?.lintBudgetBytes === \"number\" ? rawHygiene.lintBudgetBytes : 20_000,\n lintWarnRatio:\n typeof rawHygiene?.lintWarnRatio === \"number\" ? rawHygiene.lintWarnRatio : 0.8,\n lintPaths: Array.isArray(rawHygiene?.lintPaths)\n ? (rawHygiene!.lintPaths as string[])\n : [\"IDENTITY.md\", \"MEMORY.md\"],\n rotateEnabled: rawHygiene?.rotateEnabled === true,\n rotateMaxBytes:\n typeof rawHygiene?.rotateMaxBytes === \"number\" ? rawHygiene.rotateMaxBytes : 18_000,\n rotateKeepTailChars:\n typeof rawHygiene?.rotateKeepTailChars === \"number\"\n ? rawHygiene.rotateKeepTailChars\n : 2000,\n rotatePaths: Array.isArray(rawHygiene?.rotatePaths)\n ? (rawHygiene!.rotatePaths as string[])\n : [\"IDENTITY.md\"],\n archiveDir:\n typeof rawHygiene?.archiveDir === \"string\" && rawHygiene.archiveDir.length > 0\n ? (rawHygiene.archiveDir as string)\n : \".engram-archive\",\n runMinIntervalMs:\n typeof rawHygiene?.runMinIntervalMs === \"number\" ? rawHygiene.runMinIntervalMs : 5 * 60 * 1000,\n warningsLogEnabled: rawHygiene?.warningsLogEnabled === true,\n warningsLogPath:\n typeof rawHygiene?.warningsLogPath === \"string\" && rawHygiene.warningsLogPath.length > 0\n ? (rawHygiene.warningsLogPath as string)\n : \"hygiene/warnings.md\",\n indexEnabled: rawHygiene?.indexEnabled === true,\n indexPath:\n typeof rawHygiene?.indexPath === \"string\" && rawHygiene.indexPath.length > 0\n ? (rawHygiene.indexPath as string)\n : \"ENGRAM_INDEX.md\",\n }\n : undefined;\n\n const rawNativeKnowledge =\n cfg.nativeKnowledge && typeof cfg.nativeKnowledge === \"object\" && !Array.isArray(cfg.nativeKnowledge)\n ? (cfg.nativeKnowledge as Record<string, unknown>)\n : undefined;\n const nativeKnowledge = rawNativeKnowledge?.enabled === true\n ? {\n enabled: true,\n includeFiles: Array.isArray(rawNativeKnowledge.includeFiles)\n ? (rawNativeKnowledge.includeFiles as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"IDENTITY.md\", \"MEMORY.md\"],\n maxChunkChars:\n typeof rawNativeKnowledge.maxChunkChars === \"number\"\n ? Math.max(200, Math.floor(rawNativeKnowledge.maxChunkChars))\n : 900,\n maxResults:\n typeof rawNativeKnowledge.maxResults === \"number\"\n ? Math.max(0, Math.floor(rawNativeKnowledge.maxResults))\n : 4,\n maxChars:\n typeof rawNativeKnowledge.maxChars === \"number\"\n ? Math.max(0, Math.floor(rawNativeKnowledge.maxChars))\n : 2400,\n stateDir:\n normalizeMemoryRelativeDir(rawNativeKnowledge.stateDir, \"state/native-knowledge\"),\n openclawWorkspace:\n rawNativeKnowledge.openclawWorkspace &&\n typeof rawNativeKnowledge.openclawWorkspace === \"object\" &&\n !Array.isArray(rawNativeKnowledge.openclawWorkspace) &&\n (rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).enabled === true\n ? {\n enabled: true,\n bootstrapFiles: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).bootstrapFiles)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).bootstrapFiles as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"IDENTITY.md\", \"MEMORY.md\", \"USER.md\"],\n handoffGlobs: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).handoffGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).handoffGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"**/*handoff*.md\", \"handoffs/**/*.md\"],\n dailySummaryGlobs: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).dailySummaryGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).dailySummaryGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"**/*daily*summary*.md\", \"summaries/**/*.md\"],\n automationNoteGlobs: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).automationNoteGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).automationNoteGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [],\n workspaceDocGlobs: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).workspaceDocGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).workspaceDocGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [],\n excludeGlobs: [\n \".git/**\",\n \"node_modules/**\",\n \"dist/**\",\n \"build/**\",\n \"coverage/**\",\n \"**/*.log\",\n \"**/.env*\",\n \"**/*.pem\",\n \"**/*.key\",\n ...(Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).excludeGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).excludeGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : []),\n ].filter((value, index, array) => array.indexOf(value) === index),\n sharedSafeGlobs: Array.isArray((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).sharedSafeGlobs)\n ? ((rawNativeKnowledge.openclawWorkspace as Record<string, unknown>).sharedSafeGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [],\n }\n : undefined,\n obsidianVaults: Array.isArray(rawNativeKnowledge.obsidianVaults)\n ? (rawNativeKnowledge.obsidianVaults as unknown[])\n .filter((value): value is Record<string, unknown> => !!value && typeof value === \"object\" && !Array.isArray(value))\n .map((vault, index) => {\n const defaultId = `vault-${index + 1}`;\n return {\n id:\n typeof vault.id === \"string\" && vault.id.trim().length > 0\n ? vault.id.trim()\n : defaultId,\n rootDir:\n typeof vault.rootDir === \"string\" && vault.rootDir.trim().length > 0\n ? vault.rootDir.trim()\n : \"\",\n includeGlobs: Array.isArray(vault.includeGlobs)\n ? (vault.includeGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"**/*.md\"],\n excludeGlobs: Array.isArray(vault.excludeGlobs)\n ? (vault.excludeGlobs as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\".obsidian/**\", \"**/*.canvas\", \"**/*.png\", \"**/*.jpg\", \"**/*.jpeg\", \"**/*.gif\", \"**/*.pdf\"],\n namespace:\n typeof vault.namespace === \"string\" && vault.namespace.trim().length > 0\n ? vault.namespace.trim()\n : undefined,\n privacyClass:\n typeof vault.privacyClass === \"string\" && vault.privacyClass.trim().length > 0\n ? vault.privacyClass.trim()\n : undefined,\n folderRules: Array.isArray(vault.folderRules)\n ? (vault.folderRules as unknown[])\n .filter((value): value is Record<string, unknown> => !!value && typeof value === \"object\" && !Array.isArray(value))\n .map((rule) => ({\n pathPrefix:\n typeof rule.pathPrefix === \"string\" && rule.pathPrefix.trim().length > 0\n ? rule.pathPrefix.trim()\n : \"\",\n namespace:\n typeof rule.namespace === \"string\" && rule.namespace.trim().length > 0\n ? rule.namespace.trim()\n : undefined,\n privacyClass:\n typeof rule.privacyClass === \"string\" && rule.privacyClass.trim().length > 0\n ? rule.privacyClass.trim()\n : undefined,\n }))\n .filter((rule) => rule.pathPrefix.length > 0)\n : [],\n dailyNotePatterns: Array.isArray(vault.dailyNotePatterns)\n ? (vault.dailyNotePatterns as unknown[])\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n .filter(Boolean)\n : [\"YYYY-MM-DD\"],\n materializeBacklinks: vault.materializeBacklinks === true,\n };\n })\n .filter((vault) => vault.rootDir.length > 0)\n : [],\n }\n : undefined;\n\n const rawAgentAccessHttp =\n cfg.agentAccessHttp && typeof cfg.agentAccessHttp === \"object\" && !Array.isArray(cfg.agentAccessHttp)\n ? (cfg.agentAccessHttp as Record<string, unknown>)\n : undefined;\n const agentAccessHttp = {\n enabled: rawAgentAccessHttp?.enabled === true,\n host:\n typeof rawAgentAccessHttp?.host === \"string\" && rawAgentAccessHttp.host.trim().length > 0\n ? rawAgentAccessHttp.host.trim()\n : \"127.0.0.1\",\n port:\n typeof rawAgentAccessHttp?.port === \"number\"\n ? Math.max(0, Math.floor(rawAgentAccessHttp.port))\n : 4318,\n authToken:\n typeof rawAgentAccessHttp?.authToken === \"string\" && rawAgentAccessHttp.authToken.trim().length > 0\n ? resolveEnvVars(rawAgentAccessHttp.authToken)\n : process.env.OPENCLAW_REMNIC_ACCESS_TOKEN ?? process.env.OPENCLAW_ENGRAM_ACCESS_TOKEN,\n principal:\n typeof rawAgentAccessHttp?.principal === \"string\" && rawAgentAccessHttp.principal.trim().length > 0\n ? resolveEnvVars(rawAgentAccessHttp.principal)\n : process.env.OPENCLAW_ENGRAM_ACCESS_PRINCIPAL?.trim() || undefined,\n maxBodyBytes:\n typeof rawAgentAccessHttp?.maxBodyBytes === \"number\"\n ? Math.max(1, Math.floor(rawAgentAccessHttp.maxBodyBytes))\n : 131072,\n };\n\n let baseUrl: string | undefined;\n if (typeof cfg.openaiBaseUrl === \"string\" && cfg.openaiBaseUrl.length > 0) {\n baseUrl = normalizeOpenaiBaseUrl(resolveEnvVars(cfg.openaiBaseUrl), \"config\");\n } else {\n baseUrl = normalizeOpenaiBaseUrl(process.env.OPENAI_BASE_URL, \"env\");\n }\n\n const sharedCrossSignalSemanticEnabled =\n cfg.sharedCrossSignalSemanticEnabled === true || cfg.crossSignalsSemanticEnabled === true;\n const sharedCrossSignalSemanticTimeoutMs =\n typeof cfg.sharedCrossSignalSemanticTimeoutMs === \"number\"\n ? Math.max(1, Math.floor(cfg.sharedCrossSignalSemanticTimeoutMs))\n : typeof cfg.crossSignalsSemanticTimeoutMs === \"number\"\n ? Math.max(1, Math.floor(cfg.crossSignalsSemanticTimeoutMs))\n : 4000;\n const recallPipelineConfig = buildRecallPipelineConfig(cfg);\n\n return {\n openaiApiKey: apiKey,\n openaiBaseUrl: baseUrl,\n model,\n reasoningEffort,\n triggerMode,\n bufferMaxTurns:\n typeof cfg.bufferMaxTurns === \"number\" ? cfg.bufferMaxTurns : 5,\n bufferMaxMinutes:\n typeof cfg.bufferMaxMinutes === \"number\" ? cfg.bufferMaxMinutes : 15,\n consolidateEveryN:\n typeof cfg.consolidateEveryN === \"number\" ? cfg.consolidateEveryN : 3,\n highSignalPatterns: Array.isArray(cfg.highSignalPatterns)\n ? (cfg.highSignalPatterns as string[])\n : [],\n maxMemoryTokens:\n typeof cfg.maxMemoryTokens === \"number\" ? cfg.maxMemoryTokens : 2000,\n memoryOsPreset,\n qmdEnabled: cfg.qmdEnabled !== false,\n qmdCollection:\n typeof cfg.qmdCollection === \"string\"\n ? cfg.qmdCollection\n : \"openclaw-engram\",\n qmdMaxResults:\n typeof cfg.qmdMaxResults === \"number\" ? cfg.qmdMaxResults : 8,\n qmdColdTierEnabled: cfg.qmdColdTierEnabled === true,\n qmdColdCollection:\n typeof cfg.qmdColdCollection === \"string\" && cfg.qmdColdCollection.length > 0\n ? cfg.qmdColdCollection\n : \"openclaw-engram-cold\",\n qmdColdMaxResults:\n typeof cfg.qmdColdMaxResults === \"number\" ? cfg.qmdColdMaxResults : 8,\n qmdTierMigrationEnabled: cfg.qmdTierMigrationEnabled === true,\n qmdTierDemotionMinAgeDays:\n typeof cfg.qmdTierDemotionMinAgeDays === \"number\"\n ? Math.max(0, Math.floor(cfg.qmdTierDemotionMinAgeDays))\n : 14,\n qmdTierDemotionValueThreshold:\n typeof cfg.qmdTierDemotionValueThreshold === \"number\"\n ? Math.max(0, Math.min(1, cfg.qmdTierDemotionValueThreshold))\n : 0.35,\n qmdTierPromotionValueThreshold:\n typeof cfg.qmdTierPromotionValueThreshold === \"number\"\n ? Math.max(0, Math.min(1, cfg.qmdTierPromotionValueThreshold))\n : 0.7,\n qmdTierParityGraphEnabled: cfg.qmdTierParityGraphEnabled !== false,\n qmdTierParityHiMemEnabled: cfg.qmdTierParityHiMemEnabled !== false,\n qmdTierAutoBackfillEnabled: cfg.qmdTierAutoBackfillEnabled === true,\n embeddingFallbackEnabled: cfg.embeddingFallbackEnabled !== false,\n embeddingFallbackProvider:\n cfg.embeddingFallbackProvider === \"openai\"\n ? \"openai\"\n : cfg.embeddingFallbackProvider === \"local\"\n ? \"local\"\n : \"auto\",\n qmdPath:\n typeof cfg.qmdPath === \"string\" && cfg.qmdPath.length > 0\n ? cfg.qmdPath\n : undefined,\n memoryDir,\n debug: cfg.debug === true,\n identityEnabled: cfg.identityEnabled !== false,\n identityContinuityEnabled,\n identityInjectionMode,\n identityMaxInjectChars:\n typeof cfg.identityMaxInjectChars === \"number\"\n ? Math.max(0, Math.floor(cfg.identityMaxInjectChars))\n : 1200,\n continuityIncidentLoggingEnabled:\n typeof cfg.continuityIncidentLoggingEnabled === \"boolean\"\n ? cfg.continuityIncidentLoggingEnabled\n : identityContinuityEnabled,\n continuityAuditEnabled: cfg.continuityAuditEnabled === true,\n sessionObserverEnabled: cfg.sessionObserverEnabled === true,\n sessionObserverDebounceMs:\n typeof cfg.sessionObserverDebounceMs === \"number\"\n ? Math.max(0, Math.floor(cfg.sessionObserverDebounceMs))\n : 120_000,\n sessionObserverBands,\n injectQuestions: cfg.injectQuestions === true,\n commitmentDecayDays:\n typeof cfg.commitmentDecayDays === \"number\" ? cfg.commitmentDecayDays : 90,\n workspaceDir:\n typeof cfg.workspaceDir === \"string\" && cfg.workspaceDir.length > 0\n ? cfg.workspaceDir\n : DEFAULT_WORKSPACE_DIR,\n captureMode,\n fileHygiene,\n nativeKnowledge,\n agentAccessHttp,\n // Access tracking (Phase 1A)\n accessTrackingEnabled: cfg.accessTrackingEnabled !== false,\n accessTrackingBufferMaxSize:\n typeof cfg.accessTrackingBufferMaxSize === \"number\"\n ? cfg.accessTrackingBufferMaxSize\n : 100,\n // Retrieval options\n recencyWeight:\n typeof cfg.recencyWeight === \"number\" ? cfg.recencyWeight : 0.2,\n boostAccessCount: cfg.boostAccessCount !== false,\n recordEmptyRecallImpressions: cfg.recordEmptyRecallImpressions === true,\n // v2.2 Advanced Retrieval (safe defaults: off unless enabled)\n queryExpansionEnabled: cfg.queryExpansionEnabled === true,\n queryExpansionMaxQueries:\n typeof cfg.queryExpansionMaxQueries === \"number\"\n ? cfg.queryExpansionMaxQueries\n : 4,\n queryExpansionMinTokenLen:\n typeof cfg.queryExpansionMinTokenLen === \"number\"\n ? cfg.queryExpansionMinTokenLen\n : 3,\n rerankEnabled: cfg.rerankEnabled === true,\n rerankProvider:\n cfg.rerankProvider === \"cloud\" ? \"cloud\" : \"local\",\n rerankMaxCandidates:\n typeof cfg.rerankMaxCandidates === \"number\" ? cfg.rerankMaxCandidates : 20,\n rerankTimeoutMs:\n typeof cfg.rerankTimeoutMs === \"number\" ? cfg.rerankTimeoutMs : 8000,\n rerankCacheEnabled: cfg.rerankCacheEnabled !== false,\n rerankCacheTtlMs:\n typeof cfg.rerankCacheTtlMs === \"number\" ? cfg.rerankCacheTtlMs : 60 * 60 * 1000,\n feedbackEnabled: cfg.feedbackEnabled === true,\n // v2.2 Negative Examples (safe defaults: off unless enabled)\n negativeExamplesEnabled: cfg.negativeExamplesEnabled === true,\n negativeExamplesPenaltyPerHit:\n typeof cfg.negativeExamplesPenaltyPerHit === \"number\"\n ? cfg.negativeExamplesPenaltyPerHit\n : 0.05,\n negativeExamplesPenaltyCap:\n typeof cfg.negativeExamplesPenaltyCap === \"number\"\n ? cfg.negativeExamplesPenaltyCap\n : 0.25,\n // Chunking (Phase 2A)\n chunkingEnabled: cfg.chunkingEnabled === true, // Off by default initially\n chunkingTargetTokens:\n typeof cfg.chunkingTargetTokens === \"number\" ? cfg.chunkingTargetTokens : 200,\n chunkingMinTokens:\n typeof cfg.chunkingMinTokens === \"number\" ? cfg.chunkingMinTokens : 150,\n chunkingOverlapSentences:\n typeof cfg.chunkingOverlapSentences === \"number\" ? cfg.chunkingOverlapSentences : 2,\n // Contradiction Detection (Phase 2B)\n contradictionDetectionEnabled: cfg.contradictionDetectionEnabled === true, // Off by default initially\n contradictionSimilarityThreshold:\n typeof cfg.contradictionSimilarityThreshold === \"number\" ? cfg.contradictionSimilarityThreshold : 0.7,\n contradictionMinConfidence:\n typeof cfg.contradictionMinConfidence === \"number\" ? cfg.contradictionMinConfidence : 0.9,\n contradictionAutoResolve: cfg.contradictionAutoResolve !== false,\n // Memory Linking (Phase 3A)\n memoryLinkingEnabled: cfg.memoryLinkingEnabled === true, // Off by default initially\n // Conversation Threading (Phase 3B)\n threadingEnabled: cfg.threadingEnabled === true, // Off by default initially\n threadingGapMinutes:\n typeof cfg.threadingGapMinutes === \"number\" ? cfg.threadingGapMinutes : 30,\n // Memory Summarization (Phase 4A)\n summarizationEnabled: cfg.summarizationEnabled === true, // Off by default\n summarizationTriggerCount:\n typeof cfg.summarizationTriggerCount === \"number\" ? cfg.summarizationTriggerCount : 1000,\n summarizationRecentToKeep:\n typeof cfg.summarizationRecentToKeep === \"number\" ? cfg.summarizationRecentToKeep : 300,\n summarizationImportanceThreshold:\n typeof cfg.summarizationImportanceThreshold === \"number\" ? cfg.summarizationImportanceThreshold : 0.3,\n summarizationProtectedTags: Array.isArray(cfg.summarizationProtectedTags)\n ? (cfg.summarizationProtectedTags as string[])\n : [\"commitment\", \"preference\", \"decision\", \"principle\"],\n // Topic Extraction (Phase 4B)\n topicExtractionEnabled: cfg.topicExtractionEnabled !== false, // On by default\n topicExtractionTopN:\n typeof cfg.topicExtractionTopN === \"number\" ? cfg.topicExtractionTopN : 50,\n // Transcript & Context Preservation (v2.0)\n // Transcript archive\n transcriptEnabled: cfg.transcriptEnabled !== false, // default: true\n transcriptRetentionDays:\n typeof cfg.transcriptRetentionDays === \"number\" ? cfg.transcriptRetentionDays : 7,\n transcriptSkipChannelTypes: Array.isArray(cfg.transcriptSkipChannelTypes)\n ? (cfg.transcriptSkipChannelTypes as string[])\n : [\"cron\"], // default: skip cron transcripts\n // Transcript injection\n transcriptRecallHours:\n typeof cfg.transcriptRecallHours === \"number\" ? cfg.transcriptRecallHours : 12,\n maxTranscriptTurns:\n typeof cfg.maxTranscriptTurns === \"number\" ? cfg.maxTranscriptTurns : 50,\n maxTranscriptTokens:\n typeof cfg.maxTranscriptTokens === \"number\" ? cfg.maxTranscriptTokens : 1000,\n // Checkpoint\n checkpointEnabled: cfg.checkpointEnabled !== false, // default: true\n checkpointTurns:\n typeof cfg.checkpointTurns === \"number\" ? cfg.checkpointTurns : 15,\n // Compaction reset (opt-in, default: false)\n compactionResetEnabled: cfg.compactionResetEnabled === true,\n // Hourly summaries\n hourlySummariesEnabled: cfg.hourlySummariesEnabled !== false, // default: true\n daySummaryEnabled: cfg.daySummaryEnabled !== false, // default: true\n hourlySummaryCronAutoRegister: cfg.hourlySummaryCronAutoRegister === true,\n nightlyGovernanceCronAutoRegister: cfg.nightlyGovernanceCronAutoRegister === true,\n summaryRecallHours:\n typeof cfg.summaryRecallHours === \"number\" ? cfg.summaryRecallHours : 24,\n maxSummaryCount:\n typeof cfg.maxSummaryCount === \"number\" ? cfg.maxSummaryCount : 6,\n summaryModel:\n typeof cfg.summaryModel === \"string\" && cfg.summaryModel.length > 0\n ? cfg.summaryModel\n : model, // default: same as extraction model\n // v2.4 Extended hourly summaries (default off)\n hourlySummariesExtendedEnabled: cfg.hourlySummariesExtendedEnabled === true,\n hourlySummariesIncludeToolStats: cfg.hourlySummariesIncludeToolStats === true,\n hourlySummariesIncludeSystemMessages: cfg.hourlySummariesIncludeSystemMessages === true,\n hourlySummariesMaxTurnsPerRun:\n typeof cfg.hourlySummariesMaxTurnsPerRun === \"number\" ? cfg.hourlySummariesMaxTurnsPerRun : 200,\n // v2.4 Conversation index (default off)\n conversationIndexEnabled: cfg.conversationIndexEnabled === true,\n conversationIndexBackend: cfg.conversationIndexBackend === \"faiss\" ? \"faiss\" : \"qmd\",\n conversationIndexQmdCollection:\n typeof cfg.conversationIndexQmdCollection === \"string\" && cfg.conversationIndexQmdCollection.length > 0\n ? cfg.conversationIndexQmdCollection\n : \"openclaw-engram-conversations\",\n conversationIndexRetentionDays:\n typeof cfg.conversationIndexRetentionDays === \"number\" ? cfg.conversationIndexRetentionDays : 30,\n conversationIndexMinUpdateIntervalMs:\n typeof cfg.conversationIndexMinUpdateIntervalMs === \"number\"\n ? cfg.conversationIndexMinUpdateIntervalMs\n : 15 * 60_000,\n conversationIndexEmbedOnUpdate: cfg.conversationIndexEmbedOnUpdate === true,\n conversationIndexFaissScriptPath:\n typeof cfg.conversationIndexFaissScriptPath === \"string\" && cfg.conversationIndexFaissScriptPath.trim().length > 0\n ? cfg.conversationIndexFaissScriptPath.trim()\n : undefined,\n conversationIndexFaissPythonBin:\n typeof cfg.conversationIndexFaissPythonBin === \"string\" && cfg.conversationIndexFaissPythonBin.trim().length > 0\n ? cfg.conversationIndexFaissPythonBin.trim()\n : undefined,\n conversationIndexFaissModelId:\n typeof cfg.conversationIndexFaissModelId === \"string\" && cfg.conversationIndexFaissModelId.trim().length > 0\n ? cfg.conversationIndexFaissModelId.trim()\n : \"text-embedding-3-small\",\n conversationIndexFaissIndexDir:\n typeof cfg.conversationIndexFaissIndexDir === \"string\" && cfg.conversationIndexFaissIndexDir.trim().length > 0\n ? cfg.conversationIndexFaissIndexDir.trim()\n : \"state/conversation-index/faiss\",\n conversationIndexFaissUpsertTimeoutMs:\n typeof cfg.conversationIndexFaissUpsertTimeoutMs === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationIndexFaissUpsertTimeoutMs))\n : 30_000,\n conversationIndexFaissSearchTimeoutMs:\n typeof cfg.conversationIndexFaissSearchTimeoutMs === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationIndexFaissSearchTimeoutMs))\n : 5_000,\n conversationIndexFaissHealthTimeoutMs:\n typeof cfg.conversationIndexFaissHealthTimeoutMs === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationIndexFaissHealthTimeoutMs))\n : 2_000,\n conversationIndexFaissMaxBatchSize:\n typeof cfg.conversationIndexFaissMaxBatchSize === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationIndexFaissMaxBatchSize))\n : 512,\n conversationIndexFaissMaxSearchK:\n typeof cfg.conversationIndexFaissMaxSearchK === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationIndexFaissMaxSearchK))\n : 50,\n conversationRecallTopK:\n typeof cfg.conversationRecallTopK === \"number\" ? cfg.conversationRecallTopK : 3,\n conversationRecallMaxChars:\n typeof cfg.conversationRecallMaxChars === \"number\" ? cfg.conversationRecallMaxChars : 2500,\n conversationRecallTimeoutMs:\n typeof cfg.conversationRecallTimeoutMs === \"number\" ? cfg.conversationRecallTimeoutMs : 800,\n evalHarnessEnabled: cfg.evalHarnessEnabled === true,\n evalShadowModeEnabled: cfg.evalShadowModeEnabled === true,\n benchmarkBaselineSnapshotsEnabled: cfg.benchmarkBaselineSnapshotsEnabled === true,\n benchmarkDeltaReporterEnabled: cfg.benchmarkDeltaReporterEnabled === true,\n benchmarkStoredBaselineEnabled: cfg.benchmarkStoredBaselineEnabled === true,\n evalStoreDir:\n typeof cfg.evalStoreDir === \"string\" && cfg.evalStoreDir.trim().length > 0\n ? cfg.evalStoreDir.trim()\n : path.join(memoryDir, \"state\", \"evals\"),\n objectiveStateMemoryEnabled: cfg.objectiveStateMemoryEnabled === true,\n objectiveStateSnapshotWritesEnabled: cfg.objectiveStateSnapshotWritesEnabled === true,\n objectiveStateRecallEnabled: cfg.objectiveStateRecallEnabled === true,\n objectiveStateStoreDir:\n typeof cfg.objectiveStateStoreDir === \"string\" && cfg.objectiveStateStoreDir.trim().length > 0\n ? cfg.objectiveStateStoreDir.trim()\n : path.join(memoryDir, \"state\", \"objective-state\"),\n causalTrajectoryMemoryEnabled: cfg.causalTrajectoryMemoryEnabled === true,\n causalTrajectoryStoreDir:\n typeof cfg.causalTrajectoryStoreDir === \"string\" && cfg.causalTrajectoryStoreDir.trim().length > 0\n ? cfg.causalTrajectoryStoreDir.trim()\n : path.join(memoryDir, \"state\", \"causal-trajectories\"),\n causalTrajectoryRecallEnabled: cfg.causalTrajectoryRecallEnabled === true,\n actionGraphRecallEnabled: cfg.actionGraphRecallEnabled === true,\n trustZonesEnabled: cfg.trustZonesEnabled === true,\n quarantinePromotionEnabled: cfg.quarantinePromotionEnabled === true,\n trustZoneStoreDir:\n typeof cfg.trustZoneStoreDir === \"string\" && cfg.trustZoneStoreDir.trim().length > 0\n ? cfg.trustZoneStoreDir.trim()\n : path.join(memoryDir, \"state\", \"trust-zones\"),\n trustZoneRecallEnabled: cfg.trustZoneRecallEnabled === true,\n memoryPoisoningDefenseEnabled: cfg.memoryPoisoningDefenseEnabled === true,\n memoryRedTeamBenchEnabled: cfg.memoryRedTeamBenchEnabled === true,\n harmonicRetrievalEnabled: cfg.harmonicRetrievalEnabled === true,\n abstractionAnchorsEnabled: cfg.abstractionAnchorsEnabled === true,\n verifiedRecallEnabled: cfg.verifiedRecallEnabled === true,\n semanticRulePromotionEnabled: cfg.semanticRulePromotionEnabled === true,\n semanticRuleVerificationEnabled: cfg.semanticRuleVerificationEnabled === true,\n semanticConsolidationEnabled: cfg.semanticConsolidationEnabled === true,\n semanticConsolidationModel:\n typeof cfg.semanticConsolidationModel === \"string\" && cfg.semanticConsolidationModel.length > 0\n ? cfg.semanticConsolidationModel\n : \"auto\",\n semanticConsolidationThreshold:\n typeof cfg.semanticConsolidationThreshold === \"number\" ? cfg.semanticConsolidationThreshold : 0.8,\n semanticConsolidationMinClusterSize:\n typeof cfg.semanticConsolidationMinClusterSize === \"number\"\n ? Math.max(2, Math.floor(cfg.semanticConsolidationMinClusterSize))\n : 3,\n semanticConsolidationExcludeCategories: Array.isArray(cfg.semanticConsolidationExcludeCategories)\n ? (cfg.semanticConsolidationExcludeCategories as unknown[]).filter(\n (c): c is string => typeof c === \"string\" && c.length > 0,\n )\n : [\"correction\", \"commitment\"],\n semanticConsolidationIntervalHours:\n typeof cfg.semanticConsolidationIntervalHours === \"number\"\n ? Math.max(1, Math.floor(cfg.semanticConsolidationIntervalHours))\n : 168,\n semanticConsolidationMaxPerRun:\n typeof cfg.semanticConsolidationMaxPerRun === \"number\"\n ? Math.max(0, Math.floor(cfg.semanticConsolidationMaxPerRun))\n : 100,\n creationMemoryEnabled: cfg.creationMemoryEnabled === true,\n memoryUtilityLearningEnabled: cfg.memoryUtilityLearningEnabled === true,\n promotionByOutcomeEnabled: cfg.promotionByOutcomeEnabled === true,\n commitmentLedgerEnabled: cfg.commitmentLedgerEnabled === true,\n commitmentLifecycleEnabled: cfg.commitmentLifecycleEnabled === true,\n commitmentStaleDays:\n typeof cfg.commitmentStaleDays === \"number\" ? cfg.commitmentStaleDays : 14,\n commitmentLedgerDir:\n typeof cfg.commitmentLedgerDir === \"string\" && cfg.commitmentLedgerDir.trim().length > 0\n ? cfg.commitmentLedgerDir.trim()\n : path.join(memoryDir, \"state\", \"commitment-ledger\"),\n resumeBundlesEnabled: cfg.resumeBundlesEnabled === true,\n resumeBundleDir:\n typeof cfg.resumeBundleDir === \"string\" && cfg.resumeBundleDir.trim().length > 0\n ? cfg.resumeBundleDir.trim()\n : path.join(memoryDir, \"state\", \"resume-bundles\"),\n workProductRecallEnabled: cfg.workProductRecallEnabled === true,\n workTasksEnabled: cfg.workTasksEnabled === true,\n workProjectsEnabled: cfg.workProjectsEnabled === true,\n workTasksDir:\n typeof cfg.workTasksDir === \"string\" && cfg.workTasksDir.trim().length > 0\n ? cfg.workTasksDir.trim()\n : path.join(memoryDir, \"work\", \"tasks\"),\n workProjectsDir:\n typeof cfg.workProjectsDir === \"string\" && cfg.workProjectsDir.trim().length > 0\n ? cfg.workProjectsDir.trim()\n : path.join(memoryDir, \"work\", \"projects\"),\n workIndexEnabled: cfg.workIndexEnabled === true,\n workIndexDir:\n typeof cfg.workIndexDir === \"string\" && cfg.workIndexDir.trim().length > 0\n ? cfg.workIndexDir.trim()\n : path.join(memoryDir, \"work\", \"index\"),\n workTaskIndexEnabled: cfg.workTaskIndexEnabled === true,\n workProjectIndexEnabled: cfg.workProjectIndexEnabled === true,\n workIndexAutoRebuildEnabled: cfg.workIndexAutoRebuildEnabled === true,\n workIndexAutoRebuildDebounceMs:\n typeof cfg.workIndexAutoRebuildDebounceMs === \"number\" ? cfg.workIndexAutoRebuildDebounceMs : 1000,\n workProductLedgerDir:\n typeof cfg.workProductLedgerDir === \"string\" && cfg.workProductLedgerDir.trim().length > 0\n ? cfg.workProductLedgerDir.trim()\n : path.join(memoryDir, \"state\", \"work-product-ledger\"),\n abstractionNodeStoreDir:\n typeof cfg.abstractionNodeStoreDir === \"string\" && cfg.abstractionNodeStoreDir.trim().length > 0\n ? cfg.abstractionNodeStoreDir.trim()\n : path.join(memoryDir, \"state\", \"abstraction-nodes\"),\n // Local LLM Provider (v2.1)\n localLlmEnabled: cfg.localLlmEnabled === true || cfg.localLlmEnabled === \"true\", // default: false\n localLlmUrl:\n typeof cfg.localLlmUrl === \"string\" && cfg.localLlmUrl.length > 0\n ? cfg.localLlmUrl\n : \"http://localhost:1234/v1\",\n localLlmModel:\n typeof cfg.localLlmModel === \"string\" && cfg.localLlmModel.length > 0\n ? cfg.localLlmModel\n : \"local-model\",\n localLlmApiKey:\n typeof cfg.localLlmApiKey === \"string\" && cfg.localLlmApiKey.length > 0\n ? resolveEnvVars(cfg.localLlmApiKey)\n : undefined,\n localLlmHeaders:\n cfg.localLlmHeaders && typeof cfg.localLlmHeaders === \"object\" && !Array.isArray(cfg.localLlmHeaders)\n ? Object.fromEntries(\n Object.entries(cfg.localLlmHeaders as Record<string, unknown>)\n .filter(([, value]) => typeof value === \"string\")\n .map(([key, value]) => [key, String(value)]),\n )\n : undefined,\n localLlmAuthHeader: cfg.localLlmAuthHeader !== false,\n localLlmFallback: cfg.localLlmFallback !== false, // default: true\n localLlmHomeDir:\n typeof cfg.localLlmHomeDir === \"string\" && cfg.localLlmHomeDir.length > 0\n ? cfg.localLlmHomeDir\n : undefined,\n localLmsCliPath:\n typeof cfg.localLmsCliPath === \"string\" && cfg.localLmsCliPath.length > 0\n ? cfg.localLmsCliPath\n : undefined,\n localLmsBinDir:\n typeof cfg.localLmsBinDir === \"string\" && cfg.localLmsBinDir.length > 0\n ? cfg.localLmsBinDir\n : undefined,\n localLlmTimeoutMs:\n typeof cfg.localLlmTimeoutMs === \"number\" ? cfg.localLlmTimeoutMs : 180_000,\n localLlmMaxContext:\n typeof cfg.localLlmMaxContext === \"number\" ? cfg.localLlmMaxContext : undefined,\n // Observability (disabled by default to avoid log spam)\n slowLogEnabled: cfg.slowLogEnabled === true,\n slowLogThresholdMs:\n typeof cfg.slowLogThresholdMs === \"number\" ? cfg.slowLogThresholdMs : 30_000,\n // Trace recall content — disabled by default; enable to send recalled memory text to trace subscribers\n traceRecallContent: cfg.traceRecallContent === true,\n // Performance profiling (opt-in, disabled by default)\n profilingEnabled: cfg.profilingEnabled === true,\n profilingStorageDir:\n typeof cfg.profilingStorageDir === \"string\" && cfg.profilingStorageDir.length > 0\n ? cfg.profilingStorageDir\n : path.join(memoryDir, \"profiling\"),\n profilingMaxTraces:\n typeof cfg.profilingMaxTraces === \"number\" && Number.isFinite(cfg.profilingMaxTraces)\n ? Math.max(0, cfg.profilingMaxTraces)\n : 100,\n // Extraction stability guards (P0/P1)\n extractionDedupeEnabled: cfg.extractionDedupeEnabled !== false,\n extractionDedupeWindowMs:\n typeof cfg.extractionDedupeWindowMs === \"number\" ? cfg.extractionDedupeWindowMs : 5 * 60_000,\n extractionMinChars:\n typeof cfg.extractionMinChars === \"number\" ? cfg.extractionMinChars : 40,\n extractionMinUserTurns:\n typeof cfg.extractionMinUserTurns === \"number\" ? cfg.extractionMinUserTurns : 1,\n extractionMaxTurnChars:\n typeof cfg.extractionMaxTurnChars === \"number\" ? cfg.extractionMaxTurnChars : 4000,\n extractionMaxFactsPerRun:\n typeof cfg.extractionMaxFactsPerRun === \"number\" ? cfg.extractionMaxFactsPerRun : 12,\n extractionMaxEntitiesPerRun:\n typeof cfg.extractionMaxEntitiesPerRun === \"number\" ? cfg.extractionMaxEntitiesPerRun : 6,\n extractionMaxQuestionsPerRun:\n typeof cfg.extractionMaxQuestionsPerRun === \"number\" ? cfg.extractionMaxQuestionsPerRun : 3,\n extractionMaxProfileUpdatesPerRun:\n typeof cfg.extractionMaxProfileUpdatesPerRun === \"number\" ? cfg.extractionMaxProfileUpdatesPerRun : 4,\n consolidationRequireNonZeroExtraction: cfg.consolidationRequireNonZeroExtraction !== false,\n consolidationMinIntervalMs:\n typeof cfg.consolidationMinIntervalMs === \"number\" ? cfg.consolidationMinIntervalMs : 10 * 60_000,\n // QMD maintenance (debounced singleflight)\n qmdMaintenanceEnabled: cfg.qmdMaintenanceEnabled !== false,\n qmdMaintenanceDebounceMs:\n typeof cfg.qmdMaintenanceDebounceMs === \"number\" ? cfg.qmdMaintenanceDebounceMs : 30_000,\n qmdAutoEmbedEnabled: cfg.qmdAutoEmbedEnabled === true,\n qmdEmbedMinIntervalMs:\n typeof cfg.qmdEmbedMinIntervalMs === \"number\" ? cfg.qmdEmbedMinIntervalMs : 60 * 60_000,\n qmdUpdateTimeoutMs:\n typeof cfg.qmdUpdateTimeoutMs === \"number\" ? cfg.qmdUpdateTimeoutMs : 90_000,\n qmdUpdateMinIntervalMs:\n typeof cfg.qmdUpdateMinIntervalMs === \"number\" ? cfg.qmdUpdateMinIntervalMs : 15 * 60_000,\n // Local LLM resilience\n localLlmRetry5xxCount:\n typeof cfg.localLlmRetry5xxCount === \"number\" ? cfg.localLlmRetry5xxCount : 1,\n localLlmRetryBackoffMs:\n typeof cfg.localLlmRetryBackoffMs === \"number\" ? cfg.localLlmRetryBackoffMs : 400,\n localLlm400TripThreshold:\n typeof cfg.localLlm400TripThreshold === \"number\" ? cfg.localLlm400TripThreshold : 5,\n localLlm400CooldownMs:\n typeof cfg.localLlm400CooldownMs === \"number\" ? cfg.localLlm400CooldownMs : 120_000,\n // Local LLM fast tier (v9.1)\n localLlmFastEnabled: cfg.localLlmFastEnabled === true,\n localLlmFastModel:\n typeof cfg.localLlmFastModel === \"string\" && cfg.localLlmFastModel.length > 0\n ? cfg.localLlmFastModel\n : \"\",\n localLlmFastUrl:\n typeof cfg.localLlmFastUrl === \"string\" && cfg.localLlmFastUrl.length > 0\n ? cfg.localLlmFastUrl\n : typeof cfg.localLlmUrl === \"string\" && cfg.localLlmUrl.length > 0\n ? cfg.localLlmUrl\n : \"http://localhost:1234/v1\",\n localLlmFastTimeoutMs:\n typeof cfg.localLlmFastTimeoutMs === \"number\" ? cfg.localLlmFastTimeoutMs : 15_000,\n // Gateway config (passed from index.ts for fallback AI)\n gatewayConfig: cfg.gatewayConfig as PluginConfig[\"gatewayConfig\"],\n // Gateway model source (v9.2) — route LLM calls through gateway agent model chain\n modelSource:\n cfg.modelSource === \"gateway\" ? \"gateway\" : \"plugin\",\n gatewayAgentId:\n typeof cfg.gatewayAgentId === \"string\" && cfg.gatewayAgentId.length > 0\n ? cfg.gatewayAgentId\n : \"\",\n fastGatewayAgentId:\n typeof cfg.fastGatewayAgentId === \"string\" && cfg.fastGatewayAgentId.length > 0\n ? cfg.fastGatewayAgentId\n : \"\",\n\n // v3.0 namespaces (default off)\n namespacesEnabled: cfg.namespacesEnabled === true,\n defaultNamespace:\n typeof cfg.defaultNamespace === \"string\" && cfg.defaultNamespace.length > 0 ? cfg.defaultNamespace : \"default\",\n sharedNamespace:\n typeof cfg.sharedNamespace === \"string\" && cfg.sharedNamespace.length > 0 ? cfg.sharedNamespace : \"shared\",\n principalFromSessionKeyMode:\n cfg.principalFromSessionKeyMode === \"prefix\"\n ? \"prefix\"\n : cfg.principalFromSessionKeyMode === \"regex\"\n ? \"regex\"\n : \"map\",\n principalFromSessionKeyRules: principalRules,\n namespacePolicies: Array.isArray(cfg.namespacePolicies)\n ? (cfg.namespacePolicies as any[]).map((p) => ({\n name: typeof p?.name === \"string\" ? p.name : \"\",\n readPrincipals: Array.isArray(p?.readPrincipals) ? p.readPrincipals.filter((x: any) => typeof x === \"string\") : [],\n writePrincipals: Array.isArray(p?.writePrincipals) ? p.writePrincipals.filter((x: any) => typeof x === \"string\") : [],\n includeInRecallByDefault: p?.includeInRecallByDefault === true,\n })).filter((p) => p.name.length > 0)\n : [],\n defaultRecallNamespaces: Array.isArray(cfg.defaultRecallNamespaces) ? [\"self\", \"shared\"].filter((x) => (cfg.defaultRecallNamespaces as any[]).includes(x)) as any : [\"self\", \"shared\"],\n cronRecallMode:\n cfg.cronRecallMode === \"none\"\n ? \"none\"\n : cfg.cronRecallMode === \"allowlist\"\n ? \"allowlist\"\n : \"all\",\n cronRecallAllowlist: Array.isArray(cfg.cronRecallAllowlist)\n ? (cfg.cronRecallAllowlist as unknown[]).filter((v): v is string => typeof v === \"string\" && v.length > 0)\n : [],\n cronRecallPolicyEnabled: cfg.cronRecallPolicyEnabled !== false,\n cronRecallNormalizedQueryMaxChars:\n typeof cfg.cronRecallNormalizedQueryMaxChars === \"number\"\n ? cfg.cronRecallNormalizedQueryMaxChars\n : 480,\n cronRecallInstructionHeavyTokenCap:\n typeof cfg.cronRecallInstructionHeavyTokenCap === \"number\"\n ? cfg.cronRecallInstructionHeavyTokenCap\n : 36,\n cronConversationRecallMode:\n cfg.cronConversationRecallMode === \"always\"\n ? \"always\"\n : cfg.cronConversationRecallMode === \"never\"\n ? \"never\"\n : \"auto\",\n autoPromoteToSharedEnabled: cfg.autoPromoteToSharedEnabled === true,\n autoPromoteToSharedCategories: Array.isArray(cfg.autoPromoteToSharedCategories)\n ? (cfg.autoPromoteToSharedCategories as any[]).filter((c) => c === \"fact\" || c === \"correction\" || c === \"decision\" || c === \"preference\")\n : [\"fact\", \"correction\", \"decision\", \"preference\"],\n autoPromoteMinConfidenceTier:\n cfg.autoPromoteMinConfidenceTier === \"explicit\"\n ? \"explicit\"\n : cfg.autoPromoteMinConfidenceTier === \"implied\"\n ? \"implied\"\n : \"explicit\",\n routingRulesEnabled: cfg.routingRulesEnabled === true,\n routingRulesStateFile:\n typeof cfg.routingRulesStateFile === \"string\" && cfg.routingRulesStateFile.trim().length > 0\n ? cfg.routingRulesStateFile.trim()\n : \"state/routing-rules.json\",\n\n // v4.0 shared-context (default off)\n sharedContextEnabled: cfg.sharedContextEnabled === true,\n sharedContextDir:\n typeof cfg.sharedContextDir === \"string\" && cfg.sharedContextDir.length > 0 ? cfg.sharedContextDir : undefined,\n sharedContextMaxInjectChars:\n typeof cfg.sharedContextMaxInjectChars === \"number\" ? cfg.sharedContextMaxInjectChars : 4000,\n sharedCrossSignalSemanticEnabled,\n sharedCrossSignalSemanticTimeoutMs,\n sharedCrossSignalSemanticMaxCandidates:\n typeof cfg.sharedCrossSignalSemanticMaxCandidates === \"number\"\n ? Math.max(0, Math.floor(cfg.sharedCrossSignalSemanticMaxCandidates))\n : 120,\n // Backward-compatible aliases.\n crossSignalsSemanticEnabled: sharedCrossSignalSemanticEnabled,\n crossSignalsSemanticTimeoutMs: sharedCrossSignalSemanticTimeoutMs,\n\n // v5.0 compounding (default off)\n compoundingEnabled: cfg.compoundingEnabled === true,\n compoundingWeeklyCronEnabled: cfg.compoundingWeeklyCronEnabled === true,\n compoundingSemanticEnabled: cfg.compoundingSemanticEnabled === true,\n compoundingSynthesisTimeoutMs:\n typeof cfg.compoundingSynthesisTimeoutMs === \"number\" ? cfg.compoundingSynthesisTimeoutMs : 15_000,\n compoundingInjectEnabled: cfg.compoundingInjectEnabled !== false,\n\n // IRC (Inductive Rule Consolidation) — preference synthesis\n ircEnabled: cfg.ircEnabled !== false,\n ircMaxPreferences: typeof cfg.ircMaxPreferences === \"number\" ? cfg.ircMaxPreferences : 20,\n ircIncludeCorrections: cfg.ircIncludeCorrections !== false,\n ircMinConfidence: typeof cfg.ircMinConfidence === \"number\" ? cfg.ircMinConfidence : 0.3,\n\n // CMC (Causal Memory Consolidation) — cross-session causal reasoning\n cmcEnabled: cfg.cmcEnabled === true,\n cmcStitchLookbackDays: typeof cfg.cmcStitchLookbackDays === \"number\" ? cfg.cmcStitchLookbackDays : 7,\n cmcStitchMinScore: typeof cfg.cmcStitchMinScore === \"number\" ? cfg.cmcStitchMinScore : 2.5,\n cmcStitchMaxEdgesPerTrajectory: typeof cfg.cmcStitchMaxEdgesPerTrajectory === \"number\" ? cfg.cmcStitchMaxEdgesPerTrajectory : 3,\n cmcConsolidationEnabled: cfg.cmcConsolidationEnabled === true,\n cmcConsolidationMinRecurrence: typeof cfg.cmcConsolidationMinRecurrence === \"number\" ? cfg.cmcConsolidationMinRecurrence : 3,\n cmcConsolidationMinSessions: typeof cfg.cmcConsolidationMinSessions === \"number\" ? cfg.cmcConsolidationMinSessions : 2,\n cmcConsolidationSuccessThreshold: typeof cfg.cmcConsolidationSuccessThreshold === \"number\" ? cfg.cmcConsolidationSuccessThreshold : 0.7,\n cmcRetrievalEnabled: cfg.cmcRetrievalEnabled === true,\n cmcRetrievalMaxDepth: typeof cfg.cmcRetrievalMaxDepth === \"number\" ? cfg.cmcRetrievalMaxDepth : 3,\n cmcRetrievalMaxChars: typeof cfg.cmcRetrievalMaxChars === \"number\" ? cfg.cmcRetrievalMaxChars : 800,\n cmcRetrievalCounterfactualBoost: typeof cfg.cmcRetrievalCounterfactualBoost === \"number\" ? cfg.cmcRetrievalCounterfactualBoost : 0.4,\n cmcBehaviorLearningEnabled: cfg.cmcBehaviorLearningEnabled === true,\n cmcBehaviorMinFrequency: typeof cfg.cmcBehaviorMinFrequency === \"number\" ? cfg.cmcBehaviorMinFrequency : 3,\n cmcBehaviorMinSessions: typeof cfg.cmcBehaviorMinSessions === \"number\" ? cfg.cmcBehaviorMinSessions : 2,\n cmcBehaviorConfidenceThreshold: typeof cfg.cmcBehaviorConfidenceThreshold === \"number\" ? cfg.cmcBehaviorConfidenceThreshold : 0.6,\n cmcLifecycleCausalImpactWeight: typeof cfg.cmcLifecycleCausalImpactWeight === \"number\" ? cfg.cmcLifecycleCausalImpactWeight : 0.05,\n\n // PEDC (Prediction-Error-Driven Calibration) — model-user alignment\n calibrationEnabled: cfg.calibrationEnabled === true,\n calibrationMaxRulesPerRecall: typeof cfg.calibrationMaxRulesPerRecall === \"number\" ? cfg.calibrationMaxRulesPerRecall : 10,\n calibrationMaxChars: typeof cfg.calibrationMaxChars === \"number\" ? cfg.calibrationMaxChars : 1200,\n\n // v7.0 Knowledge Graph Enhancement\n knowledgeIndexEnabled: cfg.knowledgeIndexEnabled !== false,\n knowledgeIndexMaxEntities:\n typeof cfg.knowledgeIndexMaxEntities === \"number\" ? cfg.knowledgeIndexMaxEntities : 40,\n knowledgeIndexMaxChars:\n typeof cfg.knowledgeIndexMaxChars === \"number\" ? cfg.knowledgeIndexMaxChars : 4000,\n entityRetrievalEnabled: cfg.entityRetrievalEnabled !== false,\n entityRetrievalMaxChars:\n typeof cfg.entityRetrievalMaxChars === \"number\" ? cfg.entityRetrievalMaxChars : 2400,\n entityRetrievalMaxHints:\n typeof cfg.entityRetrievalMaxHints === \"number\" ? cfg.entityRetrievalMaxHints : 2,\n entityRetrievalMaxSupportingFacts:\n typeof cfg.entityRetrievalMaxSupportingFacts === \"number\" ? cfg.entityRetrievalMaxSupportingFacts : 6,\n entityRetrievalMaxRelatedEntities:\n typeof cfg.entityRetrievalMaxRelatedEntities === \"number\" ? cfg.entityRetrievalMaxRelatedEntities : 3,\n entityRetrievalRecentTurns:\n typeof cfg.entityRetrievalRecentTurns === \"number\" ? cfg.entityRetrievalRecentTurns : 6,\n recallBudgetChars: recallPipelineConfig.recallBudgetChars,\n recallOuterTimeoutMs:\n typeof cfg.recallOuterTimeoutMs === \"number\" ? Math.max(0, Math.floor(cfg.recallOuterTimeoutMs)) : 75_000,\n recallCoreDeadlineMs:\n typeof cfg.recallCoreDeadlineMs === \"number\" ? Math.max(0, Math.floor(cfg.recallCoreDeadlineMs)) : 75_000,\n recallEnrichmentDeadlineMs:\n typeof cfg.recallEnrichmentDeadlineMs === \"number\"\n ? Math.max(0, Math.floor(cfg.recallEnrichmentDeadlineMs))\n : 25_000,\n recallPipeline: recallPipelineConfig.pipeline,\n qmdRecallCacheTtlMs:\n typeof cfg.qmdRecallCacheTtlMs === \"number\" ? Math.max(0, Math.floor(cfg.qmdRecallCacheTtlMs)) : 60_000,\n qmdRecallCacheStaleTtlMs:\n typeof cfg.qmdRecallCacheStaleTtlMs === \"number\"\n ? Math.max(0, Math.floor(cfg.qmdRecallCacheStaleTtlMs))\n : 10 * 60_000,\n qmdRecallCacheMaxEntries:\n typeof cfg.qmdRecallCacheMaxEntries === \"number\"\n ? Math.max(0, Math.floor(cfg.qmdRecallCacheMaxEntries))\n : 128,\n entityRelationshipsEnabled: cfg.entityRelationshipsEnabled !== false,\n entityActivityLogEnabled: cfg.entityActivityLogEnabled !== false,\n entityActivityLogMaxEntries:\n typeof cfg.entityActivityLogMaxEntries === \"number\" ? cfg.entityActivityLogMaxEntries : 20,\n entityAliasesEnabled: cfg.entityAliasesEnabled !== false,\n entitySummaryEnabled: cfg.entitySummaryEnabled !== false,\n\n // Search backend abstraction\n searchBackend: ([\"qmd\", \"remote\", \"noop\", \"lancedb\", \"meilisearch\", \"orama\"] as const).includes(cfg.searchBackend as any)\n ? (cfg.searchBackend as \"qmd\" | \"remote\" | \"noop\" | \"lancedb\" | \"meilisearch\" | \"orama\")\n : \"qmd\",\n remoteSearchBaseUrl: typeof cfg.remoteSearchBaseUrl === \"string\" ? cfg.remoteSearchBaseUrl : undefined,\n remoteSearchApiKey: typeof cfg.remoteSearchApiKey === \"string\" ? cfg.remoteSearchApiKey : undefined,\n remoteSearchTimeoutMs: typeof cfg.remoteSearchTimeoutMs === \"number\" ? cfg.remoteSearchTimeoutMs : 30_000,\n\n // LanceDB backend\n lancedbEnabled: cfg.lancedbEnabled === true,\n lanceDbPath: typeof cfg.lanceDbPath === \"string\" ? cfg.lanceDbPath : path.join(memoryDir, \"lancedb\"),\n lanceEmbeddingDimension: typeof cfg.lanceEmbeddingDimension === \"number\" ? cfg.lanceEmbeddingDimension : 1536,\n\n // Meilisearch backend\n meilisearchEnabled: cfg.meilisearchEnabled === true,\n meilisearchHost: typeof cfg.meilisearchHost === \"string\" ? cfg.meilisearchHost : \"http://localhost:7700\",\n meilisearchApiKey: typeof cfg.meilisearchApiKey === \"string\" ? cfg.meilisearchApiKey : undefined,\n meilisearchTimeoutMs: typeof cfg.meilisearchTimeoutMs === \"number\" ? cfg.meilisearchTimeoutMs : 30_000,\n meilisearchAutoIndex: cfg.meilisearchAutoIndex === true,\n\n // Orama backend\n oramaEnabled: cfg.oramaEnabled === true,\n oramaDbPath: typeof cfg.oramaDbPath === \"string\" ? cfg.oramaDbPath : path.join(memoryDir, \"orama\"),\n oramaEmbeddingDimension: typeof cfg.oramaEmbeddingDimension === \"number\" ? cfg.oramaEmbeddingDimension : 1536,\n\n // QMD daemon mode\n qmdDaemonEnabled: cfg.qmdDaemonEnabled !== false,\n qmdDaemonUrl:\n typeof cfg.qmdDaemonUrl === \"string\" && cfg.qmdDaemonUrl.length > 0\n ? cfg.qmdDaemonUrl\n : \"http://localhost:8181/mcp\",\n qmdDaemonRecheckIntervalMs:\n typeof cfg.qmdDaemonRecheckIntervalMs === \"number\" ? cfg.qmdDaemonRecheckIntervalMs : 15_000,\n qmdIntentHintsEnabled: cfg.qmdIntentHintsEnabled === true,\n qmdExplainEnabled: cfg.qmdExplainEnabled === true,\n\n // v6.0 Fact deduplication & archival\n factDeduplicationEnabled: cfg.factDeduplicationEnabled !== false,\n factArchivalEnabled: cfg.factArchivalEnabled === true,\n factArchivalAgeDays:\n typeof cfg.factArchivalAgeDays === \"number\" ? cfg.factArchivalAgeDays : 90,\n factArchivalMaxImportance:\n typeof cfg.factArchivalMaxImportance === \"number\" ? cfg.factArchivalMaxImportance : 0.3,\n factArchivalMaxAccessCount:\n typeof cfg.factArchivalMaxAccessCount === \"number\" ? cfg.factArchivalMaxAccessCount : 2,\n factArchivalProtectedCategories: Array.isArray(cfg.factArchivalProtectedCategories)\n ? (cfg.factArchivalProtectedCategories as any[]).filter((c) => typeof c === \"string\")\n : [\"commitment\", \"preference\", \"decision\", \"principle\"],\n // v8.3 lifecycle policy engine (default off)\n lifecyclePolicyEnabled: cfg.lifecyclePolicyEnabled === true,\n lifecycleFilterStaleEnabled: cfg.lifecycleFilterStaleEnabled === true,\n lifecyclePromoteHeatThreshold:\n typeof cfg.lifecyclePromoteHeatThreshold === \"number\"\n ? Math.min(1, Math.max(0, cfg.lifecyclePromoteHeatThreshold))\n : 0.55,\n lifecycleStaleDecayThreshold:\n typeof cfg.lifecycleStaleDecayThreshold === \"number\"\n ? Math.min(1, Math.max(0, cfg.lifecycleStaleDecayThreshold))\n : 0.65,\n lifecycleArchiveDecayThreshold:\n typeof cfg.lifecycleArchiveDecayThreshold === \"number\"\n ? Math.min(1, Math.max(0, cfg.lifecycleArchiveDecayThreshold))\n : 0.85,\n lifecycleProtectedCategories: Array.isArray(cfg.lifecycleProtectedCategories)\n ? (cfg.lifecycleProtectedCategories as any[]).filter(\n (c): c is PluginConfig[\"lifecycleProtectedCategories\"][number] =>\n typeof c === \"string\" && VALID_MEMORY_CATEGORIES.has(c),\n )\n : [\"decision\", \"principle\", \"commitment\", \"preference\"],\n lifecycleMetricsEnabled:\n typeof cfg.lifecycleMetricsEnabled === \"boolean\"\n ? cfg.lifecycleMetricsEnabled\n : cfg.lifecyclePolicyEnabled === true,\n // v8.3 proactive + policy learning (default off)\n proactiveExtractionEnabled: cfg.proactiveExtractionEnabled === true,\n contextCompressionActionsEnabled: cfg.contextCompressionActionsEnabled === true,\n compressionGuidelineLearningEnabled: cfg.compressionGuidelineLearningEnabled === true,\n compressionGuidelineSemanticRefinementEnabled:\n cfg.compressionGuidelineSemanticRefinementEnabled === true,\n compressionGuidelineSemanticTimeoutMs:\n typeof cfg.compressionGuidelineSemanticTimeoutMs === \"number\"\n ? Math.max(1, Math.floor(cfg.compressionGuidelineSemanticTimeoutMs))\n : 2500,\n maxProactiveQuestionsPerExtraction:\n typeof cfg.maxProactiveQuestionsPerExtraction === \"number\"\n ? Math.max(0, Math.floor(cfg.maxProactiveQuestionsPerExtraction))\n : 2,\n proactiveExtractionTimeoutMs:\n typeof cfg.proactiveExtractionTimeoutMs === \"number\"\n ? Math.max(0, Math.floor(cfg.proactiveExtractionTimeoutMs))\n : 2500,\n proactiveExtractionMaxTokens:\n typeof cfg.proactiveExtractionMaxTokens === \"number\"\n ? Math.max(0, Math.floor(cfg.proactiveExtractionMaxTokens))\n : 900,\n extractionMaxOutputTokens:\n typeof cfg.extractionMaxOutputTokens === \"number\"\n ? Math.max(1, Math.floor(cfg.extractionMaxOutputTokens))\n : 16384,\n proactiveExtractionCategoryAllowlist: Array.isArray(cfg.proactiveExtractionCategoryAllowlist)\n ? (cfg.proactiveExtractionCategoryAllowlist as unknown[]).filter(\n (category): category is PluginConfig[\"lifecycleProtectedCategories\"][number] =>\n typeof category === \"string\" && VALID_MEMORY_CATEGORIES.has(category),\n )\n : undefined,\n maxCompressionTokensPerHour:\n typeof cfg.maxCompressionTokensPerHour === \"number\"\n ? Math.max(0, Math.floor(cfg.maxCompressionTokensPerHour))\n : 1500,\n behaviorLoopAutoTuneEnabled: cfg.behaviorLoopAutoTuneEnabled === true,\n behaviorLoopLearningWindowDays:\n typeof cfg.behaviorLoopLearningWindowDays === \"number\"\n ? Math.max(0, Math.floor(cfg.behaviorLoopLearningWindowDays))\n : 14,\n behaviorLoopMinSignalCount:\n typeof cfg.behaviorLoopMinSignalCount === \"number\"\n ? Math.max(0, Math.floor(cfg.behaviorLoopMinSignalCount))\n : 10,\n behaviorLoopMaxDeltaPerCycle:\n typeof cfg.behaviorLoopMaxDeltaPerCycle === \"number\"\n ? Math.min(1, Math.max(0, cfg.behaviorLoopMaxDeltaPerCycle))\n : 0.1,\n behaviorLoopProtectedParams: Array.isArray(cfg.behaviorLoopProtectedParams)\n ? (cfg.behaviorLoopProtectedParams as unknown[])\n .filter((param): param is string => typeof param === \"string\" && param.trim().length > 0)\n : [...DEFAULT_BEHAVIOR_LOOP_PROTECTED_PARAMS],\n // v8.0 phase 1\n recallPlannerEnabled: cfg.recallPlannerEnabled !== false,\n recallPlannerModel:\n typeof cfg.recallPlannerModel === \"string\" && cfg.recallPlannerModel.trim().length > 0\n ? cfg.recallPlannerModel.trim()\n : \"gpt-5.2-mini\",\n recallPlannerTimeoutMs:\n typeof cfg.recallPlannerTimeoutMs === \"number\" ? cfg.recallPlannerTimeoutMs : 1500,\n recallPlannerUseResponsesApi: cfg.recallPlannerUseResponsesApi !== false,\n recallPlannerMaxPromptChars:\n typeof cfg.recallPlannerMaxPromptChars === \"number\" ? cfg.recallPlannerMaxPromptChars : 4000,\n recallPlannerMaxMemoryHints:\n typeof cfg.recallPlannerMaxMemoryHints === \"number\" ? cfg.recallPlannerMaxMemoryHints : 24,\n recallPlannerShadowMode: cfg.recallPlannerShadowMode === true,\n recallPlannerTelemetryEnabled: cfg.recallPlannerTelemetryEnabled !== false,\n recallPlannerMaxQmdResultsMinimal:\n typeof cfg.recallPlannerMaxQmdResultsMinimal === \"number\"\n ? cfg.recallPlannerMaxQmdResultsMinimal\n : 4,\n recallPlannerMaxQmdResultsFull:\n typeof cfg.recallPlannerMaxQmdResultsFull === \"number\" ? cfg.recallPlannerMaxQmdResultsFull : 8,\n intentRoutingEnabled: cfg.intentRoutingEnabled === true,\n intentRoutingBoost:\n typeof cfg.intentRoutingBoost === \"number\" ? cfg.intentRoutingBoost : 0.12,\n verbatimArtifactsEnabled: cfg.verbatimArtifactsEnabled === true,\n verbatimArtifactsMinConfidence:\n typeof cfg.verbatimArtifactsMinConfidence === \"number\"\n ? cfg.verbatimArtifactsMinConfidence\n : 0.8,\n verbatimArtifactsMaxRecall:\n typeof cfg.verbatimArtifactsMaxRecall === \"number\" ? cfg.verbatimArtifactsMaxRecall : 5,\n verbatimArtifactCategories: Array.isArray(cfg.verbatimArtifactCategories)\n ? (cfg.verbatimArtifactCategories as any[]).filter(\n (c): c is PluginConfig[\"verbatimArtifactCategories\"][number] =>\n typeof c === \"string\" && VALID_MEMORY_CATEGORIES.has(c),\n )\n : [\"decision\", \"correction\", \"principle\", \"commitment\"],\n // v8.0 Phase 2A: Memory Boxes + Trace Weaving\n memoryBoxesEnabled: cfg.memoryBoxesEnabled === true,\n boxTopicShiftThreshold:\n typeof cfg.boxTopicShiftThreshold === \"number\" ? cfg.boxTopicShiftThreshold : 0.35,\n boxTimeGapMs:\n typeof cfg.boxTimeGapMs === \"number\" ? cfg.boxTimeGapMs : 30 * 60 * 1000,\n boxMaxMemories:\n typeof cfg.boxMaxMemories === \"number\" ? cfg.boxMaxMemories : 50,\n traceWeaverEnabled: cfg.traceWeaverEnabled === true,\n traceWeaverLookbackDays:\n typeof cfg.traceWeaverLookbackDays === \"number\" ? cfg.traceWeaverLookbackDays : 7,\n traceWeaverOverlapThreshold:\n typeof cfg.traceWeaverOverlapThreshold === \"number\" ? cfg.traceWeaverOverlapThreshold : 0.4,\n boxRecallDays:\n typeof cfg.boxRecallDays === \"number\" ? cfg.boxRecallDays : 3,\n // v8.0 Phase 2B: Episode/Note dual store (HiMem)\n episodeNoteModeEnabled: cfg.episodeNoteModeEnabled === true,\n // v8.1: Temporal + Tag Indexes (SwiftMem-inspired)\n queryAwareIndexingEnabled: cfg.queryAwareIndexingEnabled === true,\n queryAwareIndexingMaxCandidates:\n typeof cfg.queryAwareIndexingMaxCandidates === \"number\"\n ? Math.max(0, cfg.queryAwareIndexingMaxCandidates) // clamp: negative treated as 0 (no cap)\n : 200,\n temporalIndexWindowDays:\n typeof cfg.temporalIndexWindowDays === \"number\" ? cfg.temporalIndexWindowDays : 30,\n temporalIndexMaxEntries:\n typeof cfg.temporalIndexMaxEntries === \"number\" ? cfg.temporalIndexMaxEntries : 5000,\n temporalBoostRecentDays:\n typeof cfg.temporalBoostRecentDays === \"number\" ? cfg.temporalBoostRecentDays : 7,\n temporalBoostScore: typeof cfg.temporalBoostScore === \"number\" ? cfg.temporalBoostScore : 0.15,\n temporalDecayEnabled: cfg.temporalDecayEnabled !== false,\n tagMemoryEnabled: cfg.tagMemoryEnabled === true,\n tagMaxPerMemory: typeof cfg.tagMaxPerMemory === \"number\" ? cfg.tagMaxPerMemory : 5,\n tagIndexMaxEntries:\n typeof cfg.tagIndexMaxEntries === \"number\" ? cfg.tagIndexMaxEntries : 10000,\n tagRecallBoost: typeof cfg.tagRecallBoost === \"number\" ? cfg.tagRecallBoost : 0.15,\n tagRecallMaxMatches: typeof cfg.tagRecallMaxMatches === \"number\" ? cfg.tagRecallMaxMatches : 10,\n // v8.2: Multi-graph memory (PR 18)\n multiGraphMemoryEnabled: cfg.multiGraphMemoryEnabled === true,\n graphRecallEnabled: cfg.graphRecallEnabled === true,\n graphRecallMaxExpansions:\n typeof cfg.graphRecallMaxExpansions === \"number\" ? cfg.graphRecallMaxExpansions : 3,\n graphRecallMaxPerSeed:\n typeof cfg.graphRecallMaxPerSeed === \"number\" ? cfg.graphRecallMaxPerSeed : 5,\n graphRecallMinEdgeWeight:\n typeof cfg.graphRecallMinEdgeWeight === \"number\" ? cfg.graphRecallMinEdgeWeight : 0.1,\n graphRecallShadowEnabled: cfg.graphRecallShadowEnabled === true,\n graphRecallSnapshotEnabled: cfg.graphRecallSnapshotEnabled === true,\n graphRecallShadowSampleRate:\n typeof cfg.graphRecallShadowSampleRate === \"number\" ? cfg.graphRecallShadowSampleRate : 0.1,\n graphRecallExplainToolEnabled: cfg.graphRecallExplainToolEnabled === true,\n graphRecallStoreColdMirror: cfg.graphRecallStoreColdMirror === true,\n graphRecallColdMirrorCollection:\n typeof cfg.graphRecallColdMirrorCollection === \"string\" &&\n cfg.graphRecallColdMirrorCollection.trim().length > 0\n ? cfg.graphRecallColdMirrorCollection.trim()\n : undefined,\n graphRecallColdMirrorMinAgeDays:\n typeof cfg.graphRecallColdMirrorMinAgeDays === \"number\" ? cfg.graphRecallColdMirrorMinAgeDays : 7,\n graphRecallUseEntityPriors: cfg.graphRecallUseEntityPriors === true,\n graphRecallEntityPriorBoost:\n typeof cfg.graphRecallEntityPriorBoost === \"number\" ? cfg.graphRecallEntityPriorBoost : 0.2,\n graphRecallPreferHubSeeds: cfg.graphRecallPreferHubSeeds === true,\n graphRecallHubBias:\n typeof cfg.graphRecallHubBias === \"number\" ? cfg.graphRecallHubBias : 0.3,\n graphRecallRecencyHalfLifeDays:\n typeof cfg.graphRecallRecencyHalfLifeDays === \"number\" ? cfg.graphRecallRecencyHalfLifeDays : 30,\n graphRecallDampingFactor:\n typeof cfg.graphRecallDampingFactor === \"number\" ? cfg.graphRecallDampingFactor : 0.85,\n graphRecallMaxSeedNodes:\n typeof cfg.graphRecallMaxSeedNodes === \"number\" ? cfg.graphRecallMaxSeedNodes : 10,\n graphRecallMaxExpandedNodes:\n typeof cfg.graphRecallMaxExpandedNodes === \"number\" ? cfg.graphRecallMaxExpandedNodes : 30,\n graphRecallMaxTrailPerNode:\n typeof cfg.graphRecallMaxTrailPerNode === \"number\" ? cfg.graphRecallMaxTrailPerNode : 5,\n graphRecallMinSeedScore:\n typeof cfg.graphRecallMinSeedScore === \"number\" ? cfg.graphRecallMinSeedScore : 0.3,\n graphRecallExpansionScoreThreshold:\n typeof cfg.graphRecallExpansionScoreThreshold === \"number\"\n ? cfg.graphRecallExpansionScoreThreshold\n : 0.2,\n graphRecallExplainMaxPaths:\n typeof cfg.graphRecallExplainMaxPaths === \"number\" ? cfg.graphRecallExplainMaxPaths : 3,\n graphRecallExplainMaxChars:\n typeof cfg.graphRecallExplainMaxChars === \"number\" ? cfg.graphRecallExplainMaxChars : 500,\n graphRecallExplainEdgeLimit:\n typeof cfg.graphRecallExplainEdgeLimit === \"number\" ? cfg.graphRecallExplainEdgeLimit : 5,\n graphRecallExplainEnabled: cfg.graphRecallExplainEnabled === true,\n graphRecallEntityHintsEnabled: cfg.graphRecallEntityHintsEnabled === true,\n graphRecallEntityHintMax:\n typeof cfg.graphRecallEntityHintMax === \"number\" ? cfg.graphRecallEntityHintMax : 3,\n graphRecallEntityHintMaxChars:\n typeof cfg.graphRecallEntityHintMaxChars === \"number\" ? cfg.graphRecallEntityHintMaxChars : 200,\n graphRecallSnapshotDir:\n typeof cfg.graphRecallSnapshotDir === \"string\" && cfg.graphRecallSnapshotDir.trim().length > 0\n ? cfg.graphRecallSnapshotDir.trim()\n : path.join(memoryDir, \"state\", \"graph\"),\n graphRecallEnableTrace: cfg.graphRecallEnableTrace === true,\n graphRecallEnableDebug: cfg.graphRecallEnableDebug === true,\n graphExpandedIntentEnabled: cfg.graphExpandedIntentEnabled !== false,\n graphAssistInFullModeEnabled: cfg.graphAssistInFullModeEnabled !== false,\n graphAssistShadowEvalEnabled: cfg.graphAssistShadowEvalEnabled === true,\n graphAssistMinSeedResults:\n typeof cfg.graphAssistMinSeedResults === \"number\"\n ? Math.max(1, Math.floor(cfg.graphAssistMinSeedResults))\n : 3,\n entityGraphEnabled: cfg.entityGraphEnabled !== false,\n timeGraphEnabled: cfg.timeGraphEnabled !== false,\n graphWriteSessionAdjacencyEnabled: cfg.graphWriteSessionAdjacencyEnabled !== false,\n causalGraphEnabled: cfg.causalGraphEnabled !== false,\n maxGraphTraversalSteps:\n typeof cfg.maxGraphTraversalSteps === \"number\" ? Math.max(0, cfg.maxGraphTraversalSteps) : 3,\n graphActivationDecay:\n typeof cfg.graphActivationDecay === \"number\"\n ? Math.min(1, Math.max(0, cfg.graphActivationDecay))\n : 0.7,\n graphExpansionActivationWeight:\n typeof cfg.graphExpansionActivationWeight === \"number\"\n ? Math.min(1, Math.max(0, cfg.graphExpansionActivationWeight))\n : 0.65,\n graphExpansionBlendMin:\n typeof cfg.graphExpansionBlendMin === \"number\"\n ? Math.min(1, Math.max(0, cfg.graphExpansionBlendMin))\n : 0.05,\n graphExpansionBlendMax:\n typeof cfg.graphExpansionBlendMax === \"number\"\n ? Math.min(1, Math.max(0, cfg.graphExpansionBlendMax))\n : 0.95,\n maxEntityGraphEdgesPerMemory:\n typeof cfg.maxEntityGraphEdgesPerMemory === \"number\"\n ? Math.max(0, cfg.maxEntityGraphEdgesPerMemory)\n : 10,\n delinearizeEnabled: cfg.delinearizeEnabled !== false,\n recallConfidenceGateEnabled: cfg.recallConfidenceGateEnabled === true,\n recallConfidenceGateThreshold:\n typeof cfg.recallConfidenceGateThreshold === \"number\"\n ? Math.max(0, Math.min(1, cfg.recallConfidenceGateThreshold))\n : 0.12,\n causalRuleExtractionEnabled: cfg.causalRuleExtractionEnabled === true,\n memoryReconstructionEnabled: cfg.memoryReconstructionEnabled === true,\n memoryReconstructionMaxExpansions:\n typeof cfg.memoryReconstructionMaxExpansions === \"number\" ? Math.max(0, Math.round(cfg.memoryReconstructionMaxExpansions)) : 3,\n graphLateralInhibitionEnabled: cfg.graphLateralInhibitionEnabled !== false,\n graphLateralInhibitionBeta:\n typeof cfg.graphLateralInhibitionBeta === \"number\"\n ? Math.max(0, Math.min(1, cfg.graphLateralInhibitionBeta))\n : 0.15,\n graphLateralInhibitionTopM:\n typeof cfg.graphLateralInhibitionTopM === \"number\"\n ? Math.max(0, Math.round(cfg.graphLateralInhibitionTopM))\n : 7,\n // v8.2: Temporal Memory Tree\n temporalMemoryTreeEnabled: cfg.temporalMemoryTreeEnabled === true,\n tmtHourlyMinMemories:\n typeof cfg.tmtHourlyMinMemories === \"number\" ? cfg.tmtHourlyMinMemories : 3,\n tmtSummaryMaxTokens:\n typeof cfg.tmtSummaryMaxTokens === \"number\" ? cfg.tmtSummaryMaxTokens : 300,\n // Lossless Context Management (LCM)\n lcmEnabled: cfg.lcmEnabled === true,\n lcmLeafBatchSize:\n typeof cfg.lcmLeafBatchSize === \"number\" ? Math.max(2, Math.floor(cfg.lcmLeafBatchSize)) : 8,\n lcmRollupFanIn:\n typeof cfg.lcmRollupFanIn === \"number\" ? Math.max(2, Math.floor(cfg.lcmRollupFanIn)) : 4,\n lcmFreshTailTurns:\n typeof cfg.lcmFreshTailTurns === \"number\" ? Math.max(1, Math.floor(cfg.lcmFreshTailTurns)) : 16,\n lcmMaxDepth:\n typeof cfg.lcmMaxDepth === \"number\" ? Math.max(1, Math.floor(cfg.lcmMaxDepth)) : 5,\n lcmRecallBudgetShare:\n typeof cfg.lcmRecallBudgetShare === \"number\"\n ? Math.max(0, Math.min(1, cfg.lcmRecallBudgetShare))\n : 0.15,\n lcmDeterministicMaxTokens:\n typeof cfg.lcmDeterministicMaxTokens === \"number\"\n ? Math.max(64, Math.floor(cfg.lcmDeterministicMaxTokens))\n : 512,\n lcmArchiveRetentionDays:\n typeof cfg.lcmArchiveRetentionDays === \"number\"\n ? Math.max(1, Math.floor(cfg.lcmArchiveRetentionDays))\n : 90,\n\n // v9.1 Parallel Specialized Retrieval\n parallelRetrievalEnabled: cfg.parallelRetrievalEnabled === true,\n parallelAgentWeights: (() => {\n const w = cfg.parallelAgentWeights as Record<string, unknown> | undefined;\n return {\n direct: typeof w?.direct === \"number\" ? Math.max(0, w.direct) : 1.0,\n contextual: typeof w?.contextual === \"number\" ? Math.max(0, w.contextual) : 0.7,\n temporal: typeof w?.temporal === \"number\" ? Math.max(0, w.temporal) : 0.85,\n };\n })(),\n parallelMaxResultsPerAgent:\n typeof cfg.parallelMaxResultsPerAgent === \"number\"\n ? Math.max(0, Math.floor(cfg.parallelMaxResultsPerAgent))\n : 20,\n };\n}\n\nfunction clampNonNegativeNumber(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return undefined;\n return Math.max(0, Math.floor(value));\n}\n\nfunction parseRecallSectionEntry(raw: unknown): RecallSectionConfig {\n const entry =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? (raw as Record<string, unknown>)\n : {};\n return {\n id: typeof entry.id === \"string\" ? entry.id.trim() : \"\",\n enabled: entry.enabled !== false,\n maxChars:\n entry.maxChars === null\n ? null\n : clampNonNegativeNumber(entry.maxChars),\n maxHints: clampNonNegativeNumber(entry.maxHints),\n maxSupportingFacts: clampNonNegativeNumber(entry.maxSupportingFacts),\n maxRelatedEntities: clampNonNegativeNumber(entry.maxRelatedEntities),\n consolidateTriggerLines: clampNonNegativeNumber(entry.consolidateTriggerLines),\n consolidateTargetLines: clampNonNegativeNumber(entry.consolidateTargetLines),\n maxEntities: clampNonNegativeNumber(entry.maxEntities),\n maxResults: clampNonNegativeNumber(entry.maxResults),\n recentTurns: clampNonNegativeNumber(entry.recentTurns),\n maxTurns: clampNonNegativeNumber(entry.maxTurns),\n maxTokens: clampNonNegativeNumber(entry.maxTokens),\n lookbackHours: clampNonNegativeNumber(entry.lookbackHours),\n maxCount: clampNonNegativeNumber(entry.maxCount),\n topK: clampNonNegativeNumber(entry.topK),\n timeoutMs: clampNonNegativeNumber(entry.timeoutMs),\n maxPatterns: clampNonNegativeNumber(entry.maxPatterns),\n maxRubrics: clampNonNegativeNumber(entry.maxRubrics),\n };\n}\n\nfunction buildDefaultRecallPipeline(cfg: Record<string, unknown>): RecallSectionConfig[] {\n return [\n {\n id: \"shared-context\",\n enabled: cfg.sharedContextEnabled === true,\n maxChars:\n typeof cfg.sharedContextMaxInjectChars === \"number\"\n ? Math.max(0, Math.floor(cfg.sharedContextMaxInjectChars))\n : 4000,\n },\n {\n id: \"profile\",\n enabled: true,\n consolidateTriggerLines: 100,\n consolidateTargetLines: 50,\n },\n {\n id: \"identity-continuity\",\n enabled: cfg.identityContinuityEnabled === true,\n },\n {\n id: \"entity-retrieval\",\n enabled: cfg.entityRetrievalEnabled !== false,\n maxChars:\n typeof cfg.entityRetrievalMaxChars === \"number\"\n ? Math.max(0, Math.floor(cfg.entityRetrievalMaxChars))\n : 2400,\n maxHints:\n typeof cfg.entityRetrievalMaxHints === \"number\"\n ? Math.max(0, Math.floor(cfg.entityRetrievalMaxHints))\n : 2,\n maxSupportingFacts:\n typeof cfg.entityRetrievalMaxSupportingFacts === \"number\"\n ? Math.max(0, Math.floor(cfg.entityRetrievalMaxSupportingFacts))\n : 6,\n maxRelatedEntities:\n typeof cfg.entityRetrievalMaxRelatedEntities === \"number\"\n ? Math.max(0, Math.floor(cfg.entityRetrievalMaxRelatedEntities))\n : 3,\n recentTurns:\n typeof cfg.entityRetrievalRecentTurns === \"number\"\n ? Math.max(0, Math.floor(cfg.entityRetrievalRecentTurns))\n : 6,\n },\n {\n id: \"knowledge-index\",\n enabled: cfg.knowledgeIndexEnabled !== false,\n maxChars:\n typeof cfg.knowledgeIndexMaxChars === \"number\"\n ? Math.max(0, Math.floor(cfg.knowledgeIndexMaxChars))\n : 4000,\n maxEntities:\n typeof cfg.knowledgeIndexMaxEntities === \"number\"\n ? Math.max(0, Math.floor(cfg.knowledgeIndexMaxEntities))\n : 40,\n },\n { id: \"verbatim-artifacts\", enabled: cfg.verbatimArtifactsEnabled === true },\n { id: \"memory-boxes\", enabled: cfg.memoryBoxesEnabled === true },\n { id: \"temporal-memory-tree\", enabled: cfg.temporalMemoryTreeEnabled === true },\n { id: \"lcm-compressed-history\", enabled: cfg.lcmEnabled === true },\n {\n id: \"objective-state\",\n enabled: cfg.objectiveStateRecallEnabled === true,\n maxResults: 4,\n maxChars: 1800,\n },\n {\n id: \"causal-trajectories\",\n enabled: cfg.causalTrajectoryRecallEnabled === true,\n maxResults: 3,\n maxChars: 2200,\n },\n {\n id: \"trust-zones\",\n enabled: cfg.trustZoneRecallEnabled === true,\n maxResults: 3,\n maxChars: 1800,\n },\n {\n id: \"harmonic-retrieval\",\n enabled: cfg.harmonicRetrievalEnabled === true,\n maxResults: 3,\n maxChars: 2200,\n },\n {\n id: \"verified-episodes\",\n enabled: cfg.verifiedRecallEnabled === true,\n maxResults: 3,\n maxChars: 1800,\n },\n {\n id: \"verified-rules\",\n enabled: cfg.semanticRuleVerificationEnabled === true,\n maxResults: 3,\n maxChars: 1800,\n },\n {\n id: \"work-products\",\n enabled: cfg.workProductRecallEnabled === true,\n maxResults: 3,\n maxChars: 1800,\n },\n {\n id: \"memories\",\n enabled: true,\n maxResults:\n typeof cfg.qmdMaxResults === \"number\"\n ? Math.max(0, Math.floor(cfg.qmdMaxResults))\n : 8,\n },\n {\n id: \"compression-guidelines\",\n enabled: cfg.compressionGuidelineLearningEnabled === true,\n },\n {\n id: \"native-knowledge\",\n enabled: cfg.nativeKnowledge && typeof cfg.nativeKnowledge === \"object\"\n ? (cfg.nativeKnowledge as Record<string, unknown>).enabled === true\n : false,\n maxResults:\n cfg.nativeKnowledge && typeof cfg.nativeKnowledge === \"object\" &&\n typeof (cfg.nativeKnowledge as Record<string, unknown>).maxResults === \"number\"\n ? Math.max(0, Math.floor((cfg.nativeKnowledge as Record<string, unknown>).maxResults as number))\n : 4,\n maxChars:\n cfg.nativeKnowledge && typeof cfg.nativeKnowledge === \"object\" &&\n typeof (cfg.nativeKnowledge as Record<string, unknown>).maxChars === \"number\"\n ? Math.max(0, Math.floor((cfg.nativeKnowledge as Record<string, unknown>).maxChars as number))\n : 2400,\n },\n {\n id: \"transcript\",\n enabled: cfg.transcriptEnabled !== false,\n maxTurns:\n typeof cfg.maxTranscriptTurns === \"number\"\n ? Math.max(0, Math.floor(cfg.maxTranscriptTurns))\n : 50,\n maxTokens:\n typeof cfg.maxTranscriptTokens === \"number\"\n ? Math.max(0, Math.floor(cfg.maxTranscriptTokens))\n : 1000,\n lookbackHours:\n typeof cfg.transcriptRecallHours === \"number\"\n ? Math.max(0, Math.floor(cfg.transcriptRecallHours))\n : 12,\n },\n {\n id: \"summaries\",\n enabled: cfg.hourlySummariesEnabled !== false,\n maxCount:\n typeof cfg.maxSummaryCount === \"number\"\n ? Math.max(0, Math.floor(cfg.maxSummaryCount))\n : 6,\n lookbackHours:\n typeof cfg.summaryRecallHours === \"number\"\n ? Math.max(0, Math.floor(cfg.summaryRecallHours))\n : 24,\n },\n {\n id: \"conversation-recall\",\n enabled: cfg.conversationIndexEnabled === true,\n topK:\n typeof cfg.conversationRecallTopK === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationRecallTopK))\n : 3,\n maxChars:\n typeof cfg.conversationRecallMaxChars === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationRecallMaxChars))\n : 2500,\n timeoutMs:\n typeof cfg.conversationRecallTimeoutMs === \"number\"\n ? Math.max(0, Math.floor(cfg.conversationRecallTimeoutMs))\n : 800,\n },\n {\n id: \"compounding\",\n enabled: cfg.compoundingEnabled === true && cfg.compoundingInjectEnabled !== false,\n maxPatterns: 40,\n maxRubrics: 4,\n },\n { id: \"questions\", enabled: cfg.injectQuestions === true },\n ];\n}\n\nfunction buildRecallPipelineConfig(cfg: Record<string, unknown>): RecallPipelineConfig {\n const maxMemoryTokens =\n typeof cfg.maxMemoryTokens === \"number\"\n ? Math.max(0, Math.floor(cfg.maxMemoryTokens))\n : 2000;\n const recallBudgetCharsRaw = clampNonNegativeNumber(cfg.recallBudgetChars);\n const recallBudgetChars = recallBudgetCharsRaw ?? maxMemoryTokens * 4;\n\n const rawPipeline = cfg.recallPipeline;\n const pipeline = Array.isArray(rawPipeline)\n ? rawPipeline.map(parseRecallSectionEntry).filter((entry) => entry.id.length > 0)\n : buildDefaultRecallPipeline(cfg);\n\n return { recallBudgetChars, pipeline };\n}\n"],"mappings":"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","names":[]}
|