claude-cortex 1.5.2 → 1.6.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 (36) hide show
  1. package/README.md +11 -1
  2. package/dist/__tests__/consolidation-merge.test.d.ts +9 -0
  3. package/dist/__tests__/consolidation-merge.test.d.ts.map +1 -0
  4. package/dist/__tests__/consolidation-merge.test.js +137 -0
  5. package/dist/__tests__/consolidation-merge.test.js.map +1 -0
  6. package/dist/__tests__/contradictions.test.d.ts +8 -0
  7. package/dist/__tests__/contradictions.test.d.ts.map +1 -0
  8. package/dist/__tests__/contradictions.test.js +78 -0
  9. package/dist/__tests__/contradictions.test.js.map +1 -0
  10. package/dist/__tests__/salience-evolution.test.d.ts +7 -0
  11. package/dist/__tests__/salience-evolution.test.d.ts.map +1 -0
  12. package/dist/__tests__/salience-evolution.test.js +151 -0
  13. package/dist/__tests__/salience-evolution.test.js.map +1 -0
  14. package/dist/__tests__/store.test.js +261 -0
  15. package/dist/__tests__/store.test.js.map +1 -1
  16. package/dist/memory/activation.js +1 -1
  17. package/dist/memory/consolidate.d.ts +4 -2
  18. package/dist/memory/consolidate.d.ts.map +1 -1
  19. package/dist/memory/consolidate.js +138 -27
  20. package/dist/memory/consolidate.js.map +1 -1
  21. package/dist/memory/salience.d.ts.map +1 -1
  22. package/dist/memory/salience.js +17 -1
  23. package/dist/memory/salience.js.map +1 -1
  24. package/dist/memory/store.d.ts +9 -13
  25. package/dist/memory/store.d.ts.map +1 -1
  26. package/dist/memory/store.js +181 -48
  27. package/dist/memory/store.js.map +1 -1
  28. package/dist/memory/types.d.ts +6 -0
  29. package/dist/memory/types.d.ts.map +1 -1
  30. package/dist/memory/types.js.map +1 -1
  31. package/dist/tools/recall.d.ts +5 -0
  32. package/dist/tools/recall.d.ts.map +1 -1
  33. package/dist/tools/recall.js +17 -1
  34. package/dist/tools/recall.js.map +1 -1
  35. package/dist/tools/remember.d.ts +2 -2
  36. package/package.json +1 -1
@@ -4,6 +4,8 @@
4
4
  * Tests for core memory operations, salience detection, and decay calculations.
5
5
  */
6
6
  import { describe, it, expect } from '@jest/globals';
