@remnic/core 9.6.29 → 9.6.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.d.ts +1 -0
- package/dist/access-admin-ops-surface.js +2 -1
- package/dist/access-boundary.d.ts +1 -0
- package/dist/access-boundary.js +3 -2
- package/dist/access-cli.js +18 -17
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +1 -0
- package/dist/access-http.js +7 -6
- package/dist/access-identity-continuity-surface.d.ts +1 -0
- package/dist/access-identity-continuity-surface.js +2 -1
- package/dist/access-lcm-surface.d.ts +1 -0
- package/dist/access-lcm-surface.js +2 -1
- package/dist/access-mcp.d.ts +1 -0
- package/dist/access-mcp.js +6 -5
- package/dist/access-observe-write-surface.d.ts +1 -0
- package/dist/access-observe-write-surface.js +2 -1
- package/dist/access-operations-batch.js +4 -3
- package/dist/access-operations.d.ts +1 -0
- package/dist/access-operations.js +5 -4
- package/dist/access-recall-surface.d.ts +1 -0
- package/dist/access-recall-surface.js +2 -1
- package/dist/access-service.d.ts +1 -0
- package/dist/access-service.js +2 -1
- package/dist/access-surface-catalog.d.ts +1 -0
- package/dist/bootstrap.d.ts +1 -0
- package/dist/causal-behavior.d.ts +1 -0
- package/dist/{chunk-L6W77GWW.js → chunk-6TCXIRP5.js} +25 -13
- package/dist/chunk-6TCXIRP5.js.map +1 -0
- package/dist/chunk-C37ZRXX7.js +36 -0
- package/dist/chunk-C37ZRXX7.js.map +1 -0
- package/dist/{chunk-SGYTQKC2.js → chunk-C6TKSI35.js} +3 -3
- package/dist/{chunk-C2SEH754.js → chunk-DAAJUA6Q.js} +4 -4
- package/dist/{chunk-FV5FVO2J.js → chunk-DEOYTFA6.js} +9 -5
- package/dist/chunk-DEOYTFA6.js.map +1 -0
- package/dist/{chunk-PYPOFEMK.js → chunk-DGFU5MSX.js} +16 -1
- package/dist/chunk-DGFU5MSX.js.map +1 -0
- package/dist/{chunk-EAREADWV.js → chunk-GQURC4B7.js} +2 -2
- package/dist/{chunk-XA4PWKBW.js → chunk-MXAGJHTA.js} +3 -3
- package/dist/{chunk-LZTFCAKE.js → chunk-OH7QLI6W.js} +28 -15
- package/dist/chunk-OH7QLI6W.js.map +1 -0
- package/dist/{chunk-5BHIGBHQ.js → chunk-OXVKR5OU.js} +6 -3
- package/dist/{chunk-5BHIGBHQ.js.map → chunk-OXVKR5OU.js.map} +1 -1
- package/dist/{chunk-IF7THCGJ.js → chunk-PUQZIS6A.js} +3 -3
- package/dist/{chunk-4SBW47WK.js → chunk-T67LUYCR.js} +28 -15
- package/dist/chunk-T67LUYCR.js.map +1 -0
- package/dist/{chunk-4463LUIE.js → chunk-TVIVY7KU.js} +180 -70
- package/dist/chunk-TVIVY7KU.js.map +1 -0
- package/dist/{chunk-KCYE2MZM.js → chunk-UXPUUL3G.js} +29 -8
- package/dist/chunk-UXPUUL3G.js.map +1 -0
- package/dist/chunk-VDC6RZI4.js +1 -0
- package/dist/{chunk-3RROR5KV.js → chunk-VJRJTRYF.js} +4 -4
- package/dist/{chunk-5WJ4LBFR.js → chunk-WSOEYOHN.js} +8 -8
- package/dist/{chunk-5AJIDEFT.js → chunk-XFTPUXCE.js} +11 -7
- package/dist/chunk-XFTPUXCE.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +8 -7
- package/dist/compounding/preference-consolidator.d.ts +1 -0
- package/dist/event-order-recall.d.ts +1 -0
- package/dist/event-order-recall.js +3 -2
- package/dist/evidence-pack.d.ts +18 -1
- package/dist/evidence-pack.js +1 -1
- package/dist/explicit-capture.d.ts +1 -0
- package/dist/explicit-cue-recall.d.ts +19 -1
- package/dist/explicit-cue-recall.js +3 -2
- package/dist/focused-list-recall.d.ts +1 -0
- package/dist/focused-list-recall.js +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +18 -17
- package/dist/lcm/engine.d.ts +3 -0
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +23 -1
- package/dist/lcm/index.js +14 -4
- package/dist/lcm/recall.d.ts +15 -1
- package/dist/lcm/recall.js +5 -3
- package/dist/lcm/tools.d.ts +1 -0
- package/dist/mcp-memory-inspector-app.d.ts +1 -0
- package/dist/orchestrator.d.ts +1 -0
- package/dist/orchestrator.js +18 -17
- package/dist/response-guidance-recall.d.ts +1 -0
- package/dist/response-guidance-recall.js +3 -2
- package/dist/targeted-fact-recall.d.ts +1 -0
- package/dist/targeted-fact-recall.js +3 -2
- package/package.json +2 -2
- package/src/access-lcm-surface.ts +20 -5
- package/src/access-recall-surface.ts +2 -1
- package/src/event-order-recall.ts +5 -3
- package/src/evidence-pack.test.ts +66 -1
- package/src/evidence-pack.ts +41 -0
- package/src/explicit-cue-recall.ts +291 -133
- package/src/focused-list-recall.ts +25 -16
- package/src/index.ts +3 -0
- package/src/lcm/engine.ts +17 -5
- package/src/lcm/evidence-identity.ts +59 -0
- package/src/lcm/index.ts +13 -1
- package/src/lcm/recall.ts +48 -5
- package/src/lcm-engine.test.ts +46 -0
- package/src/lcm-recall.test.ts +48 -1
- package/src/lcm-retrieval-lineage.test.ts +236 -0
- package/src/recall-trace-receipts.test.ts +380 -0
- package/src/response-guidance-recall.ts +22 -14
- package/src/targeted-fact-recall.ts +25 -16
- package/dist/chunk-4463LUIE.js.map +0 -1
- package/dist/chunk-4SBW47WK.js.map +0 -1
- package/dist/chunk-5AJIDEFT.js.map +0 -1
- package/dist/chunk-FV5FVO2J.js.map +0 -1
- package/dist/chunk-HHLLAQGZ.js +0 -1
- package/dist/chunk-KCYE2MZM.js.map +0 -1
- package/dist/chunk-L6W77GWW.js.map +0 -1
- package/dist/chunk-LZTFCAKE.js.map +0 -1
- package/dist/chunk-PYPOFEMK.js.map +0 -1
- /package/dist/{chunk-SGYTQKC2.js.map → chunk-C6TKSI35.js.map} +0 -0
- /package/dist/{chunk-C2SEH754.js.map → chunk-DAAJUA6Q.js.map} +0 -0
- /package/dist/{chunk-EAREADWV.js.map → chunk-GQURC4B7.js.map} +0 -0
- /package/dist/{chunk-XA4PWKBW.js.map → chunk-MXAGJHTA.js.map} +0 -0
- /package/dist/{chunk-IF7THCGJ.js.map → chunk-PUQZIS6A.js.map} +0 -0
- /package/dist/{chunk-HHLLAQGZ.js.map → chunk-VDC6RZI4.js.map} +0 -0
- /package/dist/{chunk-3RROR5KV.js.map → chunk-VJRJTRYF.js.map} +0 -0
- /package/dist/{chunk-5WJ4LBFR.js.map → chunk-WSOEYOHN.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
validateTaxonomy,
|
|
94
94
|
watchForChanges,
|
|
95
95
|
writeManifest
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-WSOEYOHN.js";
|
|
97
97
|
import {
|
|
98
98
|
WEARABLE_SOURCE_PREFIX,
|
|
99
99
|
buildExtractionTurns,
|
|
@@ -138,10 +138,10 @@ import {
|
|
|
138
138
|
rollbackFromEngramMigration
|
|
139
139
|
} from "./chunk-7HYPN2GC.js";
|
|
140
140
|
import "./chunk-666A3MOW.js";
|
|
141
|
-
import "./chunk-
|
|
142
|
-
import "./chunk-
|
|
141
|
+
import "./chunk-VDC6RZI4.js";
|
|
142
|
+
import "./chunk-XFTPUXCE.js";
|
|
143
143
|
import "./chunk-TPDBFYEG.js";
|
|
144
|
-
import "./chunk-
|
|
144
|
+
import "./chunk-UXPUUL3G.js";
|
|
145
145
|
import {
|
|
146
146
|
applyLcmSchema,
|
|
147
147
|
ensureLcmStateDir,
|
|
@@ -214,7 +214,7 @@ import "./chunk-YN2UN7N3.js";
|
|
|
214
214
|
import {
|
|
215
215
|
buildTargetedFactRecallSection,
|
|
216
216
|
shouldRecallTargetedFactEvidence
|
|
217
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-T67LUYCR.js";
|
|
218
218
|
import "./chunk-I6WYQSX4.js";
|
|
219
219
|
import {
|
|
220
220
|
CODEX_THREAD_KEY_PREFIX
|
|
@@ -228,7 +228,7 @@ import "./chunk-E3VODCC3.js";
|
|
|
228
228
|
import {
|
|
229
229
|
buildResponseGuidanceRecallSection,
|
|
230
230
|
shouldRecallResponseGuidance
|
|
231
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-6TCXIRP5.js";
|
|
232
232
|
import "./chunk-DE6ENYLG.js";
|
|
233
233
|
import "./chunk-HHAA35A3.js";
|
|
234
234
|
import "./chunk-X7XN6YU4.js";
|
|
@@ -301,11 +301,11 @@ import "./chunk-QT2RZNRT.js";
|
|
|
301
301
|
import {
|
|
302
302
|
buildFocusedListRecallSection,
|
|
303
303
|
shouldRecallFocusedListEvidence
|
|
304
|
-
} from "./chunk-
|
|
304
|
+
} from "./chunk-OH7QLI6W.js";
|
|
305
305
|
import {
|
|
306
306
|
buildEventOrderRecallSection,
|
|
307
307
|
shouldRecallEventOrderEvidence
|
|
308
|
-
} from "./chunk-
|
|
308
|
+
} from "./chunk-DEOYTFA6.js";
|
|
309
309
|
import "./chunk-IAIPNEHD.js";
|
|
310
310
|
import {
|
|
311
311
|
buildExplicitCueRecallSection,
|
|
@@ -318,12 +318,12 @@ import {
|
|
|
318
318
|
collectStructuredPlanCues,
|
|
319
319
|
collectTemporalLexicalCues,
|
|
320
320
|
normalizeTurnExpansionEnd
|
|
321
|
-
} from "./chunk-
|
|
321
|
+
} from "./chunk-TVIVY7KU.js";
|
|
322
322
|
import "./chunk-YVVQUAOO.js";
|
|
323
323
|
import "./chunk-LUPVCGYK.js";
|
|
324
324
|
import {
|
|
325
325
|
buildEvidencePack
|
|
326
|
-
} from "./chunk-
|
|
326
|
+
} from "./chunk-DGFU5MSX.js";
|
|
327
327
|
import {
|
|
328
328
|
buildExtensionsFooterForSummary,
|
|
329
329
|
loadDaySummaryPrompt
|
|
@@ -348,7 +348,7 @@ import {
|
|
|
348
348
|
registerTrainingExportAdapter,
|
|
349
349
|
runBulkImportCliCommand,
|
|
350
350
|
runWearablesCliCommand
|
|
351
|
-
} from "./chunk-
|
|
351
|
+
} from "./chunk-VJRJTRYF.js";
|
|
352
352
|
import "./chunk-MMACM5G2.js";
|
|
353
353
|
import "./chunk-54BGIBCR.js";
|
|
354
354
|
import "./chunk-H4CKS5B2.js";
|
|
@@ -550,7 +550,7 @@ import "./chunk-K6MV3TRQ.js";
|
|
|
550
550
|
import "./chunk-OADWQ5CR.js";
|
|
551
551
|
import {
|
|
552
552
|
EngramAccessHttpServer
|
|
553
|
-
} from "./chunk-
|
|
553
|
+
} from "./chunk-DAAJUA6Q.js";
|
|
554
554
|
import {
|
|
555
555
|
WearablesInputError,
|
|
556
556
|
describeErrorForOperator
|
|
@@ -564,7 +564,7 @@ import "./chunk-TMSXWOBZ.js";
|
|
|
564
564
|
import "./chunk-7RXCMVFQ.js";
|
|
565
565
|
import {
|
|
566
566
|
EngramMcpServer
|
|
567
|
-
} from "./chunk-
|
|
567
|
+
} from "./chunk-MXAGJHTA.js";
|
|
568
568
|
import "./chunk-IC2TCZJ2.js";
|
|
569
569
|
import {
|
|
570
570
|
buildCitationGuidance,
|
|
@@ -573,7 +573,7 @@ import {
|
|
|
573
573
|
sanitizeNoteForCitation
|
|
574
574
|
} from "./chunk-D24OXEPB.js";
|
|
575
575
|
import "./chunk-5RUE3GHQ.js";
|
|
576
|
-
import "./chunk-
|
|
576
|
+
import "./chunk-C6TKSI35.js";
|
|
577
577
|
import {
|
|
578
578
|
formatZodError,
|
|
579
579
|
memoryStoreRequestSchema,
|
|
@@ -582,7 +582,7 @@ import {
|
|
|
582
582
|
suggestionSubmitRequestSchema,
|
|
583
583
|
validateRequest
|
|
584
584
|
} from "./chunk-2MR3MFQB.js";
|
|
585
|
-
import "./chunk-
|
|
585
|
+
import "./chunk-PUQZIS6A.js";
|
|
586
586
|
import "./chunk-HLTAPHZZ.js";
|
|
587
587
|
import "./chunk-YF6FMLBT.js";
|
|
588
588
|
import {
|
|
@@ -615,7 +615,7 @@ import {
|
|
|
615
615
|
} from "./chunk-T4WDJPEZ.js";
|
|
616
616
|
import {
|
|
617
617
|
OPERATION_NAMES
|
|
618
|
-
} from "./chunk-
|
|
618
|
+
} from "./chunk-GQURC4B7.js";
|
|
619
619
|
import {
|
|
620
620
|
TOKEN_CAPABILITIES_VERSION,
|
|
621
621
|
capabilityAllowsNamespace,
|
|
@@ -631,7 +631,7 @@ import {
|
|
|
631
631
|
EngramAccessService,
|
|
632
632
|
computeProcedureStats,
|
|
633
633
|
formatProcedureStatsText
|
|
634
|
-
} from "./chunk-
|
|
634
|
+
} from "./chunk-OXVKR5OU.js";
|
|
635
635
|
import "./chunk-GDASG7NC.js";
|
|
636
636
|
import "./chunk-GDB4J2H3.js";
|
|
637
637
|
import "./chunk-M5QKGHCR.js";
|
|
@@ -727,6 +727,7 @@ import {
|
|
|
727
727
|
parseProcedureStepsFromBody
|
|
728
728
|
} from "./chunk-QDW3E4RD.js";
|
|
729
729
|
import "./chunk-ZGPDSEKG.js";
|
|
730
|
+
import "./chunk-C37ZRXX7.js";
|
|
730
731
|
import {
|
|
731
732
|
getHostEmbeddingProvider,
|
|
732
733
|
normalizeHostEmbeddingVector,
|
package/dist/lcm/engine.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LcmStructuredRecallMatch } from './archive.js';
|
|
2
2
|
import { SummarizeFn } from './summarizer.js';
|
|
3
|
+
import { LcmRecallWithTraceResult } from './recall.js';
|
|
3
4
|
import { LcmObserveMessage } from './queue.js';
|
|
4
5
|
import { P as PluginConfig } from '../types-DDUDgd7T.js';
|
|
5
6
|
import 'better-sqlite3';
|
|
@@ -65,6 +66,8 @@ declare class LcmEngine {
|
|
|
65
66
|
private waitForPendingObserveInitIdle;
|
|
66
67
|
/** Build the compressed history recall section for a session. */
|
|
67
68
|
assembleRecall(sessionId: string, budgetChars: number): Promise<string>;
|
|
69
|
+
/** Build compressed recall plus content-free selected-summary receipts. */
|
|
70
|
+
assembleRecallWithTrace(sessionId: string, budgetChars: number): Promise<LcmRecallWithTraceResult>;
|
|
68
71
|
searchStructuredParts(sessionId: string, query: string, limit?: number): Promise<LcmStructuredRecallMatch[]>;
|
|
69
72
|
formatStructuredRecall(matches: LcmStructuredRecallMatch[], budgetChars: number): string;
|
|
70
73
|
/** Flush pending summaries before compaction (called from before_compaction hook). */
|
package/dist/lcm/engine.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LcmEngine,
|
|
3
3
|
extractLcmConfig
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-XFTPUXCE.js";
|
|
5
5
|
import "../chunk-TPDBFYEG.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-UXPUUL3G.js";
|
|
7
7
|
import "../chunk-7N2RUBAP.js";
|
|
8
8
|
import "../chunk-MTR7BZQN.js";
|
|
9
9
|
import "../chunk-O7BBFJLP.js";
|
package/dist/lcm/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { LcmEngine, LcmEngineConfig, LcmExpandedMessage, extractLcmConfig } from
|
|
|
2
2
|
export { LcmArchive, estimateTokens } from './archive.js';
|
|
3
3
|
export { LcmDag, SummaryNode } from './dag.js';
|
|
4
4
|
export { LcmSummarizer, SummarizeFn } from './summarizer.js';
|
|
5
|
-
export { assembleCompressedHistory } from './recall.js';
|
|
5
|
+
export { LcmRecallWithTraceResult, LcmSummarySelectionReceipt, assembleCompressedHistory, assembleCompressedHistoryWithTrace } from './recall.js';
|
|
6
6
|
export { registerLcmTools } from './tools.js';
|
|
7
7
|
export { ensureLcmStateDir, openLcmDatabase } from './schema.js';
|
|
8
8
|
import './queue.js';
|
|
@@ -10,3 +10,25 @@ import '../message-parts/index.js';
|
|
|
10
10
|
import '../types-DDUDgd7T.js';
|
|
11
11
|
import 'better-sqlite3';
|
|
12
12
|
import '../runtime/better-sqlite.js';
|
|
13
|
+
|
|
14
|
+
interface LcmRowIdentity {
|
|
15
|
+
id?: number;
|
|
16
|
+
session_id?: string;
|
|
17
|
+
turn_index: number;
|
|
18
|
+
}
|
|
19
|
+
interface LcmEvidenceIdentity {
|
|
20
|
+
id: string;
|
|
21
|
+
archiveRowId?: number;
|
|
22
|
+
}
|
|
23
|
+
declare function lcmArchiveRowId(row: Pick<LcmRowIdentity, "id">): number | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Build the non-rendered evidence identity for an LCM archive row.
|
|
26
|
+
*
|
|
27
|
+
* Older adapters and test doubles may omit the SQLite row id. Those callers
|
|
28
|
+
* retain the historical session+turn identity until they adopt row lineage.
|
|
29
|
+
*/
|
|
30
|
+
declare function lcmEvidenceIdentity(row: LcmRowIdentity, fallbackSessionId: string): LcmEvidenceIdentity;
|
|
31
|
+
/** Match a search hit to its expanded archive row without conflating siblings. */
|
|
32
|
+
declare function isSameLcmRow(left: LcmRowIdentity, leftFallbackSessionId: string, right: LcmRowIdentity, rightFallbackSessionId: string): boolean;
|
|
33
|
+
|
|
34
|
+
export { type LcmEvidenceIdentity, type LcmRowIdentity, isSameLcmRow, lcmArchiveRowId, lcmEvidenceIdentity };
|
package/dist/lcm/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-VDC6RZI4.js";
|
|
2
2
|
import {
|
|
3
3
|
LcmEngine,
|
|
4
4
|
extractLcmConfig
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-XFTPUXCE.js";
|
|
6
6
|
import "../chunk-TPDBFYEG.js";
|
|
7
7
|
import {
|
|
8
|
-
assembleCompressedHistory
|
|
9
|
-
|
|
8
|
+
assembleCompressedHistory,
|
|
9
|
+
assembleCompressedHistoryWithTrace
|
|
10
|
+
} from "../chunk-UXPUUL3G.js";
|
|
10
11
|
import {
|
|
11
12
|
ensureLcmStateDir,
|
|
12
13
|
openLcmDatabase
|
|
@@ -26,6 +27,11 @@ import {
|
|
|
26
27
|
} from "../chunk-7N4KAIGN.js";
|
|
27
28
|
import "../chunk-4RA3C3EV.js";
|
|
28
29
|
import "../chunk-AQEJKOKI.js";
|
|
30
|
+
import {
|
|
31
|
+
isSameLcmRow,
|
|
32
|
+
lcmArchiveRowId,
|
|
33
|
+
lcmEvidenceIdentity
|
|
34
|
+
} from "../chunk-C37ZRXX7.js";
|
|
29
35
|
import "../chunk-RL6NEVXT.js";
|
|
30
36
|
import "../chunk-37CTGERM.js";
|
|
31
37
|
import "../chunk-PZ5AY32C.js";
|
|
@@ -35,9 +41,13 @@ export {
|
|
|
35
41
|
LcmEngine,
|
|
36
42
|
LcmSummarizer,
|
|
37
43
|
assembleCompressedHistory,
|
|
44
|
+
assembleCompressedHistoryWithTrace,
|
|
38
45
|
ensureLcmStateDir,
|
|
39
46
|
estimateTokens,
|
|
40
47
|
extractLcmConfig,
|
|
48
|
+
isSameLcmRow,
|
|
49
|
+
lcmArchiveRowId,
|
|
50
|
+
lcmEvidenceIdentity,
|
|
41
51
|
openLcmDatabase,
|
|
42
52
|
registerLcmTools
|
|
43
53
|
};
|
package/dist/lcm/recall.d.ts
CHANGED
|
@@ -7,6 +7,19 @@ interface LcmRecallConfig {
|
|
|
7
7
|
freshTailTurns: number;
|
|
8
8
|
budgetChars: number;
|
|
9
9
|
}
|
|
10
|
+
interface LcmSummarySelectionReceipt {
|
|
11
|
+
id: string;
|
|
12
|
+
depth: number;
|
|
13
|
+
msgStart: number;
|
|
14
|
+
msgEnd: number;
|
|
15
|
+
/** Half-open offsets within the returned compressed-history string. */
|
|
16
|
+
entryStart: number;
|
|
17
|
+
entryEnd: number;
|
|
18
|
+
}
|
|
19
|
+
interface LcmRecallWithTraceResult {
|
|
20
|
+
text: string;
|
|
21
|
+
selectedSummaries: LcmSummarySelectionReceipt[];
|
|
22
|
+
}
|
|
10
23
|
/**
|
|
11
24
|
* Assemble a compressed session history section from the summary DAG.
|
|
12
25
|
*
|
|
@@ -16,5 +29,6 @@ interface LcmRecallConfig {
|
|
|
16
29
|
* 3. Fill within budget, prioritizing recent content.
|
|
17
30
|
*/
|
|
18
31
|
declare function assembleCompressedHistory(dag: LcmDag, archive: LcmArchive, sessionId: string, config: LcmRecallConfig): string;
|
|
32
|
+
declare function assembleCompressedHistoryWithTrace(dag: LcmDag, archive: LcmArchive, sessionId: string, config: LcmRecallConfig): LcmRecallWithTraceResult;
|
|
19
33
|
|
|
20
|
-
export { type LcmRecallConfig, assembleCompressedHistory };
|
|
34
|
+
export { type LcmRecallConfig, type LcmRecallWithTraceResult, type LcmSummarySelectionReceipt, assembleCompressedHistory, assembleCompressedHistoryWithTrace };
|
package/dist/lcm/recall.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
assembleCompressedHistory
|
|
3
|
-
|
|
2
|
+
assembleCompressedHistory,
|
|
3
|
+
assembleCompressedHistoryWithTrace
|
|
4
|
+
} from "../chunk-UXPUUL3G.js";
|
|
4
5
|
import "../chunk-PZ5AY32C.js";
|
|
5
6
|
export {
|
|
6
|
-
assembleCompressedHistory
|
|
7
|
+
assembleCompressedHistory,
|
|
8
|
+
assembleCompressedHistoryWithTrace
|
|
7
9
|
};
|
|
8
10
|
//# sourceMappingURL=recall.js.map
|
package/dist/lcm/tools.d.ts
CHANGED
package/dist/orchestrator.d.ts
CHANGED
package/dist/orchestrator.js
CHANGED
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
throwIfRecallAborted,
|
|
44
44
|
tokenizeRecallQuery,
|
|
45
45
|
utcDateKeysForLocalDay
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-WSOEYOHN.js";
|
|
47
47
|
import "./chunk-J3XHPFEU.js";
|
|
48
48
|
import {
|
|
49
49
|
formatCompressionGuidelinesForRecall
|
|
@@ -53,10 +53,10 @@ import "./chunk-I74SUMNI.js";
|
|
|
53
53
|
import "./chunk-ILNPU5W5.js";
|
|
54
54
|
import "./chunk-7HYPN2GC.js";
|
|
55
55
|
import "./chunk-666A3MOW.js";
|
|
56
|
-
import "./chunk-
|
|
57
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-VDC6RZI4.js";
|
|
57
|
+
import "./chunk-XFTPUXCE.js";
|
|
58
58
|
import "./chunk-TPDBFYEG.js";
|
|
59
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-UXPUUL3G.js";
|
|
60
60
|
import "./chunk-7N2RUBAP.js";
|
|
61
61
|
import "./chunk-MTR7BZQN.js";
|
|
62
62
|
import "./chunk-UWK5OXUJ.js";
|
|
@@ -78,7 +78,7 @@ import "./chunk-4OKLXWDZ.js";
|
|
|
78
78
|
import "./chunk-UHGBNIOS.js";
|
|
79
79
|
import "./chunk-BCDKBDSY.js";
|
|
80
80
|
import "./chunk-YN2UN7N3.js";
|
|
81
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-T67LUYCR.js";
|
|
82
82
|
import "./chunk-I6WYQSX4.js";
|
|
83
83
|
import "./chunk-4EX5WZ4M.js";
|
|
84
84
|
import "./chunk-XZ5I7OZR.js";
|
|
@@ -87,7 +87,7 @@ import "./chunk-FDPZVY6D.js";
|
|
|
87
87
|
import "./chunk-5IZL4DCV.js";
|
|
88
88
|
import "./chunk-2IZAGAJR.js";
|
|
89
89
|
import "./chunk-E3VODCC3.js";
|
|
90
|
-
import "./chunk-
|
|
90
|
+
import "./chunk-6TCXIRP5.js";
|
|
91
91
|
import "./chunk-DE6ENYLG.js";
|
|
92
92
|
import "./chunk-HHAA35A3.js";
|
|
93
93
|
import "./chunk-X7XN6YU4.js";
|
|
@@ -113,20 +113,20 @@ import "./chunk-5GSUBCZM.js";
|
|
|
113
113
|
import "./chunk-54V4BZWP.js";
|
|
114
114
|
import "./chunk-KAWTOYAW.js";
|
|
115
115
|
import "./chunk-QT2RZNRT.js";
|
|
116
|
-
import "./chunk-
|
|
117
|
-
import "./chunk-
|
|
116
|
+
import "./chunk-OH7QLI6W.js";
|
|
117
|
+
import "./chunk-DEOYTFA6.js";
|
|
118
118
|
import "./chunk-IAIPNEHD.js";
|
|
119
|
-
import "./chunk-
|
|
119
|
+
import "./chunk-TVIVY7KU.js";
|
|
120
120
|
import "./chunk-YVVQUAOO.js";
|
|
121
121
|
import "./chunk-LUPVCGYK.js";
|
|
122
|
-
import "./chunk-
|
|
122
|
+
import "./chunk-DGFU5MSX.js";
|
|
123
123
|
import "./chunk-I73G4UH7.js";
|
|
124
124
|
import "./chunk-VEWZZM3H.js";
|
|
125
125
|
import "./chunk-Q6IP2ARR.js";
|
|
126
126
|
import "./chunk-6HEM6HTQ.js";
|
|
127
127
|
import "./chunk-O2EL7EGG.js";
|
|
128
128
|
import "./chunk-FVTLSFWU.js";
|
|
129
|
-
import "./chunk-
|
|
129
|
+
import "./chunk-VJRJTRYF.js";
|
|
130
130
|
import "./chunk-MMACM5G2.js";
|
|
131
131
|
import "./chunk-54BGIBCR.js";
|
|
132
132
|
import "./chunk-H4CKS5B2.js";
|
|
@@ -217,7 +217,7 @@ import "./chunk-G6NKALRN.js";
|
|
|
217
217
|
import "./chunk-OO42R444.js";
|
|
218
218
|
import "./chunk-K6MV3TRQ.js";
|
|
219
219
|
import "./chunk-OADWQ5CR.js";
|
|
220
|
-
import "./chunk-
|
|
220
|
+
import "./chunk-DAAJUA6Q.js";
|
|
221
221
|
import "./chunk-V7IZKJI3.js";
|
|
222
222
|
import "./chunk-SEDEKFYQ.js";
|
|
223
223
|
import "./chunk-RKNJBZ55.js";
|
|
@@ -226,13 +226,13 @@ import "./chunk-RSUYKGGZ.js";
|
|
|
226
226
|
import "./chunk-42NQ7AVG.js";
|
|
227
227
|
import "./chunk-TMSXWOBZ.js";
|
|
228
228
|
import "./chunk-7RXCMVFQ.js";
|
|
229
|
-
import "./chunk-
|
|
229
|
+
import "./chunk-MXAGJHTA.js";
|
|
230
230
|
import "./chunk-IC2TCZJ2.js";
|
|
231
231
|
import "./chunk-D24OXEPB.js";
|
|
232
232
|
import "./chunk-5RUE3GHQ.js";
|
|
233
|
-
import "./chunk-
|
|
233
|
+
import "./chunk-C6TKSI35.js";
|
|
234
234
|
import "./chunk-2MR3MFQB.js";
|
|
235
|
-
import "./chunk-
|
|
235
|
+
import "./chunk-PUQZIS6A.js";
|
|
236
236
|
import "./chunk-HLTAPHZZ.js";
|
|
237
237
|
import "./chunk-YF6FMLBT.js";
|
|
238
238
|
import "./chunk-PRTA6444.js";
|
|
@@ -240,9 +240,9 @@ import "./chunk-KQDNAXOM.js";
|
|
|
240
240
|
import "./chunk-35NN3ZFA.js";
|
|
241
241
|
import "./chunk-FTYDWKO6.js";
|
|
242
242
|
import "./chunk-T4WDJPEZ.js";
|
|
243
|
-
import "./chunk-
|
|
243
|
+
import "./chunk-GQURC4B7.js";
|
|
244
244
|
import "./chunk-D7FOKIY5.js";
|
|
245
|
-
import "./chunk-
|
|
245
|
+
import "./chunk-OXVKR5OU.js";
|
|
246
246
|
import "./chunk-GDASG7NC.js";
|
|
247
247
|
import "./chunk-GDB4J2H3.js";
|
|
248
248
|
import "./chunk-M5QKGHCR.js";
|
|
@@ -288,6 +288,7 @@ import "./chunk-MTWKDOVO.js";
|
|
|
288
288
|
import "./chunk-O75CRYGF.js";
|
|
289
289
|
import "./chunk-QDW3E4RD.js";
|
|
290
290
|
import "./chunk-ZGPDSEKG.js";
|
|
291
|
+
import "./chunk-C37ZRXX7.js";
|
|
291
292
|
import "./chunk-3ONXXHQO.js";
|
|
292
293
|
import "./chunk-ODPLEWB6.js";
|
|
293
294
|
import "./chunk-ZY2MNJR6.js";
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildResponseGuidanceRecallSection,
|
|
3
3
|
shouldRecallResponseGuidance
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6TCXIRP5.js";
|
|
5
5
|
import "./chunk-YVVQUAOO.js";
|
|
6
6
|
import "./chunk-LUPVCGYK.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-DGFU5MSX.js";
|
|
8
|
+
import "./chunk-C37ZRXX7.js";
|
|
8
9
|
import "./chunk-PZ5AY32C.js";
|
|
9
10
|
export {
|
|
10
11
|
buildResponseGuidanceRecallSection,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildTargetedFactRecallSection,
|
|
3
3
|
shouldRecallTargetedFactEvidence
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-T67LUYCR.js";
|
|
5
5
|
import "./chunk-YVVQUAOO.js";
|
|
6
6
|
import "./chunk-LUPVCGYK.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-DGFU5MSX.js";
|
|
8
|
+
import "./chunk-C37ZRXX7.js";
|
|
8
9
|
import "./chunk-PZ5AY32C.js";
|
|
9
10
|
export {
|
|
10
11
|
buildTargetedFactRecallSection,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.6.
|
|
3
|
+
"version": "9.6.31",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3000,7 +3000,7 @@
|
|
|
3000
3000
|
"core"
|
|
3001
3001
|
],
|
|
3002
3002
|
"peerDependencies": {
|
|
3003
|
-
"@remnic/coding-graph": "^9.6.
|
|
3003
|
+
"@remnic/coding-graph": "^9.6.31"
|
|
3004
3004
|
},
|
|
3005
3005
|
"peerDependenciesMeta": {
|
|
3006
3006
|
"@remnic/coding-graph": {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { resolveNamespaceCapabilities } from "./capabilities.js";
|
|
12
12
|
import { combineNamespaces, lcmSessionKeyForNamespace, resolveCodingNamespaceOverlay } from "./coding/coding-namespace.js";
|
|
13
13
|
import { log } from "./logger.js";
|
|
14
|
+
import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
|
|
14
15
|
import { canWriteNamespace, defaultNamespaceForPrincipal, recallNamespacesForPrincipal } from "./namespaces/principal.js";
|
|
15
16
|
import type { Orchestrator } from "./orchestrator.js";
|
|
16
17
|
import {
|
|
@@ -207,8 +208,8 @@ export class AccessLcmSurface {
|
|
|
207
208
|
lcmEnabled: true,
|
|
208
209
|
};
|
|
209
210
|
}
|
|
210
|
-
// Query each LCM read key in order, merging + deduping
|
|
211
|
-
//
|
|
211
|
+
// Query each LCM read key in order, merging + deduping by stable archive-row
|
|
212
|
+
// identity and preserving first-seen order, capped at `limit`.
|
|
212
213
|
// Use allSettled so one corrupt/failed namespace key cannot discard sibling
|
|
213
214
|
// results from other authorized profile namespaces.
|
|
214
215
|
const seenRows = new Set<string>();
|
|
@@ -216,7 +217,14 @@ export class AccessLcmSurface {
|
|
|
216
217
|
const lcmSearches: Array<{
|
|
217
218
|
key: string | undefined;
|
|
218
219
|
prefix: string | undefined;
|
|
219
|
-
promise: Promise<
|
|
220
|
+
promise: Promise<
|
|
221
|
+
Array<{
|
|
222
|
+
id?: number;
|
|
223
|
+
session_id: string;
|
|
224
|
+
content: string;
|
|
225
|
+
turn_index: number;
|
|
226
|
+
}>
|
|
227
|
+
>;
|
|
220
228
|
}> = [];
|
|
221
229
|
for (const lcmSessionKey of lcmSessionKeyIds) {
|
|
222
230
|
for (const lcmSessionPrefix of lcmSessionPrefixes) {
|
|
@@ -228,7 +236,14 @@ export class AccessLcmSurface {
|
|
|
228
236
|
limit,
|
|
229
237
|
lcmSessionKey,
|
|
230
238
|
lcmSessionPrefix,
|
|
231
|
-
) as Promise<
|
|
239
|
+
) as Promise<
|
|
240
|
+
Array<{
|
|
241
|
+
id?: number;
|
|
242
|
+
session_id: string;
|
|
243
|
+
content: string;
|
|
244
|
+
turn_index: number;
|
|
245
|
+
}>
|
|
246
|
+
>,
|
|
232
247
|
});
|
|
233
248
|
}
|
|
234
249
|
}
|
|
@@ -246,7 +261,7 @@ export class AccessLcmSurface {
|
|
|
246
261
|
continue;
|
|
247
262
|
}
|
|
248
263
|
for (const r of settled.value) {
|
|
249
|
-
const dedupeKey =
|
|
264
|
+
const dedupeKey = lcmEvidenceIdentity(r, r.session_id).id;
|
|
250
265
|
if (seenRows.has(dedupeKey)) continue;
|
|
251
266
|
seenRows.add(dedupeKey);
|
|
252
267
|
results.push({
|
|
@@ -18,6 +18,7 @@ import { throwIfAborted } from "./abort-error.js";
|
|
|
18
18
|
import { resolveNamespaceCapabilities } from "./capabilities.js";
|
|
19
19
|
import { resolveCodingNamespaceOverlay } from "./coding/coding-namespace.js";
|
|
20
20
|
import { type BudgetDecision, CrossNamespaceBudget } from "./cross-namespace-budget.js";
|
|
21
|
+
import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
|
|
21
22
|
import { normalizeProjectionTags } from "./memory-projection-format.js";
|
|
22
23
|
import { namespaceIdentityFromToken } from "./namespaces/identity.js";
|
|
23
24
|
import { canReadNamespace, defaultNamespaceForPrincipal, recallNamespacesForPrincipal, resolvePrincipal } from "./namespaces/principal.js";
|
|
@@ -593,7 +594,7 @@ export class AccessRecallSurface {
|
|
|
593
594
|
if (excerpts.length >= limit) break;
|
|
594
595
|
if (result.status !== "fulfilled") continue;
|
|
595
596
|
for (const r of result.value) {
|
|
596
|
-
const dedupeKey =
|
|
597
|
+
const dedupeKey = lcmEvidenceIdentity(r, r.session_id).id;
|
|
597
598
|
if (seenRows.has(dedupeKey)) continue;
|
|
598
599
|
seenRows.add(dedupeKey);
|
|
599
600
|
excerpts.push({
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { buildEvidencePack, type EvidencePackItem } from "./evidence-pack.js";
|
|
2
2
|
import type { ExplicitCueRecallEngine } from "./explicit-cue-recall.js";
|
|
3
|
+
import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
|
|
3
4
|
|
|
4
5
|
import {
|
|
5
6
|
unifiedDedupeAndRank,
|
|
@@ -205,13 +206,14 @@ async function collectEventOrderItems(
|
|
|
205
206
|
windowTokens,
|
|
206
207
|
);
|
|
207
208
|
for (const message of messages) {
|
|
208
|
-
const
|
|
209
|
+
const identity = lcmEvidenceIdentity(message, options.sessionId);
|
|
210
|
+
const id = identity.id;
|
|
209
211
|
if (seen.has(id)) continue;
|
|
210
212
|
if (!isEventOrderCandidate(message.content, message.role, options.query)) continue;
|
|
211
213
|
seen.add(id);
|
|
212
214
|
items.push({
|
|
213
|
-
|
|
214
|
-
sessionId: options.sessionId,
|
|
215
|
+
...identity,
|
|
216
|
+
sessionId: message.session_id ?? options.sessionId,
|
|
215
217
|
turnIndex: message.turn_index,
|
|
216
218
|
role: message.role,
|
|
217
219
|
content: appendChronologicalCues(message.content, options.query),
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import test from "node:test";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
buildEvidencePack,
|
|
6
|
+
type EvidencePackSelectionReceipt,
|
|
7
|
+
} from "./evidence-pack.js";
|
|
5
8
|
|
|
6
9
|
test("buildEvidencePack deduplicates evidence and stays within budget", () => {
|
|
7
10
|
const pack = buildEvidencePack(
|
|
@@ -87,3 +90,65 @@ test("buildEvidencePack keeps query-focused evidence from later long turns", ()
|
|
|
87
90
|
assert.match(pack, /Dec 16, 2023 - Jan 15, 2024/);
|
|
88
91
|
assert.match(pack, /Feb 16 - Mar 15, 2024/);
|
|
89
92
|
});
|
|
93
|
+
|
|
94
|
+
test("buildEvidencePack reports only appended blocks with exact content-free offsets", () => {
|
|
95
|
+
const receipts: EvidencePackSelectionReceipt[] = [];
|
|
96
|
+
const items = [
|
|
97
|
+
{
|
|
98
|
+
id: "selected",
|
|
99
|
+
archiveRowId: 41,
|
|
100
|
+
sessionId: "private-session",
|
|
101
|
+
turnIndex: 7,
|
|
102
|
+
role: "user",
|
|
103
|
+
content: "selected private evidence",
|
|
104
|
+
score: 2,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "duplicate-content",
|
|
108
|
+
archiveRowId: 42,
|
|
109
|
+
sessionId: "private-session",
|
|
110
|
+
turnIndex: 8,
|
|
111
|
+
role: "assistant",
|
|
112
|
+
content: "selected private evidence",
|
|
113
|
+
score: 1,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
id: "budget-rejected",
|
|
117
|
+
archiveRowId: 43,
|
|
118
|
+
sessionId: "private-session",
|
|
119
|
+
turnIndex: 9,
|
|
120
|
+
role: "assistant",
|
|
121
|
+
content: "this block cannot fit inside the remaining budget",
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
const options = {
|
|
125
|
+
title: "Receipt evidence",
|
|
126
|
+
maxChars:
|
|
127
|
+
"## Receipt evidence".length +
|
|
128
|
+
2 +
|
|
129
|
+
"[private-session, turn 7, user, score 2.000]: selected private evidence".length,
|
|
130
|
+
maxItemChars: 200,
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const baseline = buildEvidencePack(items, options);
|
|
134
|
+
const traced = buildEvidencePack(items, {
|
|
135
|
+
...options,
|
|
136
|
+
onSelection: (receipt) => receipts.push(receipt),
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
assert.equal(traced, baseline);
|
|
140
|
+
assert.equal(receipts.length, 1);
|
|
141
|
+
const receipt = receipts[0]!;
|
|
142
|
+
assert.equal(
|
|
143
|
+
traced.slice(receipt.blockStart, receipt.blockEnd),
|
|
144
|
+
"[private-session, turn 7, user, score 2.000]: selected private evidence",
|
|
145
|
+
);
|
|
146
|
+
assert.deepEqual(receipt.item, {
|
|
147
|
+
archiveRowId: 41,
|
|
148
|
+
turnIndex: 7,
|
|
149
|
+
role: "user",
|
|
150
|
+
score: 2,
|
|
151
|
+
});
|
|
152
|
+
assert.equal("content" in receipt.item, false);
|
|
153
|
+
assert.equal("sessionId" in receipt.item, false);
|
|
154
|
+
});
|