anno-extension 0.1.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/LICENSE +7 -0
- package/README.md +30 -0
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/dist/browser-fs.d.ts +14 -0
- package/dist/browser-fs.d.ts.map +1 -0
- package/dist/browser-fs.js +69 -0
- package/dist/browser-fs.js.map +1 -0
- package/dist/config.d.ts +81 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +82 -0
- package/dist/config.js.map +1 -0
- package/dist/consolidate-v2.d.ts +15 -0
- package/dist/consolidate-v2.d.ts.map +1 -0
- package/dist/consolidate-v2.js +125 -0
- package/dist/consolidate-v2.js.map +1 -0
- package/dist/consolidation.d.ts +12 -0
- package/dist/consolidation.d.ts.map +1 -0
- package/dist/consolidation.js +199 -0
- package/dist/consolidation.js.map +1 -0
- package/dist/dedup.d.ts +18 -0
- package/dist/dedup.d.ts.map +1 -0
- package/dist/dedup.js +85 -0
- package/dist/dedup.js.map +1 -0
- package/dist/diagnostics.d.ts +24 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +53 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/embedding-index.d.ts +27 -0
- package/dist/embedding-index.d.ts.map +1 -0
- package/dist/embedding-index.js +111 -0
- package/dist/embedding-index.js.map +1 -0
- package/dist/engine-archive.d.ts +37 -0
- package/dist/engine-archive.d.ts.map +1 -0
- package/dist/engine-archive.js +155 -0
- package/dist/engine-archive.js.map +1 -0
- package/dist/engine-episode-sync.d.ts +19 -0
- package/dist/engine-episode-sync.d.ts.map +1 -0
- package/dist/engine-episode-sync.js +186 -0
- package/dist/engine-episode-sync.js.map +1 -0
- package/dist/engine-injection-text.d.ts +46 -0
- package/dist/engine-injection-text.d.ts.map +1 -0
- package/dist/engine-injection-text.js +271 -0
- package/dist/engine-injection-text.js.map +1 -0
- package/dist/engine-insights.d.ts +22 -0
- package/dist/engine-insights.d.ts.map +1 -0
- package/dist/engine-insights.js +127 -0
- package/dist/engine-insights.js.map +1 -0
- package/dist/engine-links.d.ts +43 -0
- package/dist/engine-links.d.ts.map +1 -0
- package/dist/engine-links.js +223 -0
- package/dist/engine-links.js.map +1 -0
- package/dist/engine-recall-select.d.ts +84 -0
- package/dist/engine-recall-select.d.ts.map +1 -0
- package/dist/engine-recall-select.js +127 -0
- package/dist/engine-recall-select.js.map +1 -0
- package/dist/engine-reinforce.d.ts +18 -0
- package/dist/engine-reinforce.d.ts.map +1 -0
- package/dist/engine-reinforce.js +116 -0
- package/dist/engine-reinforce.js.map +1 -0
- package/dist/engine-scoring-v2.d.ts +35 -0
- package/dist/engine-scoring-v2.d.ts.map +1 -0
- package/dist/engine-scoring-v2.js +178 -0
- package/dist/engine-scoring-v2.js.map +1 -0
- package/dist/engine-v2-mapping.d.ts +17 -0
- package/dist/engine-v2-mapping.d.ts.map +1 -0
- package/dist/engine-v2-mapping.js +190 -0
- package/dist/engine-v2-mapping.js.map +1 -0
- package/dist/engine.d.ts +339 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1964 -0
- package/dist/engine.js.map +1 -0
- package/dist/eviction.d.ts +14 -0
- package/dist/eviction.d.ts.map +1 -0
- package/dist/eviction.js +26 -0
- package/dist/eviction.js.map +1 -0
- package/dist/extraction.d.ts +11 -0
- package/dist/extraction.d.ts.map +1 -0
- package/dist/extraction.js +261 -0
- package/dist/extraction.js.map +1 -0
- package/dist/full-insights-html.d.ts +9 -0
- package/dist/full-insights-html.d.ts.map +1 -0
- package/dist/full-insights-html.js +422 -0
- package/dist/full-insights-html.js.map +1 -0
- package/dist/full-insights-sections.d.ts +48 -0
- package/dist/full-insights-sections.d.ts.map +1 -0
- package/dist/full-insights-sections.js +231 -0
- package/dist/full-insights-sections.js.map +1 -0
- package/dist/full-insights.d.ts +22 -0
- package/dist/full-insights.d.ts.map +1 -0
- package/dist/full-insights.js +370 -0
- package/dist/full-insights.js.map +1 -0
- package/dist/hash-embedding.d.ts +9 -0
- package/dist/hash-embedding.d.ts.map +1 -0
- package/dist/hash-embedding.js +44 -0
- package/dist/hash-embedding.js.map +1 -0
- package/dist/human-insights.d.ts +28 -0
- package/dist/human-insights.d.ts.map +1 -0
- package/dist/human-insights.js +260 -0
- package/dist/human-insights.js.map +1 -0
- package/dist/i18n.d.ts +64 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +367 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/insights-html.d.ts +9 -0
- package/dist/insights-html.d.ts.map +1 -0
- package/dist/insights-html.js +432 -0
- package/dist/insights-html.js.map +1 -0
- package/dist/linking.d.ts +22 -0
- package/dist/linking.d.ts.map +1 -0
- package/dist/linking.js +192 -0
- package/dist/linking.js.map +1 -0
- package/dist/llm-json.d.ts +10 -0
- package/dist/llm-json.d.ts.map +1 -0
- package/dist/llm-json.js +193 -0
- package/dist/llm-json.js.map +1 -0
- package/dist/privacy.d.ts +17 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +53 -0
- package/dist/privacy.js.map +1 -0
- package/dist/procedural-v2.d.ts +9 -0
- package/dist/procedural-v2.d.ts.map +1 -0
- package/dist/procedural-v2.js +123 -0
- package/dist/procedural-v2.js.map +1 -0
- package/dist/reconsolidate-v2.d.ts +19 -0
- package/dist/reconsolidate-v2.d.ts.map +1 -0
- package/dist/reconsolidate-v2.js +115 -0
- package/dist/reconsolidate-v2.js.map +1 -0
- package/dist/scoring.d.ts +32 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +108 -0
- package/dist/scoring.js.map +1 -0
- package/dist/store-v2.d.ts +35 -0
- package/dist/store-v2.d.ts.map +1 -0
- package/dist/store-v2.js +98 -0
- package/dist/store-v2.js.map +1 -0
- package/dist/store.d.ts +22 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +116 -0
- package/dist/store.js.map +1 -0
- package/dist/turn-context.d.ts +37 -0
- package/dist/turn-context.d.ts.map +1 -0
- package/dist/turn-context.js +31 -0
- package/dist/turn-context.js.map +1 -0
- package/dist/types-v2.d.ts +190 -0
- package/dist/types-v2.d.ts.map +1 -0
- package/dist/types-v2.js +8 -0
- package/dist/types-v2.js.map +1 -0
- package/dist/types.d.ts +330 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/update.d.ts +31 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +250 -0
- package/dist/update.js.map +1 -0
- package/package.json +34 -0
- package/src/browser-fs.ts +67 -0
- package/src/config.ts +138 -0
- package/src/consolidate-v2.ts +158 -0
- package/src/consolidation.ts +229 -0
- package/src/dedup.ts +91 -0
- package/src/diagnostics.ts +81 -0
- package/src/embedding-index.ts +138 -0
- package/src/engine-archive.ts +167 -0
- package/src/engine-episode-sync.ts +237 -0
- package/src/engine-injection-text.ts +334 -0
- package/src/engine-insights.ts +182 -0
- package/src/engine-links.ts +311 -0
- package/src/engine-recall-select.ts +298 -0
- package/src/engine-reinforce.ts +154 -0
- package/src/engine-scoring-v2.ts +188 -0
- package/src/engine-v2-mapping.ts +204 -0
- package/src/engine.ts +2499 -0
- package/src/eviction.ts +38 -0
- package/src/extraction.ts +300 -0
- package/src/full-insights-html.ts +474 -0
- package/src/full-insights-sections.ts +305 -0
- package/src/full-insights.ts +423 -0
- package/src/hash-embedding.ts +48 -0
- package/src/human-insights.ts +345 -0
- package/src/i18n.ts +455 -0
- package/src/index.ts +117 -0
- package/src/insights-html.ts +478 -0
- package/src/linking.ts +228 -0
- package/src/llm-json.ts +194 -0
- package/src/privacy.ts +54 -0
- package/src/procedural-v2.ts +142 -0
- package/src/reconsolidate-v2.ts +145 -0
- package/src/scoring.ts +156 -0
- package/src/store-v2.ts +138 -0
- package/src/store.ts +137 -0
- package/src/turn-context.ts +56 -0
- package/src/types-v2.ts +244 -0
- package/src/types.ts +372 -0
- package/src/update.ts +271 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides AUTO_V2_LINK_PREFIX, buildProceduralChains, materializeV2Links, detectProceduralConflicts, detectSemanticConflicts, detectAlignmentConflicts, suggestConflictAction, explainConflictAction
|
|
3
|
+
* [FROM]: Depends on ./scoring.js for daysSince, extractTags, tagOverlap; ./types.js, ./types-v2.js
|
|
4
|
+
* [TO]: Consumed by engine.ts (rebuildV2Links, inspectV2Memory, getAlignmentSnapshot)
|
|
5
|
+
* [HERE]: packages/mem-core/src/engine-links.ts - V2 link materialization, conflict detection, procedural chain building
|
|
6
|
+
*/
|
|
7
|
+
import { daysSince, extractTags, tagOverlap } from "./scoring.js";
|
|
8
|
+
export const AUTO_V2_LINK_PREFIX = "auto:v2:";
|
|
9
|
+
// ── Procedural chains ──────────────────────────────────────
|
|
10
|
+
export function buildProceduralChains(entries) {
|
|
11
|
+
const byId = new Map(entries.map((entry) => [entry.id, entry]));
|
|
12
|
+
const roots = entries.filter((entry) => !entry.supersededById || !byId.has(entry.supersededById));
|
|
13
|
+
return roots
|
|
14
|
+
.map((root) => {
|
|
15
|
+
const ids = new Set();
|
|
16
|
+
const stack = [root.id];
|
|
17
|
+
while (stack.length) {
|
|
18
|
+
const currentId = stack.pop();
|
|
19
|
+
if (!currentId || ids.has(currentId))
|
|
20
|
+
continue;
|
|
21
|
+
ids.add(currentId);
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (entry.supersededById === currentId)
|
|
24
|
+
stack.push(entry.id);
|
|
25
|
+
if (entry.supersedesIds?.includes(currentId))
|
|
26
|
+
stack.push(entry.id);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const chainEntries = [...ids].map((id) => byId.get(id)).filter((entry) => Boolean(entry));
|
|
30
|
+
return {
|
|
31
|
+
rootId: root.id,
|
|
32
|
+
name: root.name,
|
|
33
|
+
status: root.status,
|
|
34
|
+
versionDepth: chainEntries.length,
|
|
35
|
+
ids: chainEntries
|
|
36
|
+
.sort((a, b) => {
|
|
37
|
+
const aVersion = a.version ?? 0;
|
|
38
|
+
const bVersion = b.version ?? 0;
|
|
39
|
+
if (aVersion !== bVersion)
|
|
40
|
+
return bVersion - aVersion;
|
|
41
|
+
return a.updatedAt.localeCompare(b.updatedAt);
|
|
42
|
+
})
|
|
43
|
+
.map((entry) => entry.id),
|
|
44
|
+
};
|
|
45
|
+
})
|
|
46
|
+
.filter((chain) => chain.versionDepth > 1)
|
|
47
|
+
.sort((a, b) => b.versionDepth - a.versionDepth || a.name.localeCompare(b.name));
|
|
48
|
+
}
|
|
49
|
+
// ── V2 link materialization ────────────────────────────────
|
|
50
|
+
export function materializeV2Links(semantic, procedural, existingLinks, autoLinkPrefix, now = new Date().toISOString()) {
|
|
51
|
+
const manualLinks = existingLinks.filter((link) => !link.id.startsWith(autoLinkPrefix));
|
|
52
|
+
const autoLinks = new Map();
|
|
53
|
+
const proceduralConflicts = detectProceduralConflicts(procedural.filter((entry) => entry.status !== "deprecated" && entry.status !== "superseded"));
|
|
54
|
+
const semanticConflicts = detectSemanticConflicts(semantic);
|
|
55
|
+
const addAutoLink = (fromId, toId, type, weight, evidence = []) => {
|
|
56
|
+
if (!fromId || !toId || fromId === toId)
|
|
57
|
+
return;
|
|
58
|
+
const directional = type === "supersedes";
|
|
59
|
+
const [normalizedFrom, normalizedTo] = directional || fromId < toId ? [fromId, toId] : [toId, fromId];
|
|
60
|
+
const id = `${autoLinkPrefix}${type}:${normalizedFrom}->${normalizedTo}`;
|
|
61
|
+
autoLinks.set(id, {
|
|
62
|
+
id,
|
|
63
|
+
fromId: normalizedFrom,
|
|
64
|
+
toId: normalizedTo,
|
|
65
|
+
type,
|
|
66
|
+
weight,
|
|
67
|
+
explicit: false,
|
|
68
|
+
createdAt: autoLinks.get(id)?.createdAt ?? now,
|
|
69
|
+
updatedAt: now,
|
|
70
|
+
evidence,
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
for (const entry of semantic) {
|
|
74
|
+
for (const supersededId of entry.supersedesIds ?? []) {
|
|
75
|
+
addAutoLink(entry.id, supersededId, "supersedes", 0.92);
|
|
76
|
+
}
|
|
77
|
+
if (entry.supersededById) {
|
|
78
|
+
addAutoLink(entry.supersededById, entry.id, "supersedes", 0.92);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const entry of procedural) {
|
|
82
|
+
for (const supersededId of entry.supersedesIds ?? []) {
|
|
83
|
+
addAutoLink(entry.id, supersededId, "supersedes", 0.94);
|
|
84
|
+
}
|
|
85
|
+
if (entry.supersededById) {
|
|
86
|
+
addAutoLink(entry.supersededById, entry.id, "supersedes", 0.94);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const conflict of semanticConflicts) {
|
|
90
|
+
addAutoLink(conflict.aId, conflict.bId, "conflicts-with", 0.88);
|
|
91
|
+
}
|
|
92
|
+
for (const conflict of proceduralConflicts) {
|
|
93
|
+
addAutoLink(conflict.aId, conflict.bId, "conflicts-with", Math.max(0.72, conflict.score));
|
|
94
|
+
}
|
|
95
|
+
return [...manualLinks, ...autoLinks.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
96
|
+
}
|
|
97
|
+
// ── Conflict detection ─────────────────────────────────────
|
|
98
|
+
export function detectProceduralConflicts(entries) {
|
|
99
|
+
const conflicts = [];
|
|
100
|
+
for (let i = 0; i < entries.length; i++) {
|
|
101
|
+
for (let j = i + 1; j < entries.length; j++) {
|
|
102
|
+
const a = entries[i];
|
|
103
|
+
const b = entries[j];
|
|
104
|
+
if (!a || !b || a.id === b.id)
|
|
105
|
+
continue;
|
|
106
|
+
const tagScore = tagOverlap(a.tags ?? [], b.tags ?? []);
|
|
107
|
+
const lexicalScore = tagOverlap(extractTags(`${a.name} ${a.searchText} ${a.summary}`), extractTags(`${b.name} ${b.searchText} ${b.summary}`));
|
|
108
|
+
const similarity = Math.max(tagScore, lexicalScore);
|
|
109
|
+
const sameIntent = a.searchText.trim().toLowerCase() === b.searchText.trim().toLowerCase() ||
|
|
110
|
+
a.name.trim().toLowerCase() === b.name.trim().toLowerCase();
|
|
111
|
+
const boundariesDiffer = (a.boundaries ?? "").trim().toLowerCase() !== (b.boundaries ?? "").trim().toLowerCase() ||
|
|
112
|
+
(a.contextText ?? "").trim().toLowerCase() !== (b.contextText ?? "").trim().toLowerCase();
|
|
113
|
+
if ((similarity >= 0.72 || sameIntent) && boundariesDiffer) {
|
|
114
|
+
conflicts.push({
|
|
115
|
+
aId: a.id,
|
|
116
|
+
bId: b.id,
|
|
117
|
+
aName: a.name,
|
|
118
|
+
bName: b.name,
|
|
119
|
+
score: Number(similarity.toFixed(3)),
|
|
120
|
+
reason: "High-overlap active procedures differ in boundaries or context.",
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return conflicts.sort((a, b) => b.score - a.score || a.aName.localeCompare(b.aName));
|
|
126
|
+
}
|
|
127
|
+
export function detectSemanticConflicts(entries) {
|
|
128
|
+
const byId = new Map(entries.map((entry) => [entry.id, entry]));
|
|
129
|
+
const seen = new Set();
|
|
130
|
+
const conflicts = [];
|
|
131
|
+
for (const entry of entries) {
|
|
132
|
+
for (const conflictId of entry.conflictWithIds ?? []) {
|
|
133
|
+
const other = byId.get(conflictId);
|
|
134
|
+
if (!other)
|
|
135
|
+
continue;
|
|
136
|
+
const pairKey = [entry.id, other.id].sort().join("::");
|
|
137
|
+
if (seen.has(pairKey))
|
|
138
|
+
continue;
|
|
139
|
+
seen.add(pairKey);
|
|
140
|
+
conflicts.push({
|
|
141
|
+
aId: entry.id,
|
|
142
|
+
bId: other.id,
|
|
143
|
+
aName: entry.name,
|
|
144
|
+
bName: other.name,
|
|
145
|
+
reason: "Explicit semantic conflict link.",
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return conflicts.sort((a, b) => a.aName.localeCompare(b.aName) || a.bName.localeCompare(b.bName));
|
|
150
|
+
}
|
|
151
|
+
// ── Alignment conflict detection ───────────────────────────
|
|
152
|
+
export function detectAlignmentConflicts(entries) {
|
|
153
|
+
const candidates = entries.filter((entry) => entry.stability !== "situational" &&
|
|
154
|
+
(entry.retention === "core" || entry.retention === "key-event") &&
|
|
155
|
+
!!(entry.summary || entry.detail || entry.name));
|
|
156
|
+
const conflicts = [];
|
|
157
|
+
const seen = new Set();
|
|
158
|
+
const positiveMarkers = ["prefer", "always", "use", "enable", "include", "like", "keep", "should"];
|
|
159
|
+
const negativeMarkers = ["avoid", "never", "disable", "remove", "dislike", "hate", "stop", "do not", "don't"];
|
|
160
|
+
const getText = (entry) => `${entry.name || ""} ${entry.summary || ""} ${entry.detail || ""}`.toLowerCase();
|
|
161
|
+
const polarity = (text) => {
|
|
162
|
+
const hasPositive = positiveMarkers.some((marker) => text.includes(marker));
|
|
163
|
+
const hasNegative = negativeMarkers.some((marker) => text.includes(marker));
|
|
164
|
+
if (hasPositive && !hasNegative)
|
|
165
|
+
return "positive";
|
|
166
|
+
if (hasNegative && !hasPositive)
|
|
167
|
+
return "negative";
|
|
168
|
+
return "neutral";
|
|
169
|
+
};
|
|
170
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
171
|
+
for (let j = i + 1; j < candidates.length; j++) {
|
|
172
|
+
const a = candidates[i];
|
|
173
|
+
const b = candidates[j];
|
|
174
|
+
if (a.id === b.id)
|
|
175
|
+
continue;
|
|
176
|
+
const overlap = tagOverlap(a.tags, b.tags);
|
|
177
|
+
if (overlap < 0.45)
|
|
178
|
+
continue;
|
|
179
|
+
const aPolarity = polarity(getText(a));
|
|
180
|
+
const bPolarity = polarity(getText(b));
|
|
181
|
+
if (aPolarity === "neutral" || bPolarity === "neutral" || aPolarity === bPolarity)
|
|
182
|
+
continue;
|
|
183
|
+
const pairKey = [a.id, b.id].sort().join(":");
|
|
184
|
+
if (seen.has(pairKey))
|
|
185
|
+
continue;
|
|
186
|
+
seen.add(pairKey);
|
|
187
|
+
const severity = Math.min(1, overlap * 0.6 + ((a.salience ?? a.importance) + (b.salience ?? b.importance)) / 20 * 0.4);
|
|
188
|
+
const reason = `Potential conflict on shared context: ${aPolarity} vs ${bPolarity}`;
|
|
189
|
+
const recommendation = suggestConflictAction(a, b, severity);
|
|
190
|
+
const rationale = explainConflictAction(a, b, recommendation);
|
|
191
|
+
conflicts.push({ aId: a.id, bId: b.id, reason, severity, recommendation, rationale });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return conflicts.sort((a, b) => b.severity - a.severity);
|
|
195
|
+
}
|
|
196
|
+
export function suggestConflictAction(a, b, severity) {
|
|
197
|
+
const aStable = a.stability !== "situational";
|
|
198
|
+
const bStable = b.stability !== "situational";
|
|
199
|
+
const aRecent = daysSince(a.created) <= 14;
|
|
200
|
+
const bRecent = daysSince(b.created) <= 14;
|
|
201
|
+
const aLowSignal = (a.salience ?? a.importance) <= 4;
|
|
202
|
+
const bLowSignal = (b.salience ?? b.importance) <= 4;
|
|
203
|
+
if (aStable !== bStable)
|
|
204
|
+
return "mark-situational";
|
|
205
|
+
if (severity >= 0.8 && (aLowSignal || bLowSignal))
|
|
206
|
+
return "forget";
|
|
207
|
+
if (severity >= 0.65 && (aRecent || bRecent))
|
|
208
|
+
return "demote";
|
|
209
|
+
return "merge";
|
|
210
|
+
}
|
|
211
|
+
export function explainConflictAction(a, b, action) {
|
|
212
|
+
switch (action) {
|
|
213
|
+
case "mark-situational":
|
|
214
|
+
return "One side looks more temporary than the other, so this conflict likely comes from short-term context rather than true identity drift.";
|
|
215
|
+
case "forget":
|
|
216
|
+
return "One side has weak signal compared with the conflict risk, so forgetting the weaker memory is safer than keeping both.";
|
|
217
|
+
case "demote":
|
|
218
|
+
return "At least one side is recent enough that it may be an overfit; demoting it reduces the chance of personality drift.";
|
|
219
|
+
default:
|
|
220
|
+
return "Both memories may describe the same preference from different angles, so a merged memory is likely safer than keeping them separate.";
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=engine-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-links.js","sourceRoot":"","sources":["../src/engine-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides selectRecallEntries — budget/tier/pick logic for progressive recall
|
|
3
|
+
* [FROM]: Depends on ./scoring.js for pickTop, scoreEntry, scoreEpisode, scoreWorkEntry, tierEntries; ./linking.js for getGraphNeighborhoodBySeeds; ./engine-scoring-v2.js for V2 scoring; ./engine-injection-text.js for conversation prefs
|
|
4
|
+
* [TO]: Consumed by engine.ts (getMemoryInjection)
|
|
5
|
+
* [HERE]: packages/mem-core/src/engine-recall-select.ts - recall entry selection and budget allocation
|
|
6
|
+
*/
|
|
7
|
+
import { type GraphNeighbor } from "./linking.js";
|
|
8
|
+
import type { ProgressiveRecallConfig } from "./config.js";
|
|
9
|
+
import type { MemoryEntry, WorkEntry, Episode } from "./types.js";
|
|
10
|
+
import type { EpisodeFacet, EpisodeMemory, ProceduralMemory, SemanticMemory } from "./types-v2.js";
|
|
11
|
+
export interface RecallSelectionResult {
|
|
12
|
+
active: {
|
|
13
|
+
knowledge: MemoryEntry[];
|
|
14
|
+
lessons: MemoryEntry[];
|
|
15
|
+
events: MemoryEntry[];
|
|
16
|
+
preferences: MemoryEntry[];
|
|
17
|
+
facets: MemoryEntry[];
|
|
18
|
+
episodeMemories: EpisodeMemory[];
|
|
19
|
+
episodeFacets: EpisodeFacet[];
|
|
20
|
+
semanticMemories: SemanticMemory[];
|
|
21
|
+
procedural: ProceduralMemory[];
|
|
22
|
+
};
|
|
23
|
+
cue: {
|
|
24
|
+
knowledge: MemoryEntry[];
|
|
25
|
+
lessons: MemoryEntry[];
|
|
26
|
+
events: MemoryEntry[];
|
|
27
|
+
preferences: MemoryEntry[];
|
|
28
|
+
facets: MemoryEntry[];
|
|
29
|
+
episodes: Episode[];
|
|
30
|
+
work: WorkEntry[];
|
|
31
|
+
episodeMemories: EpisodeMemory[];
|
|
32
|
+
episodeFacets: EpisodeFacet[];
|
|
33
|
+
semanticMemories: SemanticMemory[];
|
|
34
|
+
procedural: ProceduralMemory[];
|
|
35
|
+
};
|
|
36
|
+
allEntries: MemoryEntry[];
|
|
37
|
+
graphContext: GraphNeighbor[];
|
|
38
|
+
injectedActiveKnowledge: MemoryEntry[];
|
|
39
|
+
injectedActiveLessons: MemoryEntry[];
|
|
40
|
+
injectedActiveEvents: MemoryEntry[];
|
|
41
|
+
injectedActivePrefs: MemoryEntry[];
|
|
42
|
+
injectedCueKnowledge: MemoryEntry[];
|
|
43
|
+
injectedCueLessons: MemoryEntry[];
|
|
44
|
+
injectedCueEvents: MemoryEntry[];
|
|
45
|
+
injectedCuePrefs: MemoryEntry[];
|
|
46
|
+
injectedCueEpisodes: Episode[];
|
|
47
|
+
legacyFacetBridgeActive: MemoryEntry[];
|
|
48
|
+
legacyFacetBridgeCue: MemoryEntry[];
|
|
49
|
+
}
|
|
50
|
+
export declare function selectRecallEntries(params: {
|
|
51
|
+
knowledge: MemoryEntry[];
|
|
52
|
+
lessons: MemoryEntry[];
|
|
53
|
+
events: MemoryEntry[];
|
|
54
|
+
prefs: MemoryEntry[];
|
|
55
|
+
facets: MemoryEntry[];
|
|
56
|
+
work: WorkEntry[];
|
|
57
|
+
episodes: Episode[];
|
|
58
|
+
v2Episodes: EpisodeMemory[];
|
|
59
|
+
v2EpisodeFacets: EpisodeFacet[];
|
|
60
|
+
v2Semantic: SemanticMemory[];
|
|
61
|
+
procedural: ProceduralMemory[];
|
|
62
|
+
allKnowledge: MemoryEntry[];
|
|
63
|
+
allLessons: MemoryEntry[];
|
|
64
|
+
allEvents: MemoryEntry[];
|
|
65
|
+
allPrefs: MemoryEntry[];
|
|
66
|
+
allFacets: MemoryEntry[];
|
|
67
|
+
semanticCandidates: Array<{
|
|
68
|
+
memoryId: string;
|
|
69
|
+
memoryKind: string;
|
|
70
|
+
score: number;
|
|
71
|
+
}>;
|
|
72
|
+
halfLife: Record<string, number>;
|
|
73
|
+
scoreWeights: {
|
|
74
|
+
recency: number;
|
|
75
|
+
importance: number;
|
|
76
|
+
relevance: number;
|
|
77
|
+
};
|
|
78
|
+
progressiveRecall: ProgressiveRecallConfig;
|
|
79
|
+
tokenBudget: number;
|
|
80
|
+
structuralWeight: number;
|
|
81
|
+
project: string;
|
|
82
|
+
contextTags: string[];
|
|
83
|
+
}): RecallSelectionResult;
|
|
84
|
+
//# sourceMappingURL=engine-recall-select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-recall-select.d.ts","sourceRoot":"","sources":["../src/engine-recall-select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides selectRecallEntries — budget/tier/pick logic for progressive recall
|
|
3
|
+
* [FROM]: Depends on ./scoring.js for pickTop, scoreEntry, scoreEpisode, scoreWorkEntry, tierEntries; ./linking.js for getGraphNeighborhoodBySeeds; ./engine-scoring-v2.js for V2 scoring; ./engine-injection-text.js for conversation prefs
|
|
4
|
+
* [TO]: Consumed by engine.ts (getMemoryInjection)
|
|
5
|
+
* [HERE]: packages/mem-core/src/engine-recall-select.ts - recall entry selection and budget allocation
|
|
6
|
+
*/
|
|
7
|
+
import { selectConversationPreferences, mergeUniqueEntries } from "./engine-injection-text.js";
|
|
8
|
+
import { scoreEpisodeMemory, scoreEpisodeFacet, scoreV2SemanticMemory, scoreProceduralMemory, } from "./engine-scoring-v2.js";
|
|
9
|
+
import { getGraphNeighborhoodBySeeds } from "./linking.js";
|
|
10
|
+
import { pickTop, scoreEntry, scoreEpisode, scoreWorkEntry, tierEntries, } from "./scoring.js";
|
|
11
|
+
export function selectRecallEntries(params) {
|
|
12
|
+
const { knowledge, lessons, events, prefs, facets, work, episodes, v2Episodes, v2EpisodeFacets, v2Semantic, procedural, allKnowledge, allLessons, allEvents, allPrefs, allFacets, semanticCandidates, halfLife: hl, scoreWeights: sw, progressiveRecall: pr, tokenBudget, structuralWeight, project, contextTags, } = params;
|
|
13
|
+
const semanticEpisodeIds = new Set(semanticCandidates.filter((item) => item.memoryKind === "episode").map((item) => item.memoryId));
|
|
14
|
+
const semanticFacetIds = new Set(semanticCandidates.filter((item) => item.memoryKind === "facet").map((item) => item.memoryId));
|
|
15
|
+
const semanticProcedureIds = new Set(semanticCandidates.filter((item) => item.memoryKind === "procedural").map((item) => item.memoryId));
|
|
16
|
+
const semanticV2SemanticIds = new Set(semanticCandidates.filter((item) => item.memoryKind === "semantic").map((item) => item.memoryId));
|
|
17
|
+
// Tier all MemoryEntry categories
|
|
18
|
+
const tieredKnowledge = tierEntries(knowledge, project, contextTags, hl, sw, pr);
|
|
19
|
+
const tieredLessons = tierEntries(lessons, project, contextTags, hl, sw, pr);
|
|
20
|
+
const tieredEvents = tierEntries(events, project, contextTags, hl, sw, pr);
|
|
21
|
+
const tieredPrefs = tierEntries(prefs, project, contextTags, hl, sw, pr);
|
|
22
|
+
const tieredFacets = tierEntries(facets, project, contextTags, hl, sw, pr);
|
|
23
|
+
const forcedConversationPrefs = selectConversationPreferences(prefs);
|
|
24
|
+
// Budget calculation
|
|
25
|
+
const totalChars = tokenBudget * 4;
|
|
26
|
+
const activeChars = Math.floor(totalChars * pr.budgetActive);
|
|
27
|
+
const cueChars = Math.floor(totalChars * pr.budgetCue);
|
|
28
|
+
const proceduralChars = Math.floor(totalChars * 0.18);
|
|
29
|
+
// Entry length helpers
|
|
30
|
+
const activeLen = (e) => (e.name?.length || 0) + (e.summary?.length || 0) + (e.detail?.length || 0) + 30;
|
|
31
|
+
const cueLen = (e) => (e.name?.length || 0) + (e.summary?.length || 0) + 30;
|
|
32
|
+
const scoreFn = (e) => scoreEntry(e, project, contextTags, hl, sw);
|
|
33
|
+
const proceduralLen = (pItem) => (pItem.name?.length || 0) + (pItem.summary?.length || 0) + pItem.steps.reduce((sum, step) => sum + step.text.length, 0) + 60;
|
|
34
|
+
const proceduralCueLen = (pItem) => (pItem.name?.length || 0) + (pItem.summary?.length || 0) + 40;
|
|
35
|
+
const proceduralScoreFn = (pItem) => scoreProceduralMemory(pItem, project, contextTags, structuralWeight);
|
|
36
|
+
const episodeMemoryLen = (item) => (item.title?.length || 0) + item.summary.length + 40;
|
|
37
|
+
const episodeFacetLen = (item) => item.searchText.length + (item.anchorText?.length || 0) + (item.summary?.length || 0) + 40;
|
|
38
|
+
const episodeCueLen = (item) => (item.title?.length || 0) + item.summary.length + 36;
|
|
39
|
+
const episodeFacetCueLen = (item) => item.searchText.length + (item.summary?.length || 0) + (item.anchorText?.length || 0) + 36;
|
|
40
|
+
const semanticMemoryLen = (item) => (item.name?.length || 0) + item.summary.length + (item.detail?.length || 0) + 40;
|
|
41
|
+
const semanticMemoryCueLen = (item) => (item.name?.length || 0) + item.summary.length + 36;
|
|
42
|
+
const episodeScoreFn = (item) => scoreEpisodeMemory(item, project, contextTags, structuralWeight);
|
|
43
|
+
const episodeFacetScoreFn = (item) => scoreEpisodeFacet(item, project, contextTags, structuralWeight);
|
|
44
|
+
const semanticMemoryScoreFn = (item) => scoreV2SemanticMemory(item, project, contextTags, structuralWeight);
|
|
45
|
+
// Active tier
|
|
46
|
+
const activeBudgetPer = Math.floor(activeChars / 5);
|
|
47
|
+
const activeKnowledge = pickTop(tieredKnowledge.active, scoreFn, activeLen, activeBudgetPer);
|
|
48
|
+
const activeLessons = pickTop(tieredLessons.active, scoreFn, activeLen, activeBudgetPer);
|
|
49
|
+
const activeEvents = pickTop(tieredEvents.active, scoreFn, activeLen, activeBudgetPer);
|
|
50
|
+
const activePrefs = mergeUniqueEntries(forcedConversationPrefs, pickTop(tieredPrefs.active, scoreFn, activeLen, activeBudgetPer));
|
|
51
|
+
const activeFacets = pickTop(tieredFacets.active, scoreFn, activeLen, activeBudgetPer);
|
|
52
|
+
const activeProcedural = pickTop(procedural.filter((item) => semanticProcedureIds.has(item.id) || proceduralScoreFn(item) >= 0.45), proceduralScoreFn, proceduralLen, Math.max(400, Math.floor(proceduralChars * 0.55)));
|
|
53
|
+
const activeEpisodeMemories = pickTop(v2Episodes.filter((item) => semanticEpisodeIds.has(item.id) || episodeScoreFn(item) >= 0.45), episodeScoreFn, episodeMemoryLen, Math.max(320, Math.floor(activeChars * 0.18)));
|
|
54
|
+
const activeEpisodeFacets = pickTop(v2EpisodeFacets.filter((item) => semanticFacetIds.has(item.id) || episodeFacetScoreFn(item) >= 0.42), episodeFacetScoreFn, episodeFacetLen, Math.max(320, Math.floor(activeChars * 0.18)));
|
|
55
|
+
const activeSemanticMemories = pickTop(v2Semantic.filter((item) => semanticV2SemanticIds.has(item.id) || semanticMemoryScoreFn(item) >= 0.42), semanticMemoryScoreFn, semanticMemoryLen, Math.max(280, Math.floor(activeChars * 0.16)));
|
|
56
|
+
const activeSeeds = [...activeKnowledge, ...activeLessons, ...activeEvents, ...activePrefs, ...activeFacets];
|
|
57
|
+
const allEntries = [...allKnowledge, ...allLessons, ...allEvents, ...allPrefs, ...allFacets];
|
|
58
|
+
const activeIds = new Set(activeSeeds.map((entry) => entry.id));
|
|
59
|
+
const graphContext = getGraphNeighborhoodBySeeds(activeSeeds, allEntries, 8).filter((neighbor) => !activeIds.has(neighbor.entry.id));
|
|
60
|
+
// Cue tier
|
|
61
|
+
const cueBudgetPer = Math.floor(cueChars / 7);
|
|
62
|
+
const cueKnowledge = pickTop(tieredKnowledge.cue, scoreFn, cueLen, cueBudgetPer);
|
|
63
|
+
const cueLessons = pickTop(tieredLessons.cue, scoreFn, cueLen, cueBudgetPer);
|
|
64
|
+
const cueEvents = pickTop(tieredEvents.cue, scoreFn, cueLen, cueBudgetPer);
|
|
65
|
+
const forcedConversationPrefIds = new Set(forcedConversationPrefs.map((entry) => entry.id));
|
|
66
|
+
const cuePrefs = pickTop(tieredPrefs.cue.filter((entry) => !forcedConversationPrefIds.has(entry.id)), scoreFn, cueLen, cueBudgetPer);
|
|
67
|
+
const cueFacets = pickTop(tieredFacets.cue, scoreFn, cueLen, cueBudgetPer);
|
|
68
|
+
const graphContextIds = new Set(graphContext.map((neighbor) => neighbor.entry.id));
|
|
69
|
+
const dedupeCue = (entries) => entries.filter((entry) => !graphContextIds.has(entry.id));
|
|
70
|
+
const dedupedCueKnowledge = dedupeCue(cueKnowledge);
|
|
71
|
+
const dedupedCueLessons = dedupeCue(cueLessons);
|
|
72
|
+
const dedupedCueEvents = dedupeCue(cueEvents);
|
|
73
|
+
const dedupedCuePrefs = dedupeCue(cuePrefs);
|
|
74
|
+
const dedupedCueFacets = dedupeCue(cueFacets);
|
|
75
|
+
const topEpisodes = pickTop(episodes, (ep) => scoreEpisode(ep, project, contextTags, hl, sw), (ep) => ep.summary.length + 30, cueBudgetPer);
|
|
76
|
+
const topWork = pickTop(work, (w) => scoreWorkEntry(w, project, contextTags, hl, sw), (w) => w.goal.length + w.summary.length + 30, cueBudgetPer);
|
|
77
|
+
const cueProcedural = pickTop(procedural.filter((item) => !activeProcedural.some((activeItem) => activeItem.id === item.id)), proceduralScoreFn, proceduralCueLen, Math.max(280, Math.floor(proceduralChars * 0.45)));
|
|
78
|
+
const cueEpisodeMemories = pickTop(v2Episodes.filter((item) => !activeEpisodeMemories.some((activeItem) => activeItem.id === item.id)), episodeScoreFn, episodeCueLen, Math.max(220, Math.floor(cueChars * 0.12)));
|
|
79
|
+
const cueEpisodeFacets = pickTop(v2EpisodeFacets.filter((item) => !activeEpisodeFacets.some((activeItem) => activeItem.id === item.id)), episodeFacetScoreFn, episodeFacetCueLen, Math.max(220, Math.floor(cueChars * 0.12)));
|
|
80
|
+
const cueSemanticMemories = pickTop(v2Semantic.filter((item) => !activeSemanticMemories.some((activeItem) => activeItem.id === item.id)), semanticMemoryScoreFn, semanticMemoryCueLen, Math.max(220, Math.floor(cueChars * 0.12)));
|
|
81
|
+
const legacyFacetBridgeActive = activeFacets.filter((entry) => entry.facetData?.kind === "pattern" || entry.facetData?.kind === "struggle");
|
|
82
|
+
const legacyFacetBridgeCue = dedupedCueFacets.filter((entry) => entry.facetData?.kind === "pattern" || entry.facetData?.kind === "struggle");
|
|
83
|
+
const v2SignalCount = activeEpisodeMemories.length + activeEpisodeFacets.length + activeSemanticMemories.length + activeProcedural.length +
|
|
84
|
+
cueEpisodeMemories.length + cueEpisodeFacets.length + cueSemanticMemories.length + cueProcedural.length;
|
|
85
|
+
const useLegacyFallback = v2SignalCount === 0;
|
|
86
|
+
const injectedActiveKnowledge = useLegacyFallback ? activeKnowledge : [];
|
|
87
|
+
const injectedActiveLessons = useLegacyFallback ? activeLessons : [];
|
|
88
|
+
const injectedActiveEvents = useLegacyFallback ? activeEvents : [];
|
|
89
|
+
const injectedActivePrefs = useLegacyFallback ? activePrefs : [];
|
|
90
|
+
const injectedCueKnowledge = useLegacyFallback ? dedupedCueKnowledge : [];
|
|
91
|
+
const injectedCueLessons = useLegacyFallback ? dedupedCueLessons : [];
|
|
92
|
+
const injectedCueEvents = useLegacyFallback ? dedupedCueEvents : [];
|
|
93
|
+
const injectedCuePrefs = useLegacyFallback ? dedupedCuePrefs : [];
|
|
94
|
+
const injectedCueEpisodes = useLegacyFallback ? topEpisodes : [];
|
|
95
|
+
return {
|
|
96
|
+
active: {
|
|
97
|
+
knowledge: injectedActiveKnowledge,
|
|
98
|
+
lessons: injectedActiveLessons,
|
|
99
|
+
events: injectedActiveEvents,
|
|
100
|
+
preferences: injectedActivePrefs,
|
|
101
|
+
facets: legacyFacetBridgeActive,
|
|
102
|
+
episodeMemories: activeEpisodeMemories,
|
|
103
|
+
episodeFacets: activeEpisodeFacets,
|
|
104
|
+
semanticMemories: activeSemanticMemories,
|
|
105
|
+
procedural: activeProcedural,
|
|
106
|
+
},
|
|
107
|
+
cue: {
|
|
108
|
+
knowledge: injectedCueKnowledge,
|
|
109
|
+
lessons: injectedCueLessons,
|
|
110
|
+
events: injectedCueEvents,
|
|
111
|
+
preferences: injectedCuePrefs,
|
|
112
|
+
facets: legacyFacetBridgeCue,
|
|
113
|
+
episodes: injectedCueEpisodes,
|
|
114
|
+
work: topWork,
|
|
115
|
+
episodeMemories: cueEpisodeMemories,
|
|
116
|
+
episodeFacets: cueEpisodeFacets,
|
|
117
|
+
semanticMemories: cueSemanticMemories,
|
|
118
|
+
procedural: cueProcedural,
|
|
119
|
+
},
|
|
120
|
+
allEntries,
|
|
121
|
+
graphContext,
|
|
122
|
+
injectedActiveKnowledge, injectedActiveLessons, injectedActiveEvents, injectedActivePrefs,
|
|
123
|
+
injectedCueKnowledge, injectedCueLessons, injectedCueEvents, injectedCuePrefs, injectedCueEpisodes,
|
|
124
|
+
legacyFacetBridgeActive, legacyFacetBridgeCue,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=engine-recall-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-recall-select.js","sourceRoot":"","sources":["../src/engine-recall-select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides reinforceProcedural, reinforceEpisodeMemories, reinforceEpisodeFacets, reinforceV2SemanticMemories, reinforceWork, reconsolidateV2AfterRecall, reconsolidateIfNeeded
|
|
3
|
+
* [FROM]: Depends on ./store.js, ./store-v2.js, ./eviction.js, ./linking.js, ./scoring.js, ./reconsolidate-v2.js, ./i18n.js, ./types.js, ./types-v2.js
|
|
4
|
+
* [TO]: Consumed by engine.ts (getMemoryInjection)
|
|
5
|
+
* [HERE]: packages/mem-core/src/engine-reinforce.ts - memory reinforcement and reconsolidation after recall
|
|
6
|
+
*/
|
|
7
|
+
import { type NanoMemV2Paths } from "./store-v2.js";
|
|
8
|
+
import type { LlmFn, MemoryEntry, WorkEntry } from "./types.js";
|
|
9
|
+
import type { EpisodeFacet, EpisodeMemory, ProceduralMemory, SemanticMemory } from "./types-v2.js";
|
|
10
|
+
import type { NanomemConfig } from "./config.js";
|
|
11
|
+
export declare function reinforceProcedural(recalled: ProceduralMemory[], all: ProceduralMemory[], v2Paths: NanoMemV2Paths): Promise<void>;
|
|
12
|
+
export declare function reinforceEpisodeMemories(recalled: EpisodeMemory[], all: EpisodeMemory[], v2Paths: NanoMemV2Paths): Promise<void>;
|
|
13
|
+
export declare function reinforceEpisodeFacets(recalled: EpisodeFacet[], all: EpisodeFacet[], v2Paths: NanoMemV2Paths): Promise<void>;
|
|
14
|
+
export declare function reinforceV2SemanticMemories(recalled: SemanticMemory[], all: SemanticMemory[], v2Paths: NanoMemV2Paths): Promise<void>;
|
|
15
|
+
export declare function reinforceWork(recalled: WorkEntry[], all: WorkEntry[], workPath: string, cfg: NanomemConfig): Promise<void>;
|
|
16
|
+
export declare function reconsolidateV2AfterRecall(episodes: EpisodeMemory[], facets: EpisodeFacet[], procedural: ProceduralMemory[], recalledEpisodes: EpisodeMemory[], recalledFacets: EpisodeFacet[], recalledProcedural: ProceduralMemory[], v2Paths: NanoMemV2Paths, rebuildLinksFn: () => Promise<void>): Promise<void>;
|
|
17
|
+
export declare function reconsolidateIfNeeded(recalled: MemoryEntry[], contextTags: string[], locale: string, llmFn: LlmFn): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=engine-reinforce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-reinforce.d.ts","sourceRoot":"","sources":["../src/engine-reinforce.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAON,KAAK,cAAc,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvI;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtI;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlI;AAED,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3I;AAED,wBAAsB,aAAa,CAClC,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EACvC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAClC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,0BAA0B,CAC/C,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,gBAAgB,EAAE,aAAa,EAAE,EACjC,cAAc,EAAE,YAAY,EAAE,EAC9B,kBAAkB,EAAE,gBAAgB,EAAE,EACtC,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACV,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides reinforceProcedural, reinforceEpisodeMemories, reinforceEpisodeFacets, reinforceV2SemanticMemories, reinforceWork, reconsolidateV2AfterRecall, reconsolidateIfNeeded
|
|
3
|
+
* [FROM]: Depends on ./store.js, ./store-v2.js, ./eviction.js, ./linking.js, ./scoring.js, ./reconsolidate-v2.js, ./i18n.js, ./types.js, ./types-v2.js
|
|
4
|
+
* [TO]: Consumed by engine.ts (getMemoryInjection)
|
|
5
|
+
* [HERE]: packages/mem-core/src/engine-reinforce.ts - memory reinforcement and reconsolidation after recall
|
|
6
|
+
*/
|
|
7
|
+
import { PROMPTS } from "./i18n.js";
|
|
8
|
+
import { reconsolidateV2Memories } from "./reconsolidate-v2.js";
|
|
9
|
+
import { extractTags, tagOverlap } from "./scoring.js";
|
|
10
|
+
import { saveWork } from "./store.js";
|
|
11
|
+
import { loadV2Meta, saveV2Episodes, saveV2Facets, saveV2Meta, saveV2Procedural, saveV2Semantic, } from "./store-v2.js";
|
|
12
|
+
import { utilityWork } from "./eviction.js";
|
|
13
|
+
export async function reinforceProcedural(recalled, all, v2Paths) {
|
|
14
|
+
if (!recalled.length)
|
|
15
|
+
return;
|
|
16
|
+
const ids = new Set(recalled.map((entry) => entry.id));
|
|
17
|
+
const now = new Date().toISOString();
|
|
18
|
+
for (const entry of all) {
|
|
19
|
+
if (!ids.has(entry.id))
|
|
20
|
+
continue;
|
|
21
|
+
entry.accessCount = (entry.accessCount ?? 0) + 1;
|
|
22
|
+
entry.lastAccessedAt = now;
|
|
23
|
+
entry.updatedAt = entry.updatedAt || now;
|
|
24
|
+
}
|
|
25
|
+
await saveV2Procedural(v2Paths, all);
|
|
26
|
+
}
|
|
27
|
+
export async function reinforceEpisodeMemories(recalled, all, v2Paths) {
|
|
28
|
+
if (!recalled.length)
|
|
29
|
+
return;
|
|
30
|
+
const ids = new Set(recalled.map((entry) => entry.id));
|
|
31
|
+
const now = new Date().toISOString();
|
|
32
|
+
for (const entry of all) {
|
|
33
|
+
if (!ids.has(entry.id))
|
|
34
|
+
continue;
|
|
35
|
+
entry.accessCount = (entry.accessCount ?? 0) + 1;
|
|
36
|
+
entry.lastAccessedAt = now;
|
|
37
|
+
entry.updatedAt = entry.updatedAt || now;
|
|
38
|
+
}
|
|
39
|
+
await saveV2Episodes(v2Paths, all);
|
|
40
|
+
}
|
|
41
|
+
export async function reinforceEpisodeFacets(recalled, all, v2Paths) {
|
|
42
|
+
if (!recalled.length)
|
|
43
|
+
return;
|
|
44
|
+
const ids = new Set(recalled.map((entry) => entry.id));
|
|
45
|
+
const now = new Date().toISOString();
|
|
46
|
+
for (const entry of all) {
|
|
47
|
+
if (!ids.has(entry.id))
|
|
48
|
+
continue;
|
|
49
|
+
entry.accessCount = (entry.accessCount ?? 0) + 1;
|
|
50
|
+
entry.lastAccessedAt = now;
|
|
51
|
+
entry.updatedAt = entry.updatedAt || now;
|
|
52
|
+
}
|
|
53
|
+
await saveV2Facets(v2Paths, all);
|
|
54
|
+
}
|
|
55
|
+
export async function reinforceV2SemanticMemories(recalled, all, v2Paths) {
|
|
56
|
+
if (!recalled.length)
|
|
57
|
+
return;
|
|
58
|
+
const ids = new Set(recalled.map((entry) => entry.id));
|
|
59
|
+
const now = new Date().toISOString();
|
|
60
|
+
for (const entry of all) {
|
|
61
|
+
if (!ids.has(entry.id))
|
|
62
|
+
continue;
|
|
63
|
+
entry.accessCount = (entry.accessCount ?? 0) + 1;
|
|
64
|
+
entry.lastAccessedAt = now;
|
|
65
|
+
entry.updatedAt = entry.updatedAt || now;
|
|
66
|
+
}
|
|
67
|
+
await saveV2Semantic(v2Paths, all);
|
|
68
|
+
}
|
|
69
|
+
export async function reinforceWork(recalled, all, workPath, cfg) {
|
|
70
|
+
const ids = new Set(recalled.map((w) => w.id));
|
|
71
|
+
const now = new Date().toISOString();
|
|
72
|
+
for (const w of all) {
|
|
73
|
+
if (ids.has(w.id)) {
|
|
74
|
+
w.accessCount = (w.accessCount ?? 0) + 1;
|
|
75
|
+
w.lastAccessed = now;
|
|
76
|
+
w.strength = (w.strength || 45) * cfg.strengthGrowthFactor;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
await saveWork(workPath, all, cfg.maxEntries.work, (w) => utilityWork(w, cfg.halfLife, cfg.evictionWeights));
|
|
80
|
+
}
|
|
81
|
+
export async function reconsolidateV2AfterRecall(episodes, facets, procedural, recalledEpisodes, recalledFacets, recalledProcedural, v2Paths, rebuildLinksFn) {
|
|
82
|
+
const reconsolidated = reconsolidateV2Memories(episodes, facets, procedural, recalledEpisodes.map((entry) => entry.id), recalledFacets.map((entry) => entry.id), recalledProcedural.map((entry) => entry.id));
|
|
83
|
+
await Promise.all([
|
|
84
|
+
saveV2Episodes(v2Paths, reconsolidated.episodes),
|
|
85
|
+
saveV2Facets(v2Paths, reconsolidated.facets),
|
|
86
|
+
saveV2Procedural(v2Paths, reconsolidated.procedural),
|
|
87
|
+
saveV2Meta(v2Paths, {
|
|
88
|
+
...(await loadV2Meta(v2Paths)),
|
|
89
|
+
lastReconsolidationAt: new Date().toISOString(),
|
|
90
|
+
}),
|
|
91
|
+
]);
|
|
92
|
+
await rebuildLinksFn();
|
|
93
|
+
}
|
|
94
|
+
export async function reconsolidateIfNeeded(recalled, contextTags, locale, llmFn) {
|
|
95
|
+
const p = PROMPTS[locale];
|
|
96
|
+
for (const entry of recalled) {
|
|
97
|
+
const overlap = tagOverlap(entry.tags, contextTags);
|
|
98
|
+
if (overlap >= 0.3)
|
|
99
|
+
continue;
|
|
100
|
+
try {
|
|
101
|
+
const memText = entry.detail || entry.summary || entry.content || "";
|
|
102
|
+
const updated = await llmFn(p.reconsolidationSystem, `Original memory: ${memText}\n\nCurrent context tags: ${contextTags.join(", ")}`);
|
|
103
|
+
if (updated && updated.length > 10) {
|
|
104
|
+
const trimmed = updated.trim();
|
|
105
|
+
entry.detail = trimmed;
|
|
106
|
+
entry.content = trimmed;
|
|
107
|
+
entry.summary = trimmed.length <= 150 ? trimmed : `${trimmed.slice(0, 147)}...`;
|
|
108
|
+
entry.tags = extractTags(trimmed);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
/* graceful degradation */
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=engine-reinforce.js.map
|