@aman_asmuei/amem 0.19.0 → 0.21.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.
Files changed (89) hide show
  1. package/README.md +33 -4
  2. package/dist/cli.js +64 -16
  3. package/dist/cli.js.map +1 -1
  4. package/dist/dashboard.d.ts +1 -1
  5. package/dist/dashboard.js +45 -1
  6. package/dist/dashboard.js.map +1 -1
  7. package/dist/hooks.d.ts +33 -0
  8. package/dist/hooks.js +143 -0
  9. package/dist/hooks.js.map +1 -1
  10. package/dist/index.js +3 -7
  11. package/dist/index.js.map +1 -1
  12. package/dist/tools/advanced.d.ts +1 -1
  13. package/dist/tools/advanced.js +1 -5
  14. package/dist/tools/advanced.js.map +1 -1
  15. package/dist/tools/graph.d.ts +1 -1
  16. package/dist/tools/graph.js +1 -2
  17. package/dist/tools/graph.js.map +1 -1
  18. package/dist/tools/index.d.ts +2 -2
  19. package/dist/tools/index.js +2 -2
  20. package/dist/tools/index.js.map +1 -1
  21. package/dist/tools/log.d.ts +1 -1
  22. package/dist/tools/log.js +1 -2
  23. package/dist/tools/log.js.map +1 -1
  24. package/dist/tools/memory.d.ts +1 -2
  25. package/dist/tools/memory.js +16 -22
  26. package/dist/tools/memory.js.map +1 -1
  27. package/dist/tools/reminders.d.ts +1 -1
  28. package/dist/tools/reminders.js +4 -5
  29. package/dist/tools/reminders.js.map +1 -1
  30. package/dist/tools/versions.d.ts +1 -1
  31. package/dist/tools/versions.js +3 -4
  32. package/dist/tools/versions.js.map +1 -1
  33. package/dist/tools.test.js +1 -2
  34. package/dist/tools.test.js.map +1 -1
  35. package/package.json +3 -9
  36. package/dist/ann.d.ts +0 -26
  37. package/dist/ann.js +0 -155
  38. package/dist/ann.js.map +0 -1
  39. package/dist/auto-relate.d.ts +0 -14
  40. package/dist/auto-relate.js +0 -47
  41. package/dist/auto-relate.js.map +0 -1
  42. package/dist/config.d.ts +0 -51
  43. package/dist/config.js +0 -130
  44. package/dist/config.js.map +0 -1
  45. package/dist/database.d.ts +0 -165
  46. package/dist/database.js +0 -831
  47. package/dist/database.js.map +0 -1
  48. package/dist/database.test.d.ts +0 -1
  49. package/dist/database.test.js +0 -275
  50. package/dist/database.test.js.map +0 -1
  51. package/dist/doctor.d.ts +0 -23
  52. package/dist/doctor.js +0 -107
  53. package/dist/doctor.js.map +0 -1
  54. package/dist/embeddings.d.ts +0 -38
  55. package/dist/embeddings.js +0 -251
  56. package/dist/embeddings.js.map +0 -1
  57. package/dist/embeddings.test.d.ts +0 -1
  58. package/dist/embeddings.test.js +0 -106
  59. package/dist/embeddings.test.js.map +0 -1
  60. package/dist/extractor.d.ts +0 -13
  61. package/dist/extractor.js +0 -89
  62. package/dist/extractor.js.map +0 -1
  63. package/dist/memory.d.ts +0 -134
  64. package/dist/memory.js +0 -432
  65. package/dist/memory.js.map +0 -1
  66. package/dist/memory.test.d.ts +0 -1
  67. package/dist/memory.test.js +0 -172
  68. package/dist/memory.test.js.map +0 -1
  69. package/dist/query-expand.d.ts +0 -9
  70. package/dist/query-expand.js +0 -71
  71. package/dist/query-expand.js.map +0 -1
  72. package/dist/reflection.d.ts +0 -82
  73. package/dist/reflection.js +0 -414
  74. package/dist/reflection.js.map +0 -1
  75. package/dist/reflection.test.d.ts +0 -1
  76. package/dist/reflection.test.js +0 -453
  77. package/dist/reflection.test.js.map +0 -1
  78. package/dist/repair.d.ts +0 -8
  79. package/dist/repair.js +0 -90
  80. package/dist/repair.js.map +0 -1
  81. package/dist/schemas.d.ts +0 -1075
  82. package/dist/schemas.js +0 -311
  83. package/dist/schemas.js.map +0 -1
  84. package/dist/sync.d.ts +0 -85
  85. package/dist/sync.js +0 -304
  86. package/dist/sync.js.map +0 -1
  87. package/dist/tools/helpers.d.ts +0 -7
  88. package/dist/tools/helpers.js +0 -23
  89. package/dist/tools/helpers.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../src/memory.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Developer-domain query expansion: synonym mapping + basic stemming.