7
+ import { jaccardSimilarity } from '../memory/similarity.js';
8
+ import { cosineSimilarity } from '../embeddings/generator.js';
7
9
  describe('Memory Types', () => {
8
10
  describe('DEFAULT_CONFIG', () => {
9
11
  it('should have sensible default values', async () => {
@@ -318,4 +320,263 @@ describe('Content Truncation', () => {
318
320
  expect(longContent.length).toBeGreaterThan(MAX_CONTENT_SIZE);
319
321
  });
320
322
  });
323
+ describe('Semantic Linking', () => {
324
+ describe('cosineSimilarity for embedding-based linking', () => {
325
+ it('should return 1.0 for identical vectors', () => {
326
+ const a = new Float32Array([1, 2, 3]);
327
+ const b = new Float32Array([1, 2, 3]);
328
+ expect(cosineSimilarity(a, b)).toBeCloseTo(1.0, 5);
329
+ });
330
+ it('should return 0.0 for orthogonal vectors', () => {
331
+ const a = new Float32Array([1, 0, 0]);
332
+ const b = new Float32Array([0, 1, 0]);
333
+ expect(cosineSimilarity(a, b)).toBeCloseTo(0.0, 5);
334
+ });
335
+ it('should return high similarity for similar vectors', () => {
336
+ const a = new Float32Array([1, 2, 3]);
337
+ const b = new Float32Array([1.1, 2.1, 3.1]);
338
+ expect(cosineSimilarity(a, b)).toBeGreaterThan(0.99);
339
+ });
340
+ });
341
+ describe('jaccardSimilarity for FTS fallback linking', () => {
342
+ it('should link memories with similar content but different tags', () => {
343
+ // Two memories about the same topic (SQLite performance) but with different tags
344
+ const memoryA = 'SQLite database performance optimization using WAL mode and busy timeout';
345
+ const memoryB = 'SQLite performance tuning with WAL journal mode and connection pooling';
346
+ const similarity = jaccardSimilarity(memoryA, memoryB);
347
+ // Should exceed the 0.3 threshold for FTS fallback linking
348
+ expect(similarity).toBeGreaterThanOrEqual(0.3);
349
+ });
350
+ it('should not link unrelated memories', () => {
351
+ const memoryA = 'React component lifecycle hooks and state management';
352
+ const memoryB = 'PostgreSQL database backup and restore procedures';
353
+ const similarity = jaccardSimilarity(memoryA, memoryB);
354
+ // Should be below the 0.3 threshold
355
+ expect(similarity).toBeLessThan(0.3);
356
+ });
357
+ it('should compute correct strength: min(0.7, sim + 0.2)', () => {
358
+ const memoryA = 'SQLite WAL mode performance optimization database';
359
+ const memoryB = 'SQLite WAL mode performance tuning database';
360
+ const sim = jaccardSimilarity(memoryA, memoryB);
361
+ const strength = Math.min(0.7, sim + 0.2);
362
+ expect(strength).toBeGreaterThan(0.2);
363
+ expect(strength).toBeLessThanOrEqual(0.7);
364
+ });
365
+ });
366
+ describe('Search Reinforcement and Co-Search Linking', () => {
367
+ it('should increase salience after repeated searches', async () => {
368
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
369
+ const { addMemory, searchMemories, getMemoryById, deleteMemory } = await import('../memory/store.js');
370
+ closeDatabase();
371
+ initDatabase(':memory:');
372
+ let memoryId;
373
+ try {
374
+ const memory = addMemory({
375
+ title: 'Unique Reinforcement Test Target',
376
+ content: 'This memory is about reinforcement testing with a unique keyword xyzzyplugh',
377
+ tags: ['reinforcement-test'],
378
+ project: 'test-project',
379
+ });
380
+ memoryId = memory.id;
381
+ const initialSalience = memory.salience;
382
+ // Search 3 times for this memory
383
+ for (let i = 0; i < 3; i++) {
384
+ await searchMemories({ query: 'xyzzyplugh', project: 'test-project' });
385
+ }
386
+ const updated = getMemoryById(memoryId);
387
+ expect(updated).not.toBeNull();
388
+ expect(updated.salience).toBeGreaterThan(initialSalience);
389
+ }
390
+ finally {
391
+ if (memoryId) {
392
+ try {
393
+ deleteMemory(memoryId);
394
+ }
395
+ catch { /* ignore */ }
396
+ }
397
+ closeDatabase();
398
+ }
399
+ });
400
+ it('should link memories that co-appear in search results', async () => {
401
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
402
+ const { addMemory, searchMemories, getRelatedMemories, deleteMemory } = await import('../memory/store.js');
403
+ closeDatabase();
404
+ initDatabase(':memory:');
405
+ let idA;
406
+ let idB;
407
+ try {
408
+ const memA = addMemory({
409
+ title: 'Co-search Link Memory Alpha',
410
+ content: 'Shared topic cosearchunique for linking test alpha variant',
411
+ tags: ['cosearch-test'],
412
+ project: 'test-project',
413
+ });
414
+ idA = memA.id;
415
+ const memB = addMemory({
416
+ title: 'Co-search Link Memory Beta',
417
+ content: 'Shared topic cosearchunique for linking test beta variant',
418
+ tags: ['cosearch-test'],
419
+ project: 'test-project',
420
+ });
421
+ idB = memB.id;
422
+ // Search for a term that matches both
423
+ await searchMemories({ query: 'cosearchunique', project: 'test-project' });
424
+ // Verify they got linked
425
+ const relatedToA = getRelatedMemories(idA);
426
+ const linkToB = relatedToA.find(r => r.memory.id === idB);
427
+ expect(linkToB).toBeDefined();
428
+ if (linkToB) {
429
+ expect(linkToB.relationship).toBe('related');
430
+ expect(linkToB.strength).toBeGreaterThan(0);
431
+ }
432
+ }
433
+ finally {
434
+ if (idA) {
435
+ try {
436
+ deleteMemory(idA);
437
+ }
438
+ catch { /* ignore */ }
439
+ }
440
+ if (idB) {
441
+ try {
442
+ deleteMemory(idB);
443
+ }
444
+ catch { /* ignore */ }
445
+ }
446
+ closeDatabase();
447
+ }
448
+ });
449
+ });
450
+ describe('Integration: detectRelationships via addMemory', () => {
451
+ it('should auto-link related memories with different tags', async () => {
452
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
453
+ const { addMemory, getRelatedMemories, deleteMemory } = await import('../memory/store.js');
454
+ // Close any existing database connection first
455
+ closeDatabase();
456
+ // Initialize a fresh test database
457
+ const testDbPath = ':memory:';
458
+ initDatabase(testDbPath);
459
+ let memoryAId;
460
+ let memoryBId;
461
+ try {
462
+ // Create first memory tagged "database"
463
+ const memoryA = addMemory({
464
+ title: 'SQLite Performance Optimization',
465
+ content: 'SQLite database performance optimization using WAL mode and busy timeout for concurrent access',
466
+ tags: ['database'],
467
+ project: 'test-project',
468
+ });
469
+ memoryAId = memoryA.id;
470
+ // Create second memory tagged "backend" with similar content
471
+ // This triggers detectRelationships internally, which should find memoryA
472
+ const memoryB = addMemory({
473
+ title: 'Backend Database Tuning',
474
+ content: 'SQLite performance tuning with WAL journal mode and connection pooling for better throughput',
475
+ tags: ['backend'],
476
+ project: 'test-project',
477
+ });
478
+ memoryBId = memoryB.id;
479
+ // Wait a bit for async embedding generation (though FTS fallback should work immediately)
480
+ await new Promise(resolve => setTimeout(resolve, 100));
481
+ // Verify that memoryB is linked to memoryA
482
+ const relatedToB = getRelatedMemories(memoryB.id);
483
+ // Should have at least one link
484
+ expect(relatedToB.length).toBeGreaterThan(0);
485
+ // Should contain a link to memoryA
486
+ const linkToA = relatedToB.find(rel => rel.memory.id === memoryA.id);
487
+ expect(linkToA).toBeDefined();
488
+ if (linkToA) {
489
+ // Verify the relationship properties
490
+ expect(linkToA.relationship).toBe('related');
491
+ expect(linkToA.strength).toBeGreaterThan(0);
492
+ expect(linkToA.strength).toBeLessThanOrEqual(1);
493
+ expect(linkToA.direction).toBe('outgoing');
494
+ }
495
+ }
496
+ finally {
497
+ // Cleanup: delete test memories
498
+ if (memoryAId) {
499
+ try {
500
+ deleteMemory(memoryAId);
501
+ }
502
+ catch (e) { /* ignore */ }
503
+ }
504
+ if (memoryBId) {
505
+ try {
506
+ deleteMemory(memoryBId);
507
+ }
508
+ catch (e) { /* ignore */ }
509
+ }
510
+ // Close the database connection
511
+ closeDatabase();
512
+ }
513
+ });
514
+ });
515
+ describe('enrichMemory', () => {
516
+ it('should enrich a memory with new related context', async () => {
517
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
518
+ const { addMemory, enrichMemory, getMemoryById, deleteMemory } = await import('../memory/store.js');
519
+ closeDatabase();
520
+ initDatabase(':memory:');
521
+ let memoryId;
522
+ try {
523
+ const memory = addMemory({
524
+ title: 'JWT token authentication',
525
+ content: 'We use JWT tokens for authentication in our API server with rate limiting',
526
+ category: 'architecture',
527
+ tags: ['auth', 'jwt'],
528
+ project: 'test-project',
529
+ type: 'long_term',
530
+ });
531
+ memoryId = memory.id;
532
+ const result = enrichMemory(memoryId, 'We use JWT tokens for authentication in our API server with rate limiting and also need Redis caching', 'search');
533
+ expect(result.enriched).toBe(true);
534
+ const updated = getMemoryById(memoryId);
535
+ expect(updated).toBeDefined();
536
+ expect(updated.content).toContain('rate limiting');
537
+ expect(updated.content).toContain('search:');
538
+ }
539
+ finally {
540
+ if (memoryId) {
541
+ try {
542
+ deleteMemory(memoryId);
543
+ }
544
+ catch { /* ignore */ }
545
+ }
546
+ closeDatabase();
547
+ }
548
+ });
549
+ it('should reject enrichment when context is too similar', async () => {
550
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
551
+ const { addMemory, enrichMemory, deleteMemory } = await import('../memory/store.js');
552
+ closeDatabase();
553
+ initDatabase(':memory:');
554
+ let memoryId;
555
+ try {
556
+ const memory = addMemory({
557
+ title: 'JWT token authentication',
558
+ content: 'We use JWT tokens for authentication with RS256 signing',
559
+ category: 'architecture',
560
+ tags: ['auth'],
561
+ project: 'test-project',
562
+ type: 'long_term',
563
+ });
564
+ memoryId = memory.id;
565
+ const result = enrichMemory(memoryId, 'We use JWT tokens for authentication with RS256 signing', 'search');
566
+ expect(result.enriched).toBe(false);
567
+ // May fail due to cooldown (shared process state) or similarity
568
+ expect(result.reason).toMatch(/similar|cooldown/);
569
+ }
570
+ finally {
571
+ if (memoryId) {
572
+ try {
573
+ deleteMemory(memoryId);
574
+ }
575
+ catch { /* ignore */ }
576
+ }
577
+ closeDatabase();
578
+ }
579
+ });
580
+ });
581
+ });
321
582
  //# sourceMappingURL=store.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../src/__tests__/store.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../src/__tests__/store.test.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ const activationCache = new Map();
22
22
  const DECAY_HALF_LIFE_MINUTES = 30; // Activation halves every 30 minutes
23
23
  const SPREAD_FACTOR = 0.5; // How much activation spreads (50% of link strength)
24
24
  const MAX_SPREAD_DEPTH = 1; // Only spread to direct neighbors (not neighbors of neighbors)
25
- const MAX_ACTIVATION_BOOST = 0.2; // Cap search boost at 20%
25
+ const MAX_ACTIVATION_BOOST = 0.3; // Cap search boost at 30%
26
26
  /**
27
27
  * Activate a memory and spread activation to linked memories
28
28
  *
@@ -19,8 +19,10 @@ export declare function consolidate(config?: MemoryConfig): ConsolidationResult;
19
19
  */
20
20
  export declare function enforceMemoryLimits(config?: MemoryConfig): number;
21
21
  /**
22
- * Find and merge similar memories
23
- * Reduces redundancy while preserving important information
22
+ * Find and merge similar short-term memories into coherent long-term entries.
23
+ * Groups memories by project|category, then clusters by Jaccard similarity
24
+ * on content (0.6 weight) + title (0.4 weight).
25
+ * Returns count of deleted (merged) memories.
24
26
  */
25
27
  export declare function mergeSimilarMemories(project?: string, similarityThreshold?: number): number;
26
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../src/memory/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EAEZ,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAuBpB;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC,mBAAmB,CA0DrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,YAA6B,GAAG,MAAM,CA+CjF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,mBAAmB,GAAE,MAAY,GAChC,MAAM,CA6CR;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC,cAAc,CAAC,CAqCzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAuCpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC,CAcD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAwBN;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAavD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,YAA6B,GACpC;IACD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CA8BA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,YAA6B,GACpC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2BxC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC;IAAE,aAAa,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAe3E"}
1
+ {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../src/memory/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EAEZ,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAyBpB;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC,mBAAmB,CAqErB;AAgDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,YAA6B,GAAG,MAAM,CA+CjF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,mBAAmB,GAAE,MAAa,GACjC,MAAM,CA4HR;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC,cAAc,CAAC,CAqCzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAuCpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC,CAcD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAwBN;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAavD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,YAA6B,GACpC;IACD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CA8BA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,YAA6B,GACpC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2BxC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC;IAAE,aAAa,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAe3E"}
@@ -12,6 +12,8 @@ import { DEFAULT_CONFIG, } from './types.js';
12
12
  import { getMemoriesByType, getRecentMemories, promoteMemory, deleteMemory, searchMemories, getMemoryStats, updateDecayScores, } from './store.js';
13
13
  import { processDecay, } from './decay.js';
14
14
  import { detectContradictions, linkContradictions, } from './contradiction.js';
15
+ import { jaccardSimilarity } from './similarity.js';
16
+ import { pruneActivationCache } from './activation.js';
15
17
  /**
16
18
  * Run full consolidation process
17
19
  * This is like the brain's sleep consolidation - should be run periodically
@@ -51,6 +53,14 @@ export function consolidate(config = DEFAULT_CONFIG) {
51
53
  deleted += enforceMemoryLimits(config);
52
54
  // Persist updated decay scores for efficient sorting
53
55
  updateDecayScores();
56
+ // Evolve salience based on structural importance
57
+ let salienceEvolved = 0;
58
+ try {
59
+ salienceEvolved = evolveSalience(db);
60
+ }
61
+ catch (e) {
62
+ console.error('[claude-cortex] Salience evolution failed:', e);
63
+ }
54
64
  // ORGANIC FEATURE: Contradiction Detection (Phase 3)
55
65
  // Detect and link contradicting memories during consolidation
56
66
  let contradictionsFound = 0;
@@ -63,9 +73,52 @@ export function consolidate(config = DEFAULT_CONFIG) {
63
73
  catch (e) {
64
74
  console.error('[claude-cortex] Contradiction detection failed:', e);
65
75
  }
66
- return { consolidated, decayed, deleted, contradictionsFound, contradictionsLinked };
76
+ // Prune activation cache to prevent unbounded growth
77
+ pruneActivationCache();
78
+ return { consolidated, decayed, deleted, contradictionsFound, contradictionsLinked, salienceEvolved };
67
79
  });
68
80
  }
81
+ /**
82
+ * Adjust salience based on structural importance (link count, contradiction status).
83
+ * Called during consolidation.
84
+ */
85
+ function evolveSalience(db) {
86
+ let updated = 0;
87
+ // Boost highly-linked memories (hub bonus)
88
+ const hubs = db.prepare(`
89
+ SELECT m.id, m.salience,
90
+ (SELECT COUNT(*) FROM memory_links WHERE source_id = m.id OR target_id = m.id) as link_count
91
+ FROM memories m
92
+ WHERE m.type IN ('long_term', 'episodic')
93
+ `).all();
94
+ for (const hub of hubs) {
95
+ if (hub.link_count < 2)
96
+ continue;
97
+ const linkBonus = Math.min(0.1, Math.log2(hub.link_count) * 0.03);
98
+ const newSalience = Math.min(1.0, hub.salience + linkBonus);
99
+ if (newSalience > hub.salience) {
100
+ db.prepare('UPDATE memories SET salience = ? WHERE id = ?').run(newSalience, hub.id);
101
+ updated++;
102
+ }
103
+ }
104
+ // Penalize contradicted memories slightly (both sides)
105
+ const contradicted = db.prepare(`
106
+ SELECT DISTINCT source_id, target_id
107
+ FROM memory_links
108
+ WHERE relationship = 'contradicts'
109
+ `).all();
110
+ for (const pair of contradicted) {
111
+ for (const id of [pair.source_id, pair.target_id]) {
112
+ const mem = db.prepare('SELECT salience FROM memories WHERE id = ?').get(id);
113
+ if (mem && mem.salience > 0.3) {
114
+ db.prepare('UPDATE memories SET salience = ? WHERE id = ?')
115
+ .run(mem.salience - 0.02, id);
116
+ updated++;
117
+ }
118
+ }
119
+ }
120
+ return updated;
121
+ }
69
122
  /**
70
123
  * Enforce maximum memory limits
71
124
  * Removes lowest-priority memories when limits are exceeded
@@ -108,46 +161,104 @@ export function enforceMemoryLimits(config = DEFAULT_CONFIG) {
108
161
  return deleted;
109
162
  }
110
163
  /**
111
- * Find and merge similar memories
112
- * Reduces redundancy while preserving important information
164
+ * Find and merge similar short-term memories into coherent long-term entries.
165
+ * Groups memories by project|category, then clusters by Jaccard similarity
166
+ * on content (0.6 weight) + title (0.4 weight).
167
+ * Returns count of deleted (merged) memories.
113
168
  */
114
- export function mergeSimilarMemories(project, similarityThreshold = 0.8) {
115
- // Wrap in transaction for atomic merge operations
169
+ export function mergeSimilarMemories(project, similarityThreshold = 0.25) {
116
170
  return withTransaction(() => {
117
171
  const db = getDatabase();
118
- let merged = 0;
119
- // Get all memories (optionally filtered by project)
120
- let sql = 'SELECT * FROM memories';
172
+ let deleted = 0;
173
+ // Step 1: Get all short-term memories, optionally filtered by project
174
+ let sql = "SELECT * FROM memories WHERE type = 'short_term'";
121
175
  const params = [];
122
176
  if (project) {
123
- sql += ' WHERE project = ?';
177
+ sql += ' AND project = ?';
124
178
  params.push(project);
125
179
  }
126
180
  sql += ' ORDER BY created_at ASC';
127
181
  const memories = db.prepare(sql).all(...params);
128
- // Simple similarity check based on title and first 100 chars of content
129
- const seen = new Map(); // key -> id of primary memory
130
- for (const row of memories) {
131
- const key = `${row.title.toLowerCase().trim()}|${row.content.slice(0, 100).toLowerCase()}`;
132
- if (seen.has(key)) {
133
- // This is a duplicate, merge into the primary
134
- const primaryId = seen.get(key);
135
- // Boost the primary memory's salience
182
+ // Step 2: Group by project|category
183
+ const groups = new Map();
184
+ for (const mem of memories) {
185
+ const key = `${mem.project || ''}|${mem.category || ''}`;
186
+ if (!groups.has(key))
187
+ groups.set(key, []);
188
+ groups.get(key).push(mem);
189
+ }
190
+ // Step 3: For each group with 2+ members, find clusters
191
+ for (const [, group] of groups) {
192
+ if (group.length < 2)
193
+ continue;
194
+ // Track which memories have been clustered
195
+ const clustered = new Set();
196
+ for (let i = 0; i < group.length; i++) {
197
+ if (clustered.has(i))
198
+ continue;
199
+ const cluster = [i]; // indices into group
200
+ const memA = group[i];
201
+ for (let j = i + 1; j < group.length; j++) {
202
+ if (clustered.has(j))
203
+ continue;
204
+ const memB = group[j];
205
+ const contentSim = jaccardSimilarity(memA.content, memB.content);
206
+ const titleSim = jaccardSimilarity(memA.title, memB.title);
207
+ const combinedSim = contentSim * 0.6 + titleSim * 0.4;
208
+ if (combinedSim >= similarityThreshold) {
209
+ cluster.push(j);
210
+ }
211
+ }
212
+ if (cluster.length < 2)
213
+ continue;
214
+ // Mark all as clustered
215
+ for (const idx of cluster)
216
+ clustered.add(idx);
217
+ // Step 4: Merge cluster
218
+ // Sort by salience desc, pick highest as base
219
+ const clusterMems = cluster.map(idx => group[idx]);
220
+ clusterMems.sort((a, b) => b.salience - a.salience);
221
+ const base = clusterMems[0];
222
+ const others = clusterMems.slice(1);
223
+ // Merge content
224
+ const bulletPoints = others
225
+ .map(m => `- ${m.title}: ${m.content}`)
226
+ .join('\n');
227
+ const mergedContent = `${base.content}\n\nConsolidated context:\n${bulletPoints}`;
228
+ // Merge tags (union)
229
+ const allTags = new Set();
230
+ for (const m of clusterMems) {
231
+ try {
232
+ const tags = JSON.parse(m.tags || '[]');
233
+ for (const t of tags)
234
+ allTags.add(t);
235
+ }
236
+ catch {
237
+ // skip invalid tags
238
+ }
239
+ }
240
+ // Sum access counts
241
+ const totalAccessCount = clusterMems.reduce((sum, m) => sum + (m.access_count || 0), 0);
242
+ // New salience: base + 0.1, capped at 1.0
243
+ const newSalience = Math.min(1.0, base.salience + 0.1);
244
+ // Update base memory
136
245
  db.prepare(`
137
246
  UPDATE memories
138
- SET salience = MIN(1.0, salience + 0.1),
139
- access_count = access_count + 1
247
+ SET type = 'long_term',
248
+ content = ?,
249
+ tags = ?,
250
+ salience = ?,
251
+ access_count = ?
140
252
  WHERE id = ?
141
- `).run(primaryId);
142
- // Delete the duplicate
143
- deleteMemory(row.id);
144
- merged++;
145
- }
146
- else {
147
- seen.set(key, row.id);
253
+ `).run(mergedContent, JSON.stringify([...allTags]), newSalience, totalAccessCount, base.id);
254
+ // Delete others
255
+ for (const other of others) {
256
+ deleteMemory(other.id);
257
+ deleted++;
258
+ }
148
259
  }
149
260
  }
150
- return merged;
261
+ return deleted;
151
262
  });
152
263
  }
153
264
  /**