@remnic/core 1.0.3 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abort-error.d.ts +32 -0
- package/dist/abort-error.js +11 -0
- package/dist/access-audit.d.ts +56 -0
- package/dist/access-audit.js +9 -0
- package/dist/access-audit.js.map +1 -0
- package/dist/access-cli.js +72 -54
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +16 -8
- package/dist/access-http.js +25 -17
- package/dist/access-mcp.d.ts +16 -8
- package/dist/access-mcp.js +28 -6
- package/dist/access-schema.d.ts +130 -39
- package/dist/access-schema.js +5 -1
- package/dist/access-service-Br8ZydTK.d.ts +827 -0
- package/dist/access-service.d.ts +20 -660
- package/dist/access-service.js +22 -14
- package/dist/bootstrap.d.ts +6 -3
- package/dist/briefing.d.ts +1 -0
- package/dist/briefing.js +6 -5
- package/dist/buffer-surprise-report.d.ts +70 -0
- package/dist/buffer-surprise-report.js +7 -0
- package/dist/buffer-surprise-report.js.map +1 -0
- package/dist/buffer-surprise.d.ts +98 -0
- package/dist/buffer-surprise.js +11 -0
- package/dist/buffer-surprise.js.map +1 -0
- package/dist/buffer.d.ts +100 -2
- package/dist/buffer.js +1 -1
- package/dist/calibration.js +5 -5
- package/dist/causal-behavior.js +4 -4
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +17 -16
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +4 -4
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-QNJMBKFK.js → chunk-2LGMW3DJ.js} +3 -2
- package/dist/chunk-2LGMW3DJ.js.map +1 -0
- package/dist/{chunk-QDYXG4CS.js → chunk-3FPTCC3Z.js} +4 -3
- package/dist/chunk-3FPTCC3Z.js.map +1 -0
- package/dist/chunk-3GPTTA4J.js +57 -0
- package/dist/chunk-3GPTTA4J.js.map +1 -0
- package/dist/{chunk-QKAH5B6E.js → chunk-3GXCSUXR.js} +94 -6
- package/dist/chunk-3GXCSUXR.js.map +1 -0
- package/dist/{chunk-POBPGDWI.js → chunk-3OGMS3PE.js} +2 -2
- package/dist/chunk-54V4BZWP.js +139 -0
- package/dist/chunk-54V4BZWP.js.map +1 -0
- package/dist/chunk-5JRF2PZA.js +67 -0
- package/dist/chunk-5JRF2PZA.js.map +1 -0
- package/dist/chunk-64NJRYU2.js +332 -0
- package/dist/chunk-64NJRYU2.js.map +1 -0
- package/dist/chunk-6AUUAZEX.js +150 -0
- package/dist/chunk-6AUUAZEX.js.map +1 -0
- package/dist/{chunk-HITJFT7E.js → chunk-7I7FKFZH.js} +28 -21
- package/dist/chunk-7I7FKFZH.js.map +1 -0
- package/dist/chunk-AJU4PJGY.js +126 -0
- package/dist/chunk-AJU4PJGY.js.map +1 -0
- package/dist/chunk-ASAITVLA.js +64 -0
- package/dist/chunk-ASAITVLA.js.map +1 -0
- package/dist/{chunk-X4WESCKA.js → chunk-B5WXLVDY.js} +187 -6
- package/dist/chunk-B5WXLVDY.js.map +1 -0
- package/dist/{chunk-RCICHSHL.js → chunk-BGJGXLZ7.js} +111 -2
- package/dist/{chunk-RCICHSHL.js.map → chunk-BGJGXLZ7.js.map} +1 -1
- package/dist/{chunk-OJFGVJS6.js → chunk-BK2EFTE2.js} +319 -18
- package/dist/chunk-BK2EFTE2.js.map +1 -0
- package/dist/chunk-C4SQJZAF.js +486 -0
- package/dist/chunk-C4SQJZAF.js.map +1 -0
- package/dist/{chunk-GJQPH5G3.js → chunk-CUPFXL3J.js} +2 -2
- package/dist/chunk-DF3RVK3X.js +119 -0
- package/dist/chunk-DF3RVK3X.js.map +1 -0
- package/dist/{chunk-PMB3WGDL.js → chunk-DFTTJYSO.js} +167 -7
- package/dist/chunk-DFTTJYSO.js.map +1 -0
- package/dist/chunk-DGVM5SFL.js +69 -0
- package/dist/chunk-DGVM5SFL.js.map +1 -0
- package/dist/chunk-EIR5VLIH.js +90 -0
- package/dist/chunk-EIR5VLIH.js.map +1 -0
- package/dist/{chunk-PAORGQRI.js → chunk-EPQJM2GC.js} +37 -23
- package/dist/chunk-EPQJM2GC.js.map +1 -0
- package/dist/{chunk-POMSFKTB.js → chunk-F5VP6YCB.js} +368 -10
- package/dist/chunk-F5VP6YCB.js.map +1 -0
- package/dist/{chunk-6ZH4TU6I.js → chunk-FAAFWE4G.js} +2 -1
- package/dist/chunk-FAAFWE4G.js.map +1 -0
- package/dist/{chunk-74JR4N5J.js → chunk-FVA6TGI3.js} +2 -2
- package/dist/chunk-GDFS42HT.js +206 -0
- package/dist/chunk-GDFS42HT.js.map +1 -0
- package/dist/{chunk-BKQJBXXX.js → chunk-GGD5W7TB.js} +2 -2
- package/dist/chunk-GGD5W7TB.js.map +1 -0
- package/dist/{chunk-V7XCAHIB.js → chunk-GKFXUTJ2.js} +508 -26
- package/dist/chunk-GKFXUTJ2.js.map +1 -0
- package/dist/{chunk-NSB3WSYS.js → chunk-HK3FGIEW.js} +278 -3
- package/dist/chunk-HK3FGIEW.js.map +1 -0
- package/dist/{chunk-AAI7JARD.js → chunk-HMDCOMYU.js} +8 -11
- package/dist/chunk-HMDCOMYU.js.map +1 -0
- package/dist/chunk-IISBCCWR.js +52 -0
- package/dist/chunk-IISBCCWR.js.map +1 -0
- package/dist/{chunk-YFYL2SIJ.js → chunk-INXV5JBT.js} +290 -46
- package/dist/chunk-INXV5JBT.js.map +1 -0
- package/dist/chunk-JBMSGZEQ.js +441 -0
- package/dist/chunk-JBMSGZEQ.js.map +1 -0
- package/dist/{chunk-UPMD5XND.js → chunk-JL2PU6AI.js} +16 -5
- package/dist/chunk-JL2PU6AI.js.map +1 -0
- package/dist/{chunk-J4IYOZZ5.js → chunk-JXS5PDQ7.js} +3 -1
- package/dist/chunk-JXS5PDQ7.js.map +1 -0
- package/dist/{chunk-AYPYCLR7.js → chunk-KUB6JU6H.js} +4 -4
- package/dist/chunk-KVBLZUKV.js +173 -0
- package/dist/chunk-KVBLZUKV.js.map +1 -0
- package/dist/chunk-LBLXEFWK.js +51 -0
- package/dist/chunk-LBLXEFWK.js.map +1 -0
- package/dist/{chunk-U2IQTSBY.js → chunk-LTCGGW2D.js} +1 -1
- package/dist/chunk-LTCGGW2D.js.map +1 -0
- package/dist/{chunk-UEYA6UC7.js → chunk-NZLQTHS5.js} +25 -2
- package/dist/chunk-NZLQTHS5.js.map +1 -0
- package/dist/chunk-PVGDJXVK.js +21 -0
- package/dist/chunk-PVGDJXVK.js.map +1 -0
- package/dist/chunk-PVPWZSSI.js +37 -0
- package/dist/chunk-PVPWZSSI.js.map +1 -0
- package/dist/{chunk-4NRAJUDS.js → chunk-RBBWYEFJ.js} +1 -1
- package/dist/chunk-RFYAYKTD.js +146 -0
- package/dist/chunk-RFYAYKTD.js.map +1 -0
- package/dist/{chunk-JROGC36Y.js → chunk-RGLL5SPU.js} +2 -2
- package/dist/{chunk-2VFW5K5U.js → chunk-S3EEFKNY.js} +103 -65
- package/dist/chunk-S3EEFKNY.js.map +1 -0
- package/dist/chunk-SOBJ6NEY.js +18 -0
- package/dist/chunk-SOBJ6NEY.js.map +1 -0
- package/dist/{chunk-MYQWXITD.js → chunk-SPI27QT6.js} +2 -2
- package/dist/chunk-TVVEYCNW.js +65 -0
- package/dist/chunk-TVVEYCNW.js.map +1 -0
- package/dist/chunk-ULYOGL6R.js +322 -0
- package/dist/chunk-ULYOGL6R.js.map +1 -0
- package/dist/{chunk-S4LX5EBI.js → chunk-VBVG2M5G.js} +64 -10
- package/dist/chunk-VBVG2M5G.js.map +1 -0
- package/dist/{chunk-KWP7T3DP.js → chunk-VDX363PS.js} +2 -2
- package/dist/{chunk-XMGSSBFX.js → chunk-VYM3VWOF.js} +1560 -244
- package/dist/chunk-VYM3VWOF.js.map +1 -0
- package/dist/{chunk-MTLYEMJB.js → chunk-WCLICCGB.js} +18 -3
- package/dist/chunk-WCLICCGB.js.map +1 -0
- package/dist/{chunk-ECKDIK5F.js → chunk-WVVA7F5A.js} +2 -2
- package/dist/chunk-X6GF3FX2.js +26 -0
- package/dist/chunk-X6GF3FX2.js.map +1 -0
- package/dist/{chunk-3QFQGRHO.js → chunk-XMHBH5H6.js} +4 -4
- package/dist/{chunk-KEG4GNGI.js → chunk-XZ2TIKGC.js} +38 -8
- package/dist/chunk-XZ2TIKGC.js.map +1 -0
- package/dist/chunk-Y4FHOFJ2.js +140 -0
- package/dist/chunk-Y4FHOFJ2.js.map +1 -0
- package/dist/chunk-YNB73F22.js +137 -0
- package/dist/chunk-YNB73F22.js.map +1 -0
- package/dist/{chunk-7PA4OZEU.js → chunk-YNQKWQT4.js} +55 -30
- package/dist/chunk-YNQKWQT4.js.map +1 -0
- package/dist/chunk-ZAIM4TUE.js +488 -0
- package/dist/chunk-ZAIM4TUE.js.map +1 -0
- package/dist/{chunk-BTY5RRRF.js → chunk-ZEM3OK2K.js} +5 -5
- package/dist/chunk-ZZTOURJI.js +91 -0
- package/dist/chunk-ZZTOURJI.js.map +1 -0
- package/dist/{cli-DwIBnp2g.d.ts → cli-BkeRaYfk.d.ts} +2 -2
- package/dist/cli.d.ts +13 -5
- package/dist/cli.js +45 -33
- package/dist/config.js +1 -1
- package/dist/consolidation-operator.d.ts +41 -0
- package/dist/consolidation-operator.js +11 -0
- package/dist/consolidation-operator.js.map +1 -0
- package/dist/consolidation-provenance-check.d.ts +68 -0
- package/dist/consolidation-provenance-check.js +9 -0
- package/dist/consolidation-provenance-check.js.map +1 -0
- package/dist/consolidation-undo.d.ts +123 -0
- package/dist/consolidation-undo.js +426 -0
- package/dist/consolidation-undo.js.map +1 -0
- package/dist/contradiction-review-WIUBAR52.js +21 -0
- package/dist/contradiction-review-WIUBAR52.js.map +1 -0
- package/dist/contradiction-scan-E3GJTI4F.js +412 -0
- package/dist/contradiction-scan-E3GJTI4F.js.map +1 -0
- package/dist/cross-namespace-budget.d.ts +133 -0
- package/dist/cross-namespace-budget.js +9 -0
- package/dist/cross-namespace-budget.js.map +1 -0
- package/dist/direct-answer-wiring.d.ts +77 -0
- package/dist/direct-answer-wiring.js +10 -0
- package/dist/direct-answer-wiring.js.map +1 -0
- package/dist/direct-answer.d.ts +106 -0
- package/dist/direct-answer.js +10 -0
- package/dist/direct-answer.js.map +1 -0
- package/dist/{engine-X7X3AAG3.js → engine-F3GOXGE5.js} +7 -6
- package/dist/engine-F3GOXGE5.js.map +1 -0
- package/dist/entity-retrieval.d.ts +1 -0
- package/dist/entity-retrieval.js +6 -5
- package/dist/explicit-capture.d.ts +6 -3
- package/dist/explicit-capture.js +2 -2
- package/dist/extraction-judge-telemetry.d.ts +113 -0
- package/dist/extraction-judge-telemetry.js +14 -0
- package/dist/extraction-judge-telemetry.js.map +1 -0
- package/dist/extraction-judge-training.d.ts +85 -0
- package/dist/extraction-judge-training.js +16 -0
- package/dist/extraction-judge-training.js.map +1 -0
- package/dist/extraction-judge.d.ts +124 -2
- package/dist/extraction-judge.js +11 -1
- package/dist/extraction.js +7 -6
- package/dist/fallback-llm.d.ts +11 -2
- package/dist/fallback-llm.js +2 -2
- package/dist/graph-recall.d.ts +100 -0
- package/dist/graph-recall.js +8 -0
- package/dist/graph-recall.js.map +1 -0
- package/dist/graph-retrieval.d.ts +271 -0
- package/dist/graph-retrieval.js +21 -0
- package/dist/graph-retrieval.js.map +1 -0
- package/dist/harmonic-retrieval.js +2 -1
- package/dist/importance.js +1 -1
- package/dist/index.d.ts +589 -138
- package/dist/index.js +531 -403
- package/dist/index.js.map +1 -1
- package/dist/intent.js +1 -1
- package/dist/local-llm.d.ts +10 -3
- package/dist/local-llm.js +1 -1
- package/dist/memory-worth-bench.d.ts +51 -0
- package/dist/memory-worth-bench.js +131 -0
- package/dist/memory-worth-bench.js.map +1 -0
- package/dist/memory-worth-filter.d.ts +128 -0
- package/dist/memory-worth-filter.js +10 -0
- package/dist/memory-worth-filter.js.map +1 -0
- package/dist/memory-worth-outcomes.d.ts +118 -0
- package/dist/memory-worth-outcomes.js +9 -0
- package/dist/memory-worth-outcomes.js.map +1 -0
- package/dist/memory-worth.d.ts +102 -0
- package/dist/memory-worth.js +7 -0
- package/dist/memory-worth.js.map +1 -0
- package/dist/operator-toolkit.d.ts +40 -1
- package/dist/operator-toolkit.js +24 -14
- package/dist/{orchestrator-B9kwlCep.d.ts → orchestrator-CmJ-NTdJ.d.ts} +254 -10
- package/dist/orchestrator.d.ts +6 -3
- package/dist/orchestrator.js +59 -48
- package/dist/page-versioning.d.ts +12 -1
- package/dist/page-versioning.js +5 -3
- package/dist/{port-C1GZFv8h.d.ts → port-BADbLZU5.d.ts} +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +5 -3
- package/dist/qmd.js +2 -1
- package/dist/reasoning-trace-recall.d.ts +90 -0
- package/dist/reasoning-trace-recall.js +13 -0
- package/dist/reasoning-trace-recall.js.map +1 -0
- package/dist/reasoning-trace-types.d.ts +54 -0
- package/dist/reasoning-trace-types.js +17 -0
- package/dist/reasoning-trace-types.js.map +1 -0
- package/dist/recall-audit-anomaly.d.ts +112 -0
- package/dist/recall-audit-anomaly.js +11 -0
- package/dist/recall-audit-anomaly.js.map +1 -0
- package/dist/recall-audit.js +5 -44
- package/dist/recall-audit.js.map +1 -1
- package/dist/recall-explain-renderer.d.ts +49 -0
- package/dist/recall-explain-renderer.js +18 -0
- package/dist/recall-explain-renderer.js.map +1 -0
- package/dist/recall-state.d.ts +39 -1
- package/dist/recall-state.js +1 -1
- package/dist/recall-xray-cli.d.ts +40 -0
- package/dist/recall-xray-cli.js +11 -0
- package/dist/recall-xray-cli.js.map +1 -0
- package/dist/recall-xray-renderer.d.ts +44 -0
- package/dist/recall-xray-renderer.js +18 -0
- package/dist/recall-xray-renderer.js.map +1 -0
- package/dist/recall-xray.d.ts +179 -0
- package/dist/recall-xray.js +13 -0
- package/dist/recall-xray.js.map +1 -0
- package/dist/resolution-QBTDHTG7.js +100 -0
- package/dist/resolution-QBTDHTG7.js.map +1 -0
- package/dist/resolve-provider-secret.d.ts +24 -1
- package/dist/resolve-provider-secret.js +3 -1
- package/dist/resume-bundles.js +6 -6
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/retrieval-tiers.d.ts +17 -0
- package/dist/retrieval-tiers.js +9 -0
- package/dist/retrieval-tiers.js.map +1 -0
- package/dist/schemas.d.ts +301 -45
- package/dist/schemas.js +1 -1
- package/dist/{semantic-consolidation-DrvSYRdB.d.ts → semantic-consolidation-CxJU6MJk.d.ts} +62 -1
- package/dist/semantic-consolidation.d.ts +2 -1
- package/dist/semantic-consolidation.js +20 -6
- package/dist/semantic-rule-promotion.js +6 -5
- package/dist/semantic-rule-verifier.js +6 -5
- package/dist/storage.d.ts +82 -1
- package/dist/storage.js +5 -4
- package/dist/summarizer.js +4 -4
- package/dist/temporal-supersession.d.ts +1 -0
- package/dist/tier-migration.d.ts +2 -1
- package/dist/types-DJhqDJUV.d.ts +50 -0
- package/dist/types.d.ts +309 -3
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +6 -5
- package/package.json +1 -1
- package/dist/chunk-2VFW5K5U.js.map +0 -1
- package/dist/chunk-6ZH4TU6I.js.map +0 -1
- package/dist/chunk-7PA4OZEU.js.map +0 -1
- package/dist/chunk-AAI7JARD.js.map +0 -1
- package/dist/chunk-BKQJBXXX.js.map +0 -1
- package/dist/chunk-HITJFT7E.js.map +0 -1
- package/dist/chunk-J4IYOZZ5.js.map +0 -1
- package/dist/chunk-KEG4GNGI.js.map +0 -1
- package/dist/chunk-LAYN4LDC.js +0 -267
- package/dist/chunk-LAYN4LDC.js.map +0 -1
- package/dist/chunk-MTLYEMJB.js.map +0 -1
- package/dist/chunk-NSB3WSYS.js.map +0 -1
- package/dist/chunk-OJFGVJS6.js.map +0 -1
- package/dist/chunk-PAORGQRI.js.map +0 -1
- package/dist/chunk-PMB3WGDL.js.map +0 -1
- package/dist/chunk-POMSFKTB.js.map +0 -1
- package/dist/chunk-QDYXG4CS.js.map +0 -1
- package/dist/chunk-QKAH5B6E.js.map +0 -1
- package/dist/chunk-QNJMBKFK.js.map +0 -1
- package/dist/chunk-S4LX5EBI.js.map +0 -1
- package/dist/chunk-U2IQTSBY.js.map +0 -1
- package/dist/chunk-UEYA6UC7.js.map +0 -1
- package/dist/chunk-UPMD5XND.js.map +0 -1
- package/dist/chunk-UVJFDP7P.js +0 -202
- package/dist/chunk-UVJFDP7P.js.map +0 -1
- package/dist/chunk-V7XCAHIB.js.map +0 -1
- package/dist/chunk-X4WESCKA.js.map +0 -1
- package/dist/chunk-XMGSSBFX.js.map +0 -1
- package/dist/chunk-YFYL2SIJ.js.map +0 -1
- /package/dist/{engine-X7X3AAG3.js.map → abort-error.js.map} +0 -0
- /package/dist/{chunk-POBPGDWI.js.map → chunk-3OGMS3PE.js.map} +0 -0
- /package/dist/{chunk-GJQPH5G3.js.map → chunk-CUPFXL3J.js.map} +0 -0
- /package/dist/{chunk-74JR4N5J.js.map → chunk-FVA6TGI3.js.map} +0 -0
- /package/dist/{chunk-AYPYCLR7.js.map → chunk-KUB6JU6H.js.map} +0 -0
- /package/dist/{chunk-4NRAJUDS.js.map → chunk-RBBWYEFJ.js.map} +0 -0
- /package/dist/{chunk-JROGC36Y.js.map → chunk-RGLL5SPU.js.map} +0 -0
- /package/dist/{chunk-MYQWXITD.js.map → chunk-SPI27QT6.js.map} +0 -0
- /package/dist/{chunk-KWP7T3DP.js.map → chunk-VDX363PS.js.map} +0 -0
- /package/dist/{chunk-ECKDIK5F.js.map → chunk-WVVA7F5A.js.map} +0 -0
- /package/dist/{chunk-3QFQGRHO.js.map → chunk-XMHBH5H6.js.map} +0 -0
- /package/dist/{chunk-BTY5RRRF.js.map → chunk-ZEM3OK2K.js.map} +0 -0
|
@@ -6,16 +6,19 @@ import {
|
|
|
6
6
|
ProactiveExtractionResultSchema,
|
|
7
7
|
ProactiveQuestionsResultSchema,
|
|
8
8
|
buildProfileConsolidationResultSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NZLQTHS5.js";
|
|
10
|
+
import {
|
|
11
|
+
normalizeReasoningTrace
|
|
12
|
+
} from "./chunk-54V4BZWP.js";
|
|
10
13
|
import {
|
|
11
14
|
ProfilingCollector
|
|
12
15
|
} from "./chunk-NBNN5GOB.js";
|
|
13
|
-
import {
|
|
14
|
-
LocalLlmClient
|
|
15
|
-
} from "./chunk-UPMD5XND.js";
|
|
16
16
|
import {
|
|
17
17
|
ModelRegistry
|
|
18
18
|
} from "./chunk-FEMOX5AD.js";
|
|
19
|
+
import {
|
|
20
|
+
LocalLlmClient
|
|
21
|
+
} from "./chunk-JL2PU6AI.js";
|
|
19
22
|
import {
|
|
20
23
|
delinearize
|
|
21
24
|
} from "./chunk-VEWZZM3H.js";
|
|
@@ -26,7 +29,7 @@ import {
|
|
|
26
29
|
} from "./chunk-GZCUW5IC.js";
|
|
27
30
|
import {
|
|
28
31
|
FallbackLlmClient
|
|
29
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-3GXCSUXR.js";
|
|
30
33
|
import {
|
|
31
34
|
buildChatCompletionTokenLimit,
|
|
32
35
|
shouldAssumeOpenAiChatCompletions
|
|
@@ -50,6 +53,22 @@ import {
|
|
|
50
53
|
// src/extraction.ts
|
|
51
54
|
import OpenAI from "openai";
|
|
52
55
|
var PROACTIVE_MIN_CONFIDENCE = 0.8;
|
|
56
|
+
var CONSOLIDATION_RESPONSE_SCHEMA = `{
|
|
57
|
+
"items": [
|
|
58
|
+
{
|
|
59
|
+
"existingId": "id",
|
|
60
|
+
"action": "ADD",
|
|
61
|
+
"mergeWith": "optional-existing-id",
|
|
62
|
+
"updatedContent": "optional replacement content",
|
|
63
|
+
"reason": "brief reason for this action"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"profileUpdates": ["optional profile update"],
|
|
67
|
+
"entityUpdates": [{"name": "person-jane-doe", "type": "person", "facts": ["Now leads the backend team", "Recently migrated the user service to TypeScript"]}]
|
|
68
|
+
}`;
|
|
69
|
+
function isPlainRecord(value) {
|
|
70
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
71
|
+
}
|
|
53
72
|
function normalizeQuestion(question) {
|
|
54
73
|
const priority = Number.isFinite(question.priority) ? Math.max(0, Math.min(1, question.priority)) : 0.5;
|
|
55
74
|
return {
|
|
@@ -168,7 +187,11 @@ var ExtractionEngine = class {
|
|
|
168
187
|
structuredAttributes: f?.structuredAttributes && typeof f.structuredAttributes === "object" && !Array.isArray(f.structuredAttributes) ? Object.fromEntries(
|
|
169
188
|
Object.entries(f.structuredAttributes).filter(([k, v]) => typeof k === "string" && typeof v === "string")
|
|
170
189
|
) : void 0,
|
|
171
|
-
procedureSteps: Array.isArray(f?.procedureSteps) ? normalizeProcedureSteps(f.procedureSteps) : void 0
|
|
190
|
+
procedureSteps: Array.isArray(f?.procedureSteps) ? normalizeProcedureSteps(f.procedureSteps) : void 0,
|
|
191
|
+
reasoningTrace: (() => {
|
|
192
|
+
const candidate = f?.reasoningTrace && typeof f.reasoningTrace === "object" && !Array.isArray(f.reasoningTrace) ? f.reasoningTrace : f?.reasoning_trace && typeof f.reasoning_trace === "object" && !Array.isArray(f.reasoning_trace) ? f.reasoning_trace : null;
|
|
193
|
+
return candidate ? normalizeReasoningTrace(candidate) ?? void 0 : void 0;
|
|
194
|
+
})()
|
|
172
195
|
})).filter((f) => f.content.length > 0) : [];
|
|
173
196
|
const questions = Array.isArray(parsed?.questions) ? parsed.questions.map((q) => {
|
|
174
197
|
if (typeof q === "string") return { question: q, context: "", priority: 0.5 };
|
|
@@ -195,16 +218,32 @@ var ExtractionEngine = class {
|
|
|
195
218
|
};
|
|
196
219
|
}
|
|
197
220
|
normalizeEntityUpdate(entity) {
|
|
221
|
+
const rawUpdates = isPlainRecord(entity?.updates) ? entity.updates : null;
|
|
222
|
+
const directFacts = Array.isArray(entity?.facts) ? entity.facts.filter((fact) => typeof fact === "string").map((fact) => fact.trim()).filter((fact) => fact.length > 0) : [];
|
|
223
|
+
const updateFacts = rawUpdates && Array.isArray(rawUpdates.facts) ? rawUpdates.facts.filter((fact) => typeof fact === "string").map((fact) => fact.trim()).filter((fact) => fact.length > 0) : [];
|
|
224
|
+
const scalarUpdateFacts = rawUpdates ? Object.keys(rawUpdates).sort((a, b) => a.localeCompare(b)).filter((key) => !["facts", "name", "promptedByQuestion", "structuredSections", "type"].includes(key)).flatMap((key) => {
|
|
225
|
+
const value = rawUpdates[key];
|
|
226
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
227
|
+
return [`${key}: ${value.trim()}`];
|
|
228
|
+
}
|
|
229
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
230
|
+
return [`${key}: ${String(value)}`];
|
|
231
|
+
}
|
|
232
|
+
return [];
|
|
233
|
+
}) : [];
|
|
234
|
+
const structuredSectionsSource = Array.isArray(entity?.structuredSections) ? entity.structuredSections : Array.isArray(rawUpdates?.structuredSections) ? rawUpdates.structuredSections : [];
|
|
235
|
+
const name = typeof entity?.name === "string" ? entity.name.trim() : typeof entity?.entityId === "string" ? entity.entityId.trim() : typeof rawUpdates?.name === "string" ? rawUpdates.name.trim() : "";
|
|
236
|
+
const type = typeof entity?.type === "string" && entity.type.trim().length > 0 ? entity.type.trim() : typeof rawUpdates?.type === "string" && rawUpdates.type.trim().length > 0 ? rawUpdates.type.trim() : "other";
|
|
198
237
|
return {
|
|
199
|
-
name
|
|
200
|
-
type
|
|
201
|
-
facts:
|
|
202
|
-
structuredSections:
|
|
238
|
+
name,
|
|
239
|
+
type,
|
|
240
|
+
facts: [...directFacts, ...updateFacts, ...scalarUpdateFacts],
|
|
241
|
+
structuredSections: structuredSectionsSource.length > 0 ? structuredSectionsSource.map((section) => ({
|
|
203
242
|
key: typeof section?.key === "string" ? section.key.trim() : "",
|
|
204
243
|
title: typeof section?.title === "string" ? section.title.trim() : "",
|
|
205
244
|
facts: Array.isArray(section?.facts) ? section.facts.filter((fact) => typeof fact === "string").map((fact) => fact.trim()).filter((fact) => fact.length > 0) : []
|
|
206
245
|
})).filter((section) => section.key.length > 0 && section.title.length > 0 && section.facts.length > 0) : void 0,
|
|
207
|
-
promptedByQuestion: typeof entity?.promptedByQuestion === "string" ? entity.promptedByQuestion : void 0
|
|
246
|
+
promptedByQuestion: typeof entity?.promptedByQuestion === "string" ? entity.promptedByQuestion : typeof rawUpdates?.promptedByQuestion === "string" ? rawUpdates.promptedByQuestion : void 0
|
|
208
247
|
};
|
|
209
248
|
}
|
|
210
249
|
parseJsonObject(content) {
|
|
@@ -264,15 +303,36 @@ var ExtractionEngine = class {
|
|
|
264
303
|
return normalized.summary.length > 0 ? normalized : null;
|
|
265
304
|
}
|
|
266
305
|
sanitizeConsolidationResult(result) {
|
|
267
|
-
const items =
|
|
268
|
-
|
|
269
|
-
const
|
|
306
|
+
const items = [];
|
|
307
|
+
for (const item of Array.isArray(result.items) ? result.items : []) {
|
|
308
|
+
const rawAction = typeof item?.action === "string" ? item.action.toUpperCase() : "SKIP";
|
|
309
|
+
const action = rawAction === "ADD" || rawAction === "MERGE" || rawAction === "UPDATE" || rawAction === "INVALIDATE" || rawAction === "SKIP" ? rawAction : "SKIP";
|
|
310
|
+
const existingId = typeof item?.existingId === "string" ? item.existingId.trim() : typeof item?.newMemoryId === "string" ? item.newMemoryId.trim() : typeof item?.memoryId === "string" ? item.memoryId.trim() : "";
|
|
311
|
+
if (!existingId) continue;
|
|
312
|
+
const mergeWith = typeof item?.mergeWith === "string" ? item.mergeWith : void 0;
|
|
313
|
+
const reason = typeof item?.reason === "string" ? item.reason : "";
|
|
314
|
+
const rawUpdatedContent = typeof item?.updatedContent === "string" ? item.updatedContent : void 0;
|
|
315
|
+
if (!rawUpdatedContent) {
|
|
316
|
+
items.push({ existingId, action, mergeWith, updatedContent: void 0, reason });
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
const sanitized = sanitizeMemoryContent(rawUpdatedContent);
|
|
270
320
|
if (!sanitized.clean) {
|
|
271
|
-
log.warn(`consolidation item sanitized (${
|
|
321
|
+
log.warn(`consolidation item sanitized (${existingId}); violations=${sanitized.violations.join(", ")}`);
|
|
272
322
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
323
|
+
items.push({
|
|
324
|
+
existingId,
|
|
325
|
+
action,
|
|
326
|
+
mergeWith,
|
|
327
|
+
updatedContent: sanitized.text,
|
|
328
|
+
reason
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
const profileUpdates = (Array.isArray(result.profileUpdates) ? result.profileUpdates : []).map(
|
|
332
|
+
(update) => typeof update === "string" ? update.trim() : typeof update?.content === "string" ? update.content.trim() : ""
|
|
333
|
+
).filter((update) => update.length > 0);
|
|
334
|
+
const entityUpdates = (Array.isArray(result.entityUpdates) ? result.entityUpdates : []).map((entity) => this.normalizeEntityUpdate(entity)).filter((entity) => entity.name.length > 0);
|
|
335
|
+
return { items, profileUpdates, entityUpdates };
|
|
276
336
|
}
|
|
277
337
|
async applyProactiveQuestionPass(conversation, base) {
|
|
278
338
|
if (!this.config.proactiveExtractionEnabled) return base;
|
|
@@ -762,8 +822,16 @@ var ExtractionEngine = class {
|
|
|
762
822
|
log.debug(
|
|
763
823
|
`extracted ${result.facts.length} facts, ${result.entities.length} entities, ${(result.questions ?? []).length} questions via fallback (${detailed.modelUsed})`
|
|
764
824
|
);
|
|
825
|
+
const normalizedFacts = result.facts.map((f) => {
|
|
826
|
+
if (!f?.reasoningTrace) return f;
|
|
827
|
+
return {
|
|
828
|
+
...f,
|
|
829
|
+
reasoningTrace: normalizeReasoningTrace(f.reasoningTrace) ?? void 0
|
|
830
|
+
};
|
|
831
|
+
});
|
|
765
832
|
const sanitized = this.sanitizeExtractionResult({
|
|
766
833
|
...result,
|
|
834
|
+
facts: normalizedFacts,
|
|
767
835
|
questions: result.questions ?? [],
|
|
768
836
|
identityReflection: result.identityReflection ?? void 0
|
|
769
837
|
}, messageTimestamp);
|
|
@@ -829,6 +897,9 @@ Memory categories \u2014 use the MOST SPECIFIC category that fits:
|
|
|
829
897
|
- commitment: Promises, obligations, deadlines
|
|
830
898
|
- moment: Emotionally significant events
|
|
831
899
|
- skill: Demonstrated capabilities
|
|
900
|
+
- rule: Explicit operational rules or constraints
|
|
901
|
+
- procedure: Repeatable workflows \u2014 use when the user describes a multi-step play (\u22652 ordered steps). Put the human-readable trigger/context in "content" (e.g. "When you deploy\u2026") and list steps in "procedureSteps" as [{"order":1,"intent":"\u2026"}, \u2026] mirroring the gateway extraction schema.
|
|
902
|
+
- reasoning_trace: Stored solution chains \u2014 use when the user narrates HOW they solved a specific problem step-by-step ("here's how I figured out\u2026", "the debugging went like this\u2026"). Put a short title in "content" (e.g. "How I debugged the staging latency spike") and the chain in "reasoningTrace": {"steps":[{"order":1,"description":"\u2026"}, \u2026], "finalAnswer":"\u2026", "observedOutcome":"\u2026" (optional)}. Require \u22652 ordered steps and a finalAnswer. Do NOT use for ordinary decisions (prefer "decision") or reusable workflows (prefer "procedure").
|
|
832
903
|
|
|
833
904
|
IMPORTANT: Do NOT label everything as "fact". Use "decision" for architectural choices, "commitment" for deadlines/promises, "principle" for reusable rules, "correction" for when the user rejects a suggestion, etc.
|
|
834
905
|
|
|
@@ -890,7 +961,7 @@ Also generate:
|
|
|
890
961
|
|
|
891
962
|
Output JSON:
|
|
892
963
|
{
|
|
893
|
-
"facts": [{"category": "decision", "content": "Chose PostgreSQL over MongoDB for the user service", "importance": 8, "confidence": 0.9, "structuredAttributes": {"chosen": "PostgreSQL", "rejected": "MongoDB"}}, {"category": "commitment", "content": "Must ship v2.0 API by end of March", "importance": 10, "confidence": 1.0, "structuredAttributes": {"deadline": "end of March", "deliverable": "v2.0 API"}}, {"category": "fact", "content": "The store backend uses Redis for session caching", "importance": 6, "confidence": 0.95, "entityRef": "project-acme-store"}, {"category": "principle", "content": "Always run migrations in a transaction to avoid partial schema updates", "importance": 8, "confidence": 0.9}],
|
|
964
|
+
"facts": [{"category": "decision", "content": "Chose PostgreSQL over MongoDB for the user service", "importance": 8, "confidence": 0.9, "structuredAttributes": {"chosen": "PostgreSQL", "rejected": "MongoDB"}}, {"category": "procedure", "content": "When you cut a hotfix release, follow the checklist", "importance": 8, "confidence": 0.9, "procedureSteps": [{"order": 1, "intent": "Branch from main and cherry-pick the fix"}, {"order": 2, "intent": "Run CI and tag the release"}]}, {"category": "reasoning_trace", "content": "How I debugged the staging latency spike", "importance": 7, "confidence": 0.9, "reasoningTrace": {"steps": [{"order": 1, "description": "Checked CPU/memory dashboards \u2014 both were flat"}, {"order": 2, "description": "Ran a traceroute and saw retries against the cache tier"}, {"order": 3, "description": "Tailed cache-tier logs and spotted eviction storms"}], "finalAnswer": "Root cause was an undersized eviction policy on the session cache", "observedOutcome": "Increased cache size, p95 returned to baseline within 10 minutes"}}, {"category": "commitment", "content": "Must ship v2.0 API by end of March", "importance": 10, "confidence": 1.0, "structuredAttributes": {"deadline": "end of March", "deliverable": "v2.0 API"}}, {"category": "fact", "content": "The store backend uses Redis for session caching", "importance": 6, "confidence": 0.95, "entityRef": "project-acme-store"}, {"category": "principle", "content": "Always run migrations in a transaction to avoid partial schema updates", "importance": 8, "confidence": 0.9}],
|
|
894
965
|
"entities": [{"name": "person-jane-doe", "type": "person", "facts": ["Works at Acme Corp", "Prefers Python over JavaScript"], "structuredSections": [{"key": "beliefs", "title": "Beliefs", "facts": ["Python is a better fit than JavaScript for backend work."]}]}, {"name": "project-acme-store", "type": "project", "facts": ["Built with Next.js", "Deployed on Vercel"]}],
|
|
895
966
|
"profileUpdates": ["User prefers dark mode in all editors"],
|
|
896
967
|
"questions": [{"question": "Which cloud provider hosts the staging environment?", "context": "Came up during deployment discussion", "priority": 0.5}],
|
|
@@ -967,7 +1038,7 @@ ${truncatedConversation}`;
|
|
|
967
1038
|
|
|
968
1039
|
Respond with valid JSON matching this schema:
|
|
969
1040
|
{
|
|
970
|
-
"facts": [{"category": "decision", "content": "Chose React over Vue for the dashboard rewrite", "importance": 8, "confidence": 0.9, "tags": ["frontend"], "structuredAttributes": {"chosen": "React", "rejected": "Vue"}}, {"category": "fact", "content": "The API gateway uses rate limiting at 1000 req/min", "importance": 6, "confidence": 0.95, "tags": ["infra"], "entityRef": "project-dashboard", "structuredAttributes": {"rate_limit": "1000 req/min"}}],
|
|
1041
|
+
"facts": [{"category": "decision", "content": "Chose React over Vue for the dashboard rewrite", "importance": 8, "confidence": 0.9, "tags": ["frontend"], "structuredAttributes": {"chosen": "React", "rejected": "Vue"}}, {"category": "fact", "content": "The API gateway uses rate limiting at 1000 req/min", "importance": 6, "confidence": 0.95, "tags": ["infra"], "entityRef": "project-dashboard", "structuredAttributes": {"rate_limit": "1000 req/min"}}, {"category": "reasoning_trace", "content": "How I chose the dashboard rewrite framework", "confidence": 0.9, "tags": ["frontend"], "reasoningTrace": {"steps": [{"order": 1, "description": "Listed constraints: SSR needed, team mostly JS"}, {"order": 2, "description": "Ran a spike in Vue 3 \u2014 worked, but ecosystem felt thin for our needs"}, {"order": 3, "description": "Ran the same spike in React \u2014 integrated faster with Next.js"}], "finalAnswer": "Picked React with Next.js for SSR + ecosystem fit"}}],
|
|
971
1042
|
"entities": [{"name": "person-sarah-chen", "type": "person", "facts": ["Leads the backend team", "Joined from Google in 2024"], "structuredSections": [{"key": "beliefs", "title": "Beliefs", "facts": ["Small teams should own whole systems."]}]}, {"name": "project-dashboard", "type": "project", "facts": ["React-based admin panel", "Deployed on AWS ECS"]}],
|
|
972
1043
|
"profileUpdates": ["User prefers TypeScript over plain JavaScript"],
|
|
973
1044
|
"questions": [{"question": "What database does the analytics service use?", "context": "Came up during discussion of migration plan", "priority": 0.5}],
|
|
@@ -1013,7 +1084,8 @@ Respond with valid JSON matching this schema:
|
|
|
1013
1084
|
"moment",
|
|
1014
1085
|
"skill",
|
|
1015
1086
|
"rule",
|
|
1016
|
-
"procedure"
|
|
1087
|
+
"procedure",
|
|
1088
|
+
"reasoning_trace"
|
|
1017
1089
|
]);
|
|
1018
1090
|
const allowedEntityTypes = /* @__PURE__ */ new Set([
|
|
1019
1091
|
"person",
|
|
@@ -1071,6 +1143,7 @@ Memory categories:
|
|
|
1071
1143
|
- skill: Capabilities the user or agent has demonstrated (e.g., "user is proficient with Kubernetes")${this.config.causalRuleExtractionEnabled ? `
|
|
1072
1144
|
- rule: Causal rules discovered through experience (format: "IF <condition> THEN <action/outcome>", e.g., "IF Shopify API returns 401 THEN the admin token is missing read_products scope")` : ""}
|
|
1073
1145
|
- procedure: A reusable workflow the user wants remembered the same way across sessions. Set category to "procedure". Use "content" for a short title that includes explicit trigger phrasing (e.g. "When you deploy to production\u2026", "Whenever you ship a release\u2026"). Add "procedureSteps": an array of at least two objects {"order": number, "intent": "concrete step description"} in execution order. Optional per-step "toolCall": {"kind": "\u2026", "signature": "\u2026"}, "expectedOutcome", "optional": true.
|
|
1146
|
+
- reasoning_trace: A stored solution chain / chain-of-thought the user walked through to solve a problem (e.g. "Here's how I debugged the latency spike: first I checked\u2026, then I\u2026, finally I\u2026"). Set category to "reasoning_trace". Use "content" for a short title summarising the problem (e.g. "How I debugged the staging latency spike"). Add "reasoningTrace": {"steps": [{"order": number, "description": "what happened at this step"}, \u2026], "finalAnswer": "the conclusion or answer", "observedOutcome": "optional confirmation of how it played out"}. Require at least two ordered steps AND a finalAnswer. Use this category only when the user explicitly narrates their reasoning \u2014 not for ordinary decisions (use "decision") or reusable workflows (use "procedure").
|
|
1074
1147
|
|
|
1075
1148
|
Rules:
|
|
1076
1149
|
- Only extract genuinely NEW information worth remembering across sessions
|
|
@@ -1191,15 +1264,10 @@ Consolidate the new memories against existing ones.`
|
|
|
1191
1264
|
);
|
|
1192
1265
|
if (fallbackResult) {
|
|
1193
1266
|
log.debug(`consolidation: ${fallbackResult.items.length} decisions via fallback`);
|
|
1194
|
-
const normalizedEntityUpdates = fallbackResult.entityUpdates.map((entity) => this.normalizeEntityUpdate(entity));
|
|
1195
1267
|
return this.sanitizeConsolidationResult({
|
|
1196
|
-
items: fallbackResult.items
|
|
1197
|
-
...item,
|
|
1198
|
-
mergeWith: item.mergeWith ?? void 0,
|
|
1199
|
-
updatedContent: item.updatedContent ?? void 0
|
|
1200
|
-
})),
|
|
1268
|
+
items: fallbackResult.items,
|
|
1201
1269
|
profileUpdates: fallbackResult.profileUpdates,
|
|
1202
|
-
entityUpdates:
|
|
1270
|
+
entityUpdates: fallbackResult.entityUpdates
|
|
1203
1271
|
});
|
|
1204
1272
|
}
|
|
1205
1273
|
if (!this.client) {
|
|
@@ -1231,19 +1299,7 @@ New memories to consolidate:
|
|
|
1231
1299
|
${newList}
|
|
1232
1300
|
|
|
1233
1301
|
Respond with valid JSON only, matching this schema:
|
|
1234
|
-
{
|
|
1235
|
-
"items": [
|
|
1236
|
-
{
|
|
1237
|
-
"existingId": "id",
|
|
1238
|
-
"action": "ADD",
|
|
1239
|
-
"mergeWith": "optional-existing-id",
|
|
1240
|
-
"updatedContent": "optional replacement content",
|
|
1241
|
-
"reason": "brief reason for this action"
|
|
1242
|
-
}
|
|
1243
|
-
],
|
|
1244
|
-
"profileUpdates": ["optional profile update"],
|
|
1245
|
-
"entityUpdates": [{"name": "person-jane-doe", "type": "person", "facts": ["Now leads the backend team", "Recently migrated the user service to TypeScript"]}]
|
|
1246
|
-
}`;
|
|
1302
|
+
${CONSOLIDATION_RESPONSE_SCHEMA}`;
|
|
1247
1303
|
const response = await this.client.chat.completions.create({
|
|
1248
1304
|
model: this.config.model,
|
|
1249
1305
|
messages: [
|
|
@@ -1278,25 +1334,13 @@ Respond with valid JSON only, matching this schema:
|
|
|
1278
1334
|
tokenUsage: cUsage ? { input: cUsage.prompt_tokens, output: cUsage.completion_tokens, total: cUsage.total_tokens } : void 0
|
|
1279
1335
|
});
|
|
1280
1336
|
if (parsed && Array.isArray(parsed.items)) {
|
|
1281
|
-
const normalizedItems = parsed.items.map((item) => {
|
|
1282
|
-
const rawAction = typeof item?.action === "string" ? item.action.toUpperCase() : "SKIP";
|
|
1283
|
-
const action = rawAction === "ADD" || rawAction === "MERGE" || rawAction === "UPDATE" || rawAction === "INVALIDATE" || rawAction === "SKIP" ? rawAction : "SKIP";
|
|
1284
|
-
return {
|
|
1285
|
-
existingId: typeof item?.existingId === "string" ? item.existingId : typeof item?.newMemoryId === "string" ? item.newMemoryId : "",
|
|
1286
|
-
action,
|
|
1287
|
-
mergeWith: typeof item?.mergeWith === "string" ? item.mergeWith : void 0,
|
|
1288
|
-
updatedContent: typeof item?.updatedContent === "string" ? item.updatedContent : void 0,
|
|
1289
|
-
reason: typeof item?.reason === "string" ? item.reason : ""
|
|
1290
|
-
};
|
|
1291
|
-
}).filter((item) => item.existingId.length > 0);
|
|
1292
|
-
const normalizedEntityUpdates = Array.isArray(parsed.entityUpdates) ? parsed.entityUpdates.map((entity) => this.normalizeEntityUpdate(entity)).filter((entity) => entity.name.length > 0) : [];
|
|
1293
1337
|
log.debug(
|
|
1294
|
-
`consolidation: ${
|
|
1338
|
+
`consolidation: ${parsed.items.length} decisions`
|
|
1295
1339
|
);
|
|
1296
1340
|
return this.sanitizeConsolidationResult({
|
|
1297
|
-
items:
|
|
1298
|
-
profileUpdates: Array.isArray(parsed.profileUpdates) ? parsed.profileUpdates
|
|
1299
|
-
entityUpdates:
|
|
1341
|
+
items: parsed.items,
|
|
1342
|
+
profileUpdates: Array.isArray(parsed.profileUpdates) ? parsed.profileUpdates : [],
|
|
1343
|
+
entityUpdates: Array.isArray(parsed.entityUpdates) ? parsed.entityUpdates : []
|
|
1300
1344
|
});
|
|
1301
1345
|
}
|
|
1302
1346
|
log.warn("consolidation returned no parsed output");
|
|
@@ -1347,13 +1391,7 @@ New memories to consolidate:
|
|
|
1347
1391
|
${newList}
|
|
1348
1392
|
|
|
1349
1393
|
Respond with valid JSON matching this schema:
|
|
1350
|
-
{
|
|
1351
|
-
"items": [
|
|
1352
|
-
{"memoryId": "id", "action": "ADD|MERGE|UPDATE|INVALIDATE|SKIP", "reason": "why", "updatedContent": "optional new content"}
|
|
1353
|
-
],
|
|
1354
|
-
"profileUpdates": [{"section": "section name", "content": "new bullet"}],
|
|
1355
|
-
"entityUpdates": [{"entityId": "id", "updates": {"field": "value"}}]
|
|
1356
|
-
}`;
|
|
1394
|
+
${CONSOLIDATION_RESPONSE_SCHEMA}`;
|
|
1357
1395
|
const response = await this.localLlm.chatCompletion(
|
|
1358
1396
|
[
|
|
1359
1397
|
{ role: "system", content: "You are a memory consolidation system. Output valid JSON only." },
|
|
@@ -2222,4 +2260,4 @@ ${memoryList}` }
|
|
|
2222
2260
|
export {
|
|
2223
2261
|
ExtractionEngine
|
|
2224
2262
|
};
|
|
2225
|
-
//# sourceMappingURL=chunk-
|
|
2263
|
+
//# sourceMappingURL=chunk-S3EEFKNY.js.map
|