3
- * Used to improve keyword recall when embeddings are unavailable.
4
- */
5
- /**
6
- * Expand a query string into an array of terms including synonyms and stems.
7
- * Returns a deduplicated array of lowercase terms.
8
- */
9
- export declare function expandQuery(query: string): string[];
@@ -1,71 +0,0 @@
1
- /**
2
- * Developer-domain query expansion: synonym mapping + basic stemming.
3
- * Used to improve keyword recall when embeddings are unavailable.
4
- */
5
- const SYNONYM_MAP = {
6
- auth: ["authentication", "login", "session"],
7
- config: ["configuration", "settings"],
8
- test: ["testing", "spec"],
9
- db: ["database", "sql"],
10
- api: ["endpoint", "route"],
11
- deploy: ["deployment", "release"],
12
- error: ["exception", "bug"],
13
- cache: ["caching"],
14
- env: ["environment"],
15
- perf: ["performance", "optimization"],
16
- style: ["styling", "css"],
17
- };
18
- /**
19
- * Basic suffix stripping for common English suffixes.
20
- * Only applies to words longer than 4 characters.
21
- */
22
- function basicStem(word) {
23
- if (word.length <= 4)
24
- return word;
25
- // Order matters: try longer suffixes first
26
- if (word.endsWith("tion"))
27
- return word.slice(0, -4);
28
- if (word.endsWith("ment"))
29
- return word.slice(0, -4);
30
- if (word.endsWith("ness"))
31
- return word.slice(0, -4);
32
- if (word.endsWith("able"))
33
- return word.slice(0, -4);
34
- if (word.endsWith("ies"))
35
- return word.slice(0, -3) + "y";
36
- if (word.endsWith("ing"))
37
- return word.slice(0, -3);
38
- if (word.endsWith("es"))
39
- return word.slice(0, -2);
40
- if (word.endsWith("s"))
41
- return word.slice(0, -1);
42
- return word;
43
- }
44
- /**
45
- * Expand a query string into an array of terms including synonyms and stems.
46
- * Returns a deduplicated array of lowercase terms.
47
- */
48
- export function expandQuery(query) {
49
- const words = query
50
- .toLowerCase()
51
- .split(/\s+/)
52
- .filter((w) => w.length > 0);
53
- const terms = new Set();
54
- for (const word of words) {
55
- terms.add(word);
56
- // Add synonyms if available
57
- const synonyms = SYNONYM_MAP[word];
58
- if (synonyms) {
59
- for (const syn of synonyms) {
60
- terms.add(syn);
61
- }
62
- }
63
- // Apply stemming and add the stem
64
- const stem = basicStem(word);
65
- if (stem !== word) {
66
- terms.add(stem);
67
- }
68
- }
69
- return [...terms];
70
- }
71
- //# sourceMappingURL=query-expand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-expand.js","sourceRoot":"","sources":["../src/query-expand.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Self-Evolving Memory Loop — Reflection Engine
3
- *
4
- * Three layers:
5
- * Layer 1 — Mechanical: clustering, contradiction detection, gap analysis
6
- * Layer 2 — LLM-powered: synthesis candidates (prompts for the AI to complete)
7
- * Layer 3 — Adaptive: health scoring, evolution metrics
8
- *
9
- * Uses synthesis_lineage to prevent re-synthesizing clusters.
10
- * Uses knowledge_gaps to surface what the system doesn't know.
11
- * Records reflection metadata for auto-trigger timing.
12
- */
13
- import type { AmemDatabase, KnowledgeGap } from "./database.js";
14
- import type { MemoryTypeValue } from "./memory.js";
15
- export interface ClusterMember {
16
- id: string;
17
- content: string;
18
- type: MemoryTypeValue;
19
- confidence: number;
20
- createdAt: number;
21
- tags: string[];
22
- }
23
- export interface MemoryCluster {
24
- id: string;
25
- members: ClusterMember[];
26
- dominantType: MemoryTypeValue;
27
- coherence: number;
28
- tags: string[];
29
- isSynthesisCandidate: boolean;
30
- }
31
- export interface ContradictionCandidate {
32
- memoryA: ClusterMember;
33
- memoryB: ClusterMember;
34
- similarity: number;
35
- reason: string;
36
- suggestedAction: string;
37
- }
38
- export interface SynthesisCandidate {
39
- clusterId: string;
40
- memories: ClusterMember[];
41
- dominantType: MemoryTypeValue;
42
- suggestedPrompt: string;
43
- }
44
- export interface ReflectionStats {
45
- totalMemories: number;
46
- clusteredMemories: number;
47
- totalClusters: number;
48
- avgClusterSize: number;
49
- contradictionsFound: number;
50
- synthesisCandidates: number;
51
- knowledgeGaps: number;
52
- healthScore: number;
53
- }
54
- export interface ReflectionReport {
55
- clusters: MemoryCluster[];
56
- contradictions: ContradictionCandidate[];
57
- synthesisCandidates: SynthesisCandidate[];
58
- knowledgeGaps: KnowledgeGap[];
59
- orphans: number;
60
- stats: ReflectionStats;
61
- timestamp: number;
62
- durationMs: number;
63
- }
64
- export interface ReflectionConfig {
65
- /** Minimum cluster size to report. Default: 3 */
66
- minClusterSize: number;
67
- /** Number of HNSW neighbors to probe per memory. Default: 10 */
68
- neighborK: number;
69
- /** Minimum similarity to form a cluster edge. Default: 0.65 */
70
- similarityThreshold: number;
71
- /** Minimum similarity within a cluster to flag contradiction. Default: 0.7 */
72
- contradictionMinSimilarity: number;
73
- /** Max synthesis candidates to return. Default: 5 */
74
- maxSynthesisCandidates: number;
75
- /** Max memories to process (0 = unlimited). Default: 0 */
76
- maxMemories: number;
77
- }
78
- export declare function reflect(db: AmemDatabase, config?: Partial<ReflectionConfig>): ReflectionReport;
79
- export declare function isReflectionDue(db: AmemDatabase): {
80
- due: boolean;
81
- reason: string;
82
- };
@@ -1,414 +0,0 @@
1
- /**
2
- * Self-Evolving Memory Loop — Reflection Engine
3
- *
4
- * Three layers:
5
- * Layer 1 — Mechanical: clustering, contradiction detection, gap analysis
6
- * Layer 2 — LLM-powered: synthesis candidates (prompts for the AI to complete)
7
- * Layer 3 — Adaptive: health scoring, evolution metrics
8
- *
9
- * Uses synthesis_lineage to prevent re-synthesizing clusters.
10
- * Uses knowledge_gaps to surface what the system doesn't know.
11
- * Records reflection metadata for auto-trigger timing.
12
- */
13
- import { getVectorIndex } from "./memory.js";
14
- import { cosineSimilarity } from "./embeddings.js";
15
- const DEFAULT_CONFIG = {
16
- minClusterSize: 3,
17
- neighborK: 10,
18
- similarityThreshold: 0.65,
19
- contradictionMinSimilarity: 0.7,
20
- maxSynthesisCandidates: 5,
21
- maxMemories: 0,
22
- };
23
- // ── Main entry point ───────────────────────────────────
24
- export function reflect(db, config) {
25
- const cfg = { ...DEFAULT_CONFIG, ...config };
26
- const start = Date.now();
27
- // 1. Load all active memories with embeddings
28
- let active = db.getAllWithEmbeddings().filter((m) => m.validUntil === null || m.validUntil > Date.now());
29
- if (cfg.maxMemories > 0) {
30
- active = active.slice(0, cfg.maxMemories);
31
- }
32
- const memoryMap = new Map(active.map((m) => [m.id, m]));
33
- // 2. Build adjacency graph using vector similarity
34
- const adjacency = buildAdjacencyGraph(active, memoryMap, cfg);
35
- // 3. Find connected components (clusters)
36
- const clusters = findClusters(adjacency, memoryMap, cfg);
37
- // 4. Detect contradictions within clusters (enhanced: negation + numerical + low-overlap)
38
- const contradictions = detectContradictions(clusters, memoryMap, cfg);
39
- // 5. Identify synthesis candidates (uses synthesis_lineage to skip already-synthesized)
40
- const synthesisCandidates = findSynthesisCandidates(clusters, db, cfg);
41
- // 6. Load knowledge gaps
42
- const knowledgeGaps = db.getActiveKnowledgeGaps(20);
43
- // 7. Compute stats
44
- const clusteredMemories = clusters.reduce((sum, c) => sum + c.members.length, 0);
45
- // 8. Record reflection timestamp
46
- db.setReflectionMeta("last_reflection_at", String(Date.now()));
47
- db.setReflectionMeta("last_memory_count", String(db.getStats().total));
48
- return {
49
- clusters,
50
- contradictions,
51
- synthesisCandidates,
52
- knowledgeGaps,
53
- orphans: active.length - clusteredMemories,
54
- stats: {
55
- totalMemories: active.length,
56
- clusteredMemories,
57
- totalClusters: clusters.length,
58
- avgClusterSize: clusters.length > 0
59
- ? Math.round((clusteredMemories / clusters.length) * 10) / 10
60
- : 0,
61
- contradictionsFound: contradictions.length,
62
- synthesisCandidates: synthesisCandidates.length,
63
- knowledgeGaps: knowledgeGaps.length,
64
- healthScore: computeHealthScore(active, clusters, contradictions),
65
- },
66
- timestamp: Date.now(),
67
- durationMs: Date.now() - start,
68
- };
69
- }
70
- // ── Reflection-due check (for memory_inject nudge) ────
71
- export function isReflectionDue(db) {
72
- const lastAt = db.getReflectionMeta("last_reflection_at");
73
- const lastCount = db.getReflectionMeta("last_memory_count");
74
- if (!lastAt) {
75
- return { due: true, reason: "Reflection has never been run" };
76
- }
77
- const daysSince = (Date.now() - Number(lastAt)) / 86_400_000;
78
- if (daysSince > 7) {
79
- return { due: true, reason: `Last reflection was ${Math.round(daysSince)}d ago` };
80
- }
81
- // Check if many new memories since last reflection
82
- if (lastCount) {
83
- const currentCount = db.getStats().total;
84
- const delta = currentCount - Number(lastCount);
85
- if (delta >= 50) {
86
- return { due: true, reason: `${delta} new memories since last reflection` };
87
- }
88
- }
89
- return { due: false, reason: "" };
90
- }
91
- // ── Layer 1: Adjacency graph ───────────────────────────
92
- function buildAdjacencyGraph(memories, memoryMap, cfg) {
93
- const adjacency = new Map();
94
- for (const m of memories) {
95
- adjacency.set(m.id, new Set());
96
- }
97
- const index = getVectorIndex();
98
- if (index && index.size() > 0) {
99
- // Fast path: O(n log n) via HNSW
100
- for (const m of memories) {
101
- if (!m.embedding)
102
- continue;
103
- const neighbors = index.search(m.embedding, cfg.neighborK, cfg.similarityThreshold);
104
- for (const n of neighbors) {
105
- if (n.id === m.id)
106
- continue;
107
- if (!memoryMap.has(n.id))
108
- continue;
109
- adjacency.get(m.id).add(n.id);
110
- adjacency.get(n.id)?.add(m.id);
111
- }
112
- }
113
- }
114
- else {
115
- // Fallback: O(n²) brute-force, capped at 500
116
- const capped = memories.filter((m) => m.embedding !== null).slice(0, 500);
117
- for (let i = 0; i < capped.length; i++) {
118
- for (let j = i + 1; j < capped.length; j++) {
119
- const sim = cosineSimilarity(capped[i].embedding, capped[j].embedding);
120
- if (sim >= cfg.similarityThreshold) {
121
- adjacency.get(capped[i].id).add(capped[j].id);
122
- adjacency.get(capped[j].id).add(capped[i].id);
123
- }
124
- }
125
- }
126
- }
127
- return adjacency;
128
- }
129
- // ── Layer 1: Connected-component clustering ────────────
130
- function findClusters(adjacency, memoryMap, cfg) {
131
- const visited = new Set();
132
- const clusters = [];
133
- let clusterIdx = 0;
134
- for (const [nodeId] of adjacency) {
135
- if (visited.has(nodeId))
136
- continue;
137
- const component = [];
138
- const queue = [nodeId];
139
- visited.add(nodeId);
140
- while (queue.length > 0) {
141
- const current = queue.shift();
142
- component.push(current);
143
- const neighbors = adjacency.get(current);
144
- if (!neighbors)
145
- continue;
146
- for (const neighbor of neighbors) {
147
- if (visited.has(neighbor))
148
- continue;
149
- visited.add(neighbor);
150
- queue.push(neighbor);
151
- }
152
- }
153
- if (component.length < cfg.minClusterSize)
154
- continue;
155
- const members = toClusterMembers(component, memoryMap);
156
- const dominantType = findDominantType(members);
157
- const coherence = computeCoherence(component, memoryMap);
158
- const tags = extractCommonTags(members);
159
- clusters.push({
160
- id: `cluster-${clusterIdx++}`,
161
- members,
162
- dominantType,
163
- coherence,
164
- tags,
165
- isSynthesisCandidate: members.length >= cfg.minClusterSize,
166
- });
167
- }
168
- clusters.sort((a, b) => b.members.length - a.members.length);
169
- return clusters;
170
- }
171
- function toClusterMembers(ids, memoryMap) {
172
- return ids
173
- .map((id) => memoryMap.get(id))
174
- .filter((m) => m !== undefined)
175
- .map((m) => ({
176
- id: m.id,
177
- content: m.content,
178
- type: m.type,
179
- confidence: m.confidence,
180
- createdAt: m.createdAt,
181
- tags: m.tags,
182
- }));
183
- }
184
- function findDominantType(members) {
185
- const counts = new Map();
186
- for (const m of members) {
187
- counts.set(m.type, (counts.get(m.type) ?? 0) + 1);
188
- }
189
- let best = "fact";
190
- let max = 0;
191
- for (const [type, count] of counts) {
192
- if (count > max) {
193
- best = type;
194
- max = count;
195
- }
196
- }
197
- return best;
198
- }
199
- function computeCoherence(memberIds, memoryMap) {
200
- const MAX_PAIRS = 20;
201
- const withEmb = memberIds
202
- .map((id) => memoryMap.get(id))
203
- .filter((m) => m !== undefined && m.embedding !== null);
204
- if (withEmb.length < 2)
205
- return 0;
206
- let total = 0;
207
- let pairs = 0;
208
- for (let i = 0; i < withEmb.length && pairs < MAX_PAIRS; i++) {
209
- for (let j = i + 1; j < withEmb.length && pairs < MAX_PAIRS; j++) {
210
- total += cosineSimilarity(withEmb[i].embedding, withEmb[j].embedding);
211
- pairs++;
212
- }
213
- }
214
- return pairs > 0 ? Number((total / pairs).toFixed(4)) : 0;
215
- }
216
- function extractCommonTags(members) {
217
- const tagCounts = new Map();
218
- for (const m of members) {
219
- for (const tag of m.tags) {
220
- tagCounts.set(tag, (tagCounts.get(tag) ?? 0) + 1);
221
- }
222
- }
223
- return [...tagCounts.entries()]
224
- .filter(([, count]) => count >= 2)
225
- .sort((a, b) => b[1] - a[1])
226
- .slice(0, 5)
227
- .map(([tag]) => tag);
228
- }
229
- // ── Layer 1: Enhanced contradiction detection ──────────
230
- const NEGATION_PAIRS = [
231
- [/\balways\b/i, /\bnever\b/i],
232
- [/\buse\b/i, /\bdon't use\b|\bavoid\b/i],
233
- [/\bprefer\b/i, /\bavoid\b|\bdon't\b/i],
234
- [/\benable\b/i, /\bdisable\b/i],
235
- [/\brequire\b/i, /\boptional\b/i],
236
- [/\binclude\b/i, /\bexclude\b/i],
237
- [/\ballow\b/i, /\bforbid\b|\bprohibit\b|\bblock\b/i],
238
- ];
239
- /** Extract all numbers from content for numerical contradiction check. */
240
- function extractNumbers(content) {
241
- const matches = content.match(/\b\d+(?:\.\d+)?\b/g);
242
- return matches ? matches.map(Number) : [];
243
- }
244
- /** Tokenize content into lowercase words for overlap calculation. */
245
- function tokenize(content) {
246
- return new Set(content.toLowerCase().replace(/[^\w\s]/g, "").split(/\s+/).filter(w => w.length > 2));
247
- }
248
- /** Jaccard similarity between two word sets. */
249
- function wordOverlap(a, b) {
250
- let intersection = 0;
251
- for (const word of a) {
252
- if (b.has(word))
253
- intersection++;
254
- }
255
- const union = a.size + b.size - intersection;
256
- return union > 0 ? intersection / union : 0;
257
- }
258
- function detectContradictions(clusters, memoryMap, cfg) {
259
- const contradictions = [];
260
- const msPerDay = 86_400_000;
261
- const seen = new Set(); // prevent duplicate pairs
262
- for (const cluster of clusters) {
263
- for (let i = 0; i < cluster.members.length; i++) {
264
- const a = cluster.members[i];
265
- const fullA = memoryMap.get(a.id);
266
- if (!fullA?.embedding)
267
- continue;
268
- for (let j = i + 1; j < cluster.members.length; j++) {
269
- const b = cluster.members[j];
270
- const fullB = memoryMap.get(b.id);
271
- if (!fullB?.embedding)
272
- continue;
273
- const pairKey = [a.id, b.id].sort().join(":");
274
- if (seen.has(pairKey))
275
- continue;
276
- const sim = cosineSimilarity(fullA.embedding, fullB.embedding);
277
- if (sim < cfg.contradictionMinSimilarity)
278
- continue;
279
- const ageDays = Math.abs(a.createdAt - b.createdAt) / msPerDay;
280
- const [newer, older] = a.createdAt > b.createdAt ? [a, b] : [b, a];
281
- const contentA = a.content.toLowerCase();
282
- const contentB = b.content.toLowerCase();
283
- // Check 1: Negation-pair keywords
284
- let found = false;
285
- for (const [patA, patB] of NEGATION_PAIRS) {
286
- if ((patA.test(contentA) && patB.test(contentB)) ||
287
- (patB.test(contentA) && patA.test(contentB))) {
288
- seen.add(pairKey);
289
- contradictions.push({
290
- memoryA: older,
291
- memoryB: newer,
292
- similarity: Number(sim.toFixed(4)),
293
- reason: `Opposing language detected (${ageDays.toFixed(0)}d apart, ${(sim * 100).toFixed(0)}% similar)`,
294
- suggestedAction: suggestAction(newer, older),
295
- });
296
- found = true;
297
- break;
298
- }
299
- }
300
- if (found)
301
- continue;
302
- // Check 2: Numerical contradiction — same topic, different numbers
303
- const numsA = extractNumbers(a.content);
304
- const numsB = extractNumbers(b.content);
305
- if (numsA.length > 0 && numsB.length > 0 && sim > 0.8) {
306
- // High semantic similarity + different numbers = likely contradiction
307
- const hasConflictingNumber = numsA.some(na => numsB.some(nb => na !== nb && Math.abs(na - nb) / Math.max(na, nb) > 0.2));
308
- if (hasConflictingNumber) {
309
- seen.add(pairKey);
310
- contradictions.push({
311
- memoryA: older,
312
- memoryB: newer,
313
- similarity: Number(sim.toFixed(4)),
314
- reason: `Numerical disagreement (${numsA.join(",")} vs ${numsB.join(",")}, ${(sim * 100).toFixed(0)}% similar)`,
315
- suggestedAction: suggestAction(newer, older),
316
- });
317
- continue;
318
- }
319
- }
320
- // Check 3: Low word overlap despite high semantic similarity
321
- // (Same topic, expressed differently = potential update/contradiction)
322
- if (sim > 0.85) {
323
- const wordsA = tokenize(a.content);
324
- const wordsB = tokenize(b.content);
325
- const overlap = wordOverlap(wordsA, wordsB);
326
- if (overlap < 0.3 && ageDays > 7) {
327
- seen.add(pairKey);
328
- contradictions.push({
329
- memoryA: older,
330
- memoryB: newer,
331
- similarity: Number(sim.toFixed(4)),
332
- reason: `Low word overlap (${(overlap * 100).toFixed(0)}%) despite ${(sim * 100).toFixed(0)}% semantic similarity — possible update (${ageDays.toFixed(0)}d apart)`,
333
- suggestedAction: `Review: these may express the same intent differently, or the newer one may supersede the older`,
334
- });
335
- }
336
- }
337
- }
338
- }
339
- }
340
- return contradictions;
341
- }
342
- function suggestAction(newer, older) {
343
- return newer.confidence >= older.confidence
344
- ? `Expire older memory ${older.id.slice(0, 8)} — newer supersedes it`
345
- : `Review: newer has lower confidence (${(newer.confidence * 100).toFixed(0)}%) than older (${(older.confidence * 100).toFixed(0)}%)`;
346
- }
347
- // ── Layer 2: Synthesis candidates ──────────────────────
348
- function findSynthesisCandidates(clusters, db, cfg) {
349
- const candidates = [];
350
- for (const cluster of clusters) {
351
- if (cluster.members.length < cfg.minClusterSize)
352
- continue;
353
- // Skip if a member already looks like a synthesis (high-confidence non-correction)
354
- if (cluster.members.some((m) => m.confidence > 0.95 && m.type !== "correction")) {
355
- continue;
356
- }
357
- // Skip if any member is already part of a synthesis (via lineage table)
358
- const memberIds = cluster.members.map((m) => m.id);
359
- if (db.hasAnySynthesis(memberIds)) {
360
- continue;
361
- }
362
- // Group members by type
363
- const byType = new Map();
364
- for (const m of cluster.members) {
365
- const group = byType.get(m.type) ?? [];
366
- group.push(m);
367
- byType.set(m.type, group);
368
- }
369
- const topicHint = cluster.tags.length > 0 ? cluster.tags.join(", ") : "a common theme";
370
- const lines = [
371
- `These ${cluster.members.length} related memories form a cluster about "${topicHint}":`,
372
- "",
373
- ];
374
- for (const [type, members] of byType) {
375
- lines.push(`[${type}s]:`);
376
- for (const m of members.slice(0, 8)) {
377
- lines.push(` - "${m.content}"`);
378
- }
379
- if (members.length > 8) {
380
- lines.push(` ... and ${members.length - 8} more`);
381
- }
382
- lines.push("");
383
- }
384
- lines.push("Synthesize these into a single, higher-order principle or rule that captures what they collectively express.");
385
- lines.push("The synthesis should be actionable and concise (1-2 sentences).");
386
- lines.push('Store the result using memory_store with type based on the dominant pattern, and source "reflection-synthesis".');
387
- lines.push("Then use memory_relate to link the synthesis to each constituent memory with relationship_type \"synthesized_from\".");
388
- candidates.push({
389
- clusterId: cluster.id,
390
- memories: cluster.members,
391
- dominantType: cluster.dominantType,
392
- suggestedPrompt: lines.join("\n"),
393
- });
394
- }
395
- return candidates.slice(0, cfg.maxSynthesisCandidates);
396
- }
397
- // ── Layer 3: Health scoring ────────────────────────────
398
- function computeHealthScore(memories, clusters, contradictions) {
399
- if (memories.length === 0)
400
- return 100;
401
- const clustered = clusters.reduce((sum, c) => sum + c.members.length, 0);
402
- const clusteredRatio = clustered / memories.length;
403
- const avgCoherence = clusters.length > 0
404
- ? clusters.reduce((s, c) => s + c.coherence, 0) / clusters.length
405
- : 0;
406
- const highConfRatio = memories.filter((m) => m.confidence >= 0.8).length / memories.length;
407
- const contradictionPenalty = Math.min(contradictions.length * 5, 30);
408
- const score = Math.round(clusteredRatio * 25 +
409
- avgCoherence * 25 +
410
- highConfRatio * 25 +
411
- (1 - contradictionPenalty / 100) * 25);
412
- return Math.max(0, Math.min(100, score));
413
- }
414
- //# sourceMappingURL=reflection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};