@remnic/core 9.6.30 → 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-boundary.d.ts +1 -0
- package/dist/access-cli.js +9 -9
- package/dist/access-http.d.ts +1 -0
- package/dist/access-identity-continuity-surface.d.ts +1 -0
- package/dist/access-lcm-surface.d.ts +1 -0
- package/dist/access-mcp.d.ts +1 -0
- package/dist/access-observe-write-surface.d.ts +1 -0
- package/dist/access-operations.d.ts +1 -0
- package/dist/access-recall-surface.d.ts +1 -0
- package/dist/access-service.d.ts +1 -0
- 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-XGSOXFD4.js → chunk-6TCXIRP5.js} +2 -2
- package/dist/{chunk-7O2JL5RY.js → chunk-DEOYTFA6.js} +2 -2
- package/dist/{chunk-R26WO46Z.js → chunk-DGFU5MSX.js} +16 -1
- package/dist/chunk-DGFU5MSX.js.map +1 -0
- package/dist/{chunk-BFU7H32D.js → chunk-OH7QLI6W.js} +2 -2
- package/dist/{chunk-IRMLYBMU.js → chunk-T67LUYCR.js} +2 -2
- package/dist/{chunk-77UPM7P3.js → chunk-TVIVY7KU.js} +160 -61
- 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-3VSTTB74.js → chunk-WSOEYOHN.js} +7 -7
- 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/compounding/preference-consolidator.d.ts +1 -0
- package/dist/event-order-recall.d.ts +1 -0
- package/dist/event-order-recall.js +2 -2
- package/dist/evidence-pack.d.ts +16 -1
- package/dist/evidence-pack.js +1 -1
- package/dist/explicit-capture.d.ts +1 -0
- package/dist/explicit-cue-recall.d.ts +16 -1
- package/dist/explicit-cue-recall.js +2 -2
- package/dist/focused-list-recall.d.ts +1 -0
- package/dist/focused-list-recall.js +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +9 -9
- package/dist/lcm/engine.d.ts +3 -0
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +5 -3
- 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 +9 -9
- package/dist/response-guidance-recall.d.ts +1 -0
- package/dist/response-guidance-recall.js +2 -2
- package/dist/targeted-fact-recall.d.ts +1 -0
- package/dist/targeted-fact-recall.js +2 -2
- package/package.json +2 -2
- package/src/evidence-pack.test.ts +66 -1
- package/src/evidence-pack.ts +39 -0
- package/src/explicit-cue-recall.ts +224 -67
- package/src/index.ts +3 -0
- package/src/lcm/engine.ts +17 -5
- package/src/lcm/index.ts +6 -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/recall-trace-receipts.test.ts +380 -0
- package/dist/chunk-5AJIDEFT.js.map +0 -1
- package/dist/chunk-77UPM7P3.js.map +0 -1
- package/dist/chunk-KCYE2MZM.js.map +0 -1
- package/dist/chunk-R26WO46Z.js.map +0 -1
- /package/dist/{chunk-XGSOXFD4.js.map → chunk-6TCXIRP5.js.map} +0 -0
- /package/dist/{chunk-7O2JL5RY.js.map → chunk-DEOYTFA6.js.map} +0 -0
- /package/dist/{chunk-BFU7H32D.js.map → chunk-OH7QLI6W.js.map} +0 -0
- /package/dist/{chunk-IRMLYBMU.js.map → chunk-T67LUYCR.js.map} +0 -0
- /package/dist/{chunk-3VSTTB74.js.map → chunk-WSOEYOHN.js.map} +0 -0
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
|
|
@@ -54,9 +54,9 @@ import "./chunk-ILNPU5W5.js";
|
|
|
54
54
|
import "./chunk-7HYPN2GC.js";
|
|
55
55
|
import "./chunk-666A3MOW.js";
|
|
56
56
|
import "./chunk-VDC6RZI4.js";
|
|
57
|
-
import "./chunk-
|
|
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,13 +113,13 @@ 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";
|
|
@@ -1,10 +1,10 @@
|
|
|
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
8
|
import "./chunk-C37ZRXX7.js";
|
|
9
9
|
import "./chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
@@ -1,10 +1,10 @@
|
|
|
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
8
|
import "./chunk-C37ZRXX7.js";
|
|
9
9
|
import "./chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
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": {
|
|
@@ -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
|
+
});
|
package/src/evidence-pack.ts
CHANGED
|
@@ -14,6 +14,23 @@ export interface EvidencePackOptions {
|
|
|
14
14
|
maxChars: number;
|
|
15
15
|
maxItemChars?: number;
|
|
16
16
|
query?: string;
|
|
17
|
+
/** Optional non-rendering receipt for each block actually appended. */
|
|
18
|
+
onSelection?: (receipt: EvidencePackSelectionReceipt) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Content-free identity fields for an evidence item that survived selection. */
|
|
22
|
+
export interface EvidencePackSelectedItem {
|
|
23
|
+
archiveRowId?: number;
|
|
24
|
+
turnIndex?: number;
|
|
25
|
+
role?: string;
|
|
26
|
+
score?: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface EvidencePackSelectionReceipt {
|
|
30
|
+
item: EvidencePackSelectedItem;
|
|
31
|
+
/** Half-open offsets within the returned evidence-pack string. */
|
|
32
|
+
blockStart: number;
|
|
33
|
+
blockEnd: number;
|
|
17
34
|
}
|
|
18
35
|
|
|
19
36
|
const DEFAULT_MAX_ITEM_CHARS = 1_200;
|
|
@@ -96,15 +113,37 @@ export function buildEvidencePack(
|
|
|
96
113
|
block.length > remaining ? clipText(block, remaining) : block;
|
|
97
114
|
if (!finalBlock.trim()) break;
|
|
98
115
|
|
|
116
|
+
const blockStart = used + separatorLength;
|
|
117
|
+
const blockEnd = blockStart + finalBlock.length;
|
|
99
118
|
lines.push(finalBlock);
|
|
100
119
|
used += separatorLength + finalBlock.length;
|
|
101
120
|
if (id) seenIds.add(id);
|
|
102
121
|
seenContent.add(contentKey);
|
|
122
|
+
options.onSelection?.({
|
|
123
|
+
item: evidencePackSelectedItem(item),
|
|
124
|
+
blockStart,
|
|
125
|
+
blockEnd,
|
|
126
|
+
});
|
|
103
127
|
}
|
|
104
128
|
|
|
105
129
|
return lines.length === 1 ? "" : lines.join("\n\n");
|
|
106
130
|
}
|
|
107
131
|
|
|
132
|
+
function evidencePackSelectedItem(
|
|
133
|
+
item: EvidencePackItem,
|
|
134
|
+
): EvidencePackSelectedItem {
|
|
135
|
+
return {
|
|
136
|
+
...(typeof item.archiveRowId === "number"
|
|
137
|
+
? { archiveRowId: item.archiveRowId }
|
|
138
|
+
: {}),
|
|
139
|
+
...(typeof item.turnIndex === "number" ? { turnIndex: item.turnIndex } : {}),
|
|
140
|
+
...(typeof item.role === "string" ? { role: item.role } : {}),
|
|
141
|
+
...(typeof item.score === "number" && Number.isFinite(item.score)
|
|
142
|
+
? { score: item.score }
|
|
143
|
+
: {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
108
147
|
export function insertAfterEvidenceHeading(
|
|
109
148
|
evidence: string,
|
|
110
149
|
title: string,
|