vesper-memory 0.4.0 → 0.5.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 (63) hide show
  1. package/CHANGELOG.md +57 -3
  2. package/LICENSE +59 -0
  3. package/README.md +420 -23
  4. package/config/migrations/001_add_skill_summary.sql +75 -0
  5. package/config/migrations/001_rollback_skill_summary.sql +60 -0
  6. package/config/sqlite-schema.sql +68 -4
  7. package/dist/benchmark/types.d.ts +4 -4
  8. package/dist/cli.js +0 -0
  9. package/dist/consolidation/pipeline.d.ts +6 -1
  10. package/dist/consolidation/pipeline.d.ts.map +1 -1
  11. package/dist/consolidation/pipeline.js +53 -35
  12. package/dist/consolidation/pipeline.js.map +1 -1
  13. package/dist/memory-layers/semantic-memory.d.ts +9 -19
  14. package/dist/memory-layers/semantic-memory.d.ts.map +1 -1
  15. package/dist/memory-layers/semantic-memory.js +31 -54
  16. package/dist/memory-layers/semantic-memory.js.map +1 -1
  17. package/dist/memory-layers/skill-lazy-loading.d.ts +160 -0
  18. package/dist/memory-layers/skill-lazy-loading.d.ts.map +1 -0
  19. package/dist/memory-layers/skill-lazy-loading.js +247 -0
  20. package/dist/memory-layers/skill-lazy-loading.js.map +1 -0
  21. package/dist/memory-layers/skill-library.d.ts +133 -4
  22. package/dist/memory-layers/skill-library.d.ts.map +1 -1
  23. package/dist/memory-layers/skill-library.js +427 -8
  24. package/dist/memory-layers/skill-library.js.map +1 -1
  25. package/dist/memory-layers/working-memory.d.ts +35 -14
  26. package/dist/memory-layers/working-memory.d.ts.map +1 -1
  27. package/dist/memory-layers/working-memory.js +114 -36
  28. package/dist/memory-layers/working-memory.js.map +1 -1
  29. package/dist/retrieval/hybrid-search.d.ts +2 -2
  30. package/dist/retrieval/hybrid-search.d.ts.map +1 -1
  31. package/dist/retrieval/hybrid-search.js +4 -3
  32. package/dist/retrieval/hybrid-search.js.map +1 -1
  33. package/dist/router/smart-router.d.ts +25 -0
  34. package/dist/router/smart-router.d.ts.map +1 -1
  35. package/dist/router/smart-router.js +90 -10
  36. package/dist/router/smart-router.js.map +1 -1
  37. package/dist/scheduler/consolidation-scheduler.d.ts +129 -0
  38. package/dist/scheduler/consolidation-scheduler.d.ts.map +1 -0
  39. package/dist/scheduler/consolidation-scheduler.js +179 -0
  40. package/dist/scheduler/consolidation-scheduler.js.map +1 -0
  41. package/dist/scheduler/index.d.ts +7 -0
  42. package/dist/scheduler/index.d.ts.map +1 -0
  43. package/dist/scheduler/index.js +7 -0
  44. package/dist/scheduler/index.js.map +1 -0
  45. package/dist/server-wrapper.js +0 -0
  46. package/dist/server.js +879 -28
  47. package/dist/server.js.map +1 -1
  48. package/dist/synthesis/conflict-detector.d.ts +4 -6
  49. package/dist/synthesis/conflict-detector.d.ts.map +1 -1
  50. package/dist/synthesis/conflict-detector.js +19 -21
  51. package/dist/synthesis/conflict-detector.js.map +1 -1
  52. package/dist/utils/validation.d.ts +123 -1
  53. package/dist/utils/validation.d.ts.map +1 -1
  54. package/dist/utils/validation.js +146 -7
  55. package/dist/utils/validation.js.map +1 -1
  56. package/docker-compose.yml +6 -6
  57. package/embedding-service/README.md +8 -0
  58. package/package.json +4 -2
  59. package/scripts/FRESH_INSTALL.md +1 -1
  60. package/scripts/ensure-infrastructure.sh +86 -26
  61. package/scripts/health-check.sh +2 -1
  62. package/scripts/stop-infrastructure.sh +23 -0
  63. package/scripts/test-mcp-server.sh +2 -1
@@ -0,0 +1,60 @@
1
+ -- Rollback migration 001: Remove lazy loading columns from skills table
2
+ -- WARNING: This will drop the summary, is_archived, and timestamp columns
3
+ --
4
+ -- SQLite limitations:
5
+ -- - Cannot drop columns directly (requires table recreation)
6
+ -- - This script recreates the skills table without the new columns
7
+ --
8
+ -- Backup recommendation: Create a backup before running this rollback
9
+
10
+ -- Step 1: Create backup of current skills table
11
+ CREATE TABLE IF NOT EXISTS skills_backup AS SELECT * FROM skills;
12
+
13
+ -- Step 2: Drop new indexes
14
+ DROP INDEX IF EXISTS idx_skills_lazy_loading;
15
+ DROP INDEX IF EXISTS idx_skills_last_used;
16
+ DROP INDEX IF EXISTS idx_skills_category_quality;
17
+
18
+ -- Step 3: Recreate original skills table
19
+ DROP TABLE skills;
20
+
21
+ CREATE TABLE skills (
22
+ id TEXT PRIMARY KEY,
23
+ name TEXT NOT NULL,
24
+ description TEXT NOT NULL,
25
+ category TEXT NOT NULL,
26
+ triggers TEXT NOT NULL,
27
+ success_count INTEGER DEFAULT 0,
28
+ failure_count INTEGER DEFAULT 0,
29
+ avg_user_satisfaction REAL DEFAULT 0.5
30
+ );
31
+
32
+ -- Step 4: Restore data from backup (original columns only)
33
+ INSERT INTO skills (
34
+ id,
35
+ name,
36
+ description,
37
+ category,
38
+ triggers,
39
+ success_count,
40
+ failure_count,
41
+ avg_user_satisfaction
42
+ )
43
+ SELECT
44
+ id,
45
+ name,
46
+ description,
47
+ category,
48
+ triggers,
49
+ success_count,
50
+ failure_count,
51
+ avg_user_satisfaction
52
+ FROM skills_backup;
53
+
54
+ -- Step 5: Recreate original indexes
55
+ CREATE INDEX IF NOT EXISTS idx_skills_category ON skills(category);
56
+
57
+ -- Optional: Drop backup table after successful rollback
58
+ -- DROP TABLE skills_backup;
59
+
60
+ -- Note: Uncomment the line above to clean up the backup after verifying rollback
@@ -1,6 +1,7 @@
1
- -- AI Memory System v3.0 - SQLite Schema
1
+ -- AI Memory System v3.0 - SQLite Schema (v0.5.0: Multi-Agent Namespace Support)
2
2
  -- Core graph structure for semantic memory layer
3
- -- Includes entities, relationships, facts, conflicts, and procedural skills
3
+ -- Includes entities, relationships, facts, conflicts, procedural skills, and memories
4
+ -- All tables support namespace isolation for multi-agent workflows
4
5
 
5
6
  -- ============================================================================
6
7
  -- ENTITIES TABLE
@@ -18,6 +19,9 @@ CREATE TABLE IF NOT EXISTS entities (
18
19
  last_accessed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
19
20
  access_count INTEGER DEFAULT 1,
20
21
 
22
+ -- Multi-agent namespace isolation (v0.5.0)
23
+ namespace TEXT NOT NULL DEFAULT 'default',
24
+
21
25
  -- Metadata for tracking
22
26
  last_modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
27
  is_archived BOOLEAN DEFAULT 0,
@@ -26,6 +30,7 @@ CREATE TABLE IF NOT EXISTS entities (
26
30
 
27
31
  -- Entity indexes for fast lookup and retrieval
28
32
  CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name);
33
+ CREATE INDEX IF NOT EXISTS idx_entities_namespace ON entities(namespace);
29
34
  CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(type);
30
35
  CREATE INDEX IF NOT EXISTS idx_entities_confidence ON entities(confidence DESC);
31
36
  CREATE INDEX IF NOT EXISTS idx_entities_created_at ON entities(created_at DESC);
@@ -57,6 +62,9 @@ CREATE TABLE IF NOT EXISTS relationships (
57
62
  -- Access tracking for decay calculation
58
63
  access_count INTEGER DEFAULT 1,
59
64
 
65
+ -- Multi-agent namespace isolation (v0.5.0)
66
+ namespace TEXT NOT NULL DEFAULT 'default',
67
+
60
68
  -- Metadata
61
69
  is_archived BOOLEAN DEFAULT 0,
62
70
  metadata TEXT, -- JSON for extensibility
@@ -69,6 +77,7 @@ CREATE TABLE IF NOT EXISTS relationships (
69
77
 
70
78
  -- Relationship indexes for efficient traversal and decay updates
71
79
  CREATE INDEX IF NOT EXISTS idx_relationships_source ON relationships(source_id);
80
+ CREATE INDEX IF NOT EXISTS idx_relationships_namespace ON relationships(namespace);
72
81
  CREATE INDEX IF NOT EXISTS idx_relationships_target ON relationships(target_id);
73
82
  CREATE INDEX IF NOT EXISTS idx_relationships_type ON relationships(relation_type);
74
83
  CREATE INDEX IF NOT EXISTS idx_relationships_strength ON relationships(strength DESC);
@@ -104,6 +113,9 @@ CREATE TABLE IF NOT EXISTS facts (
104
113
  notes TEXT, -- Explanation of why this fact was lowered/disputed
105
114
  metadata TEXT, -- JSON for extensibility
106
115
 
116
+ -- Multi-agent namespace isolation (v0.5.0)
117
+ namespace TEXT NOT NULL DEFAULT 'default',
118
+
107
119
  -- Foreign key constraint
108
120
  FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE,
109
121
 
@@ -113,6 +125,7 @@ CREATE TABLE IF NOT EXISTS facts (
113
125
 
114
126
  -- Fact indexes for retrieval and conflict detection
115
127
  CREATE INDEX IF NOT EXISTS idx_facts_entity ON facts(entity_id);
128
+ CREATE INDEX IF NOT EXISTS idx_facts_namespace ON facts(namespace);
116
129
  CREATE INDEX IF NOT EXISTS idx_facts_property ON facts(property);
117
130
  CREATE INDEX IF NOT EXISTS idx_facts_confidence ON facts(confidence DESC);
118
131
  CREATE INDEX IF NOT EXISTS idx_facts_valid_from ON facts(valid_from DESC);
@@ -150,6 +163,9 @@ CREATE TABLE IF NOT EXISTS conflicts (
150
163
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
151
164
  last_reviewed TIMESTAMP,
152
165
 
166
+ -- Multi-agent namespace isolation (v0.5.0)
167
+ namespace TEXT NOT NULL DEFAULT 'default',
168
+
153
169
  -- Metadata
154
170
  metadata TEXT, -- JSON for extensibility
155
171
 
@@ -161,6 +177,7 @@ CREATE TABLE IF NOT EXISTS conflicts (
161
177
 
162
178
  -- Conflict indexes for efficient detection and resolution
163
179
  CREATE INDEX IF NOT EXISTS idx_conflicts_entity ON conflicts(entity_id);
180
+ CREATE INDEX IF NOT EXISTS idx_conflicts_namespace ON conflicts(namespace);
164
181
  CREATE INDEX IF NOT EXISTS idx_conflicts_fact_1 ON conflicts(fact_id_1);
165
182
  CREATE INDEX IF NOT EXISTS idx_conflicts_fact_2 ON conflicts(fact_id_2);
166
183
  CREATE INDEX IF NOT EXISTS idx_conflicts_type ON conflicts(conflict_type);
@@ -182,6 +199,7 @@ CREATE TABLE IF NOT EXISTS skills (
182
199
  id TEXT PRIMARY KEY,
183
200
  name TEXT NOT NULL UNIQUE,
184
201
  description TEXT NOT NULL,
202
+ summary TEXT, -- Lightweight description for context injection (~20 words, ~50 tokens)
185
203
  category TEXT, -- Optional categorization: 'data_analysis', 'writing', 'coding', etc.
186
204
 
187
205
  -- Executable logic (references or code)
@@ -201,29 +219,75 @@ CREATE TABLE IF NOT EXISTS skills (
201
219
  uses_skills TEXT, -- JSON array of skill IDs this skill depends on
202
220
  used_by_skills TEXT, -- JSON array of skill IDs that use this skill
203
221
 
222
+ -- Multi-agent namespace isolation (v0.5.0)
223
+ namespace TEXT NOT NULL DEFAULT 'default',
224
+
204
225
  -- Metadata
226
+ is_archived INTEGER DEFAULT 0, -- Soft deletion flag
205
227
  created_from TEXT, -- Conversation ID where skill was extracted
206
228
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
207
229
  last_used TIMESTAMP,
208
230
  last_modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
209
231
  version INTEGER DEFAULT 1,
210
- is_archived BOOLEAN DEFAULT 0,
211
232
  notes TEXT,
212
233
  metadata TEXT -- JSON for extensibility
213
234
  );
214
235
 
215
236
  -- Skill indexes for efficient retrieval
216
237
  CREATE INDEX IF NOT EXISTS idx_skills_name ON skills(name);
238
+ CREATE INDEX IF NOT EXISTS idx_skills_namespace ON skills(namespace);
217
239
  CREATE INDEX IF NOT EXISTS idx_skills_category ON skills(category);
218
240
  CREATE INDEX IF NOT EXISTS idx_skills_created_at ON skills(created_at DESC);
219
- CREATE INDEX IF NOT EXISTS idx_skills_last_used ON skills(last_used DESC);
220
241
  CREATE INDEX IF NOT EXISTS idx_skills_success_rate ON skills(success_count, failure_count);
221
242
 
243
+ -- Lazy loading indexes for token-efficient skill retrieval
244
+ CREATE INDEX IF NOT EXISTS idx_skills_lazy_loading
245
+ ON skills(is_archived, avg_user_satisfaction DESC, success_count DESC);
246
+
247
+ CREATE INDEX IF NOT EXISTS idx_skills_last_used
248
+ ON skills(last_used DESC)
249
+ WHERE is_archived = 0 AND last_used IS NOT NULL;
250
+
251
+ CREATE INDEX IF NOT EXISTS idx_skills_category_quality
252
+ ON skills(category, avg_user_satisfaction DESC, success_count DESC)
253
+ WHERE is_archived = 0;
254
+
222
255
  -- Index for finding high-confidence skills (used in skill-based retrieval)
223
256
  CREATE INDEX IF NOT EXISTS idx_skills_reliability
224
257
  ON skills(avg_user_satisfaction DESC, success_count DESC)
225
258
  WHERE is_archived = 0;
226
259
 
260
+ -- ============================================================================
261
+ -- MEMORIES TABLE
262
+ -- Core memory storage with namespace isolation and agent attribution
263
+ -- ============================================================================
264
+
265
+ CREATE TABLE IF NOT EXISTS memories (
266
+ id TEXT PRIMARY KEY,
267
+ content TEXT NOT NULL,
268
+ memory_type TEXT NOT NULL, -- 'episodic', 'semantic', 'procedural', 'decision'
269
+ embedding TEXT,
270
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
271
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
272
+ importance REAL DEFAULT 0.5,
273
+ access_count INTEGER DEFAULT 0,
274
+ last_accessed TIMESTAMP,
275
+ metadata TEXT, -- JSON for extensibility
276
+
277
+ -- Multi-agent namespace isolation (v0.5.0)
278
+ namespace TEXT NOT NULL DEFAULT 'default',
279
+ agent_id TEXT, -- Which agent stored this memory
280
+ agent_role TEXT, -- Role of the agent (e.g., 'orchestrator', 'researcher')
281
+ task_id TEXT -- Task this memory is associated with
282
+ );
283
+
284
+ -- Memory indexes
285
+ CREATE INDEX IF NOT EXISTS idx_memories_namespace ON memories(namespace);
286
+ CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(memory_type);
287
+ CREATE INDEX IF NOT EXISTS idx_memories_created_at ON memories(created_at DESC);
288
+ CREATE INDEX IF NOT EXISTS idx_memories_agent ON memories(namespace, agent_id);
289
+ CREATE INDEX IF NOT EXISTS idx_memories_task ON memories(namespace, task_id);
290
+
227
291
  -- ============================================================================
228
292
  -- CONSOLIDATION METADATA TABLE
229
293
  -- Tracks the consolidation process for recovery and monitoring
@@ -135,8 +135,8 @@ export declare const EffectSizeSchema: z.ZodObject<{
135
135
  cohensD: z.ZodNumber;
136
136
  interpretation: z.ZodEnum<{
137
137
  small: "small";
138
- negligible: "negligible";
139
138
  medium: "medium";
139
+ negligible: "negligible";
140
140
  large: "large";
141
141
  }>;
142
142
  }, z.core.$strip>;
@@ -160,8 +160,8 @@ export declare const StatisticalComparisonSchema: z.ZodObject<{
160
160
  cohensD: z.ZodNumber;
161
161
  interpretation: z.ZodEnum<{
162
162
  small: "small";
163
- negligible: "negligible";
164
163
  medium: "medium";
164
+ negligible: "negligible";
165
165
  large: "large";
166
166
  }>;
167
167
  }, z.core.$strip>;
@@ -262,8 +262,8 @@ export declare const ComparisonResultSchema: z.ZodObject<{
262
262
  cohensD: z.ZodNumber;
263
263
  interpretation: z.ZodEnum<{
264
264
  small: "small";
265
- negligible: "negligible";
266
265
  medium: "medium";
266
+ negligible: "negligible";
267
267
  large: "large";
268
268
  }>;
269
269
  }, z.core.$strip>;
@@ -400,8 +400,8 @@ export declare const BenchmarkResultSchema: z.ZodObject<{
400
400
  cohensD: z.ZodNumber;
401
401
  interpretation: z.ZodEnum<{
402
402
  small: "small";
403
- negligible: "negligible";
404
403
  medium: "medium";
404
+ negligible: "negligible";
405
405
  large: "large";
406
406
  }>;
407
407
  }, z.core.$strip>;
package/dist/cli.js CHANGED
File without changes
@@ -25,13 +25,18 @@ export declare class ConsolidationPipeline {
25
25
  constructor(workingMemory: WorkingMemoryLayer, semanticMemory: SemanticMemoryLayer, skillLibrary: SkillLibrary, db: Database.Database);
26
26
  /**
27
27
  * Run full consolidation cycle
28
+ * If namespace is omitted, consolidates all namespaces.
28
29
  */
29
- consolidate(): Promise<ConsolidationStats>;
30
+ consolidate(namespace?: string): Promise<ConsolidationStats>;
30
31
  /**
31
32
  * Extract entities and relationships from memory
32
33
  * Simple keyword-based extraction (will enhance with LLM later)
33
34
  */
34
35
  private extractKnowledge;
36
+ /**
37
+ * Get distinct namespaces from memories table
38
+ */
39
+ private getDistinctNamespaces;
35
40
  /**
36
41
  * Detect simple conflicts (temporal impossibilities, contradictions)
37
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/consolidation/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,EAAE,CAAoB;gBAG5B,aAAa,EAAE,kBAAkB,EACjC,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAQvB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA8DhD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+CvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,YAAY;CAcrB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/consolidation/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,EAAE,CAAoB;gBAG5B,aAAa,EAAE,kBAAkB,EACjC,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAQvB;;;OAGG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoElE;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiDvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwBrB;;OAEG;IACH,OAAO,CAAC,YAAY;CAiBrB"}
@@ -17,8 +17,9 @@ export class ConsolidationPipeline {
17
17
  }
18
18
  /**
19
19
  * Run full consolidation cycle
20
+ * If namespace is omitted, consolidates all namespaces.
20
21
  */
21
- async consolidate() {
22
+ async consolidate(namespace) {
22
23
  const startTime = Date.now();
23
24
  console.error('[CONSOLIDATION] Starting consolidation cycle...');
24
25
  const stats = {
@@ -31,29 +32,34 @@ export class ConsolidationPipeline {
31
32
  duration: 0,
32
33
  };
33
34
  try {
34
- // Step 1: Extract from working memory
35
- const recentMemories = await this.workingMemory.getRecent(100);
36
- stats.memoriesProcessed = recentMemories.length;
37
- for (const memory of recentMemories) {
38
- // Extract entities and relationships
39
- const extracted = this.extractKnowledge(memory);
40
- for (const entity of extracted.entities) {
41
- this.semanticMemory.upsertEntity(entity);
42
- stats.entitiesExtracted++;
43
- }
44
- for (const rel of extracted.relationships) {
45
- this.semanticMemory.upsertRelationship(rel);
46
- stats.relationshipsCreated++;
35
+ // Determine namespaces to consolidate
36
+ const namespacesToProcess = namespace
37
+ ? [namespace]
38
+ : this.getDistinctNamespaces();
39
+ for (const ns of namespacesToProcess) {
40
+ // Step 1: Extract from working memory
41
+ const recentMemories = await this.workingMemory.getRecent(100, ns);
42
+ stats.memoriesProcessed += recentMemories.length;
43
+ for (const memory of recentMemories) {
44
+ const extracted = this.extractKnowledge(memory);
45
+ for (const entity of extracted.entities) {
46
+ this.semanticMemory.upsertEntity(entity, ns);
47
+ stats.entitiesExtracted++;
48
+ }
49
+ for (const rel of extracted.relationships) {
50
+ this.semanticMemory.upsertRelationship(rel, ns);
51
+ stats.relationshipsCreated++;
52
+ }
47
53
  }
54
+ // Step 2: Apply temporal decay
55
+ this.semanticMemory.applyTemporalDecay(ns);
56
+ // Step 3: Detect conflicts
57
+ stats.conflictsDetected += this.detectConflicts(ns);
58
+ // Step 4: Prune low-value memories
59
+ stats.memoriesPruned += this.pruneMemories(ns);
60
+ // Step 5: Extract skills (simplified)
61
+ stats.skillsExtracted += this.extractSkills(recentMemories, ns);
48
62
  }
49
- // Step 2: Apply temporal decay
50
- this.semanticMemory.applyTemporalDecay();
51
- // Step 3: Detect conflicts
52
- stats.conflictsDetected = this.detectConflicts();
53
- // Step 4: Prune low-value memories
54
- stats.memoriesPruned = this.pruneMemories();
55
- // Step 5: Extract skills (simplified)
56
- stats.skillsExtracted = this.extractSkills(recentMemories);
57
63
  // Step 6: Create backup
58
64
  this.createBackup();
59
65
  stats.duration = Date.now() - startTime;
@@ -102,10 +108,19 @@ export class ConsolidationPipeline {
102
108
  }
103
109
  return { entities, relationships };
104
110
  }
111
+ /**
112
+ * Get distinct namespaces from memories table
113
+ */
114
+ getDistinctNamespaces() {
115
+ const rows = this.db.prepare("SELECT DISTINCT namespace FROM memories WHERE namespace IS NOT NULL").all();
116
+ if (rows.length === 0)
117
+ return ['default'];
118
+ return rows.map(r => r.namespace);
119
+ }
105
120
  /**
106
121
  * Detect simple conflicts (temporal impossibilities, contradictions)
107
122
  */
108
- detectConflicts() {
123
+ detectConflicts(namespace = 'default') {
109
124
  let detected = 0;
110
125
  // Temporal conflicts: same property, overlapping time ranges, different values
111
126
  const conflicts = this.db.prepare(`
@@ -116,16 +131,17 @@ export class ConsolidationPipeline {
116
131
  AND f1.value != f2.value
117
132
  AND f1.valid_until IS NULL
118
133
  AND f2.valid_until IS NULL
119
- `).all();
134
+ AND f1.namespace = ? AND f2.namespace = ?
135
+ `).all(namespace, namespace);
120
136
  for (const conflict of conflicts) {
121
137
  // Check if already flagged
122
138
  const existing = this.db.prepare('SELECT * FROM conflicts WHERE fact_id_1 = ? AND fact_id_2 = ?').get(conflict.id1, conflict.id2);
123
139
  if (!existing) {
124
140
  const conflictId = 'conflict_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
125
141
  this.db.prepare(`
126
- INSERT INTO conflicts (id, fact_id_1, fact_id_2, conflict_type, description, severity, resolution_status)
127
- VALUES (?, ?, ?, ?, ?, ?, ?)
128
- `).run(conflictId, conflict.id1, conflict.id2, 'contradiction', `Conflicting values for ${conflict.property}: "${conflict.val1}" vs "${conflict.val2}"`, 'medium', 'flagged');
142
+ INSERT INTO conflicts (id, fact_id_1, fact_id_2, conflict_type, description, severity, resolution_status, namespace)
143
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
144
+ `).run(conflictId, conflict.id1, conflict.id2, 'contradiction', `Conflicting values for ${conflict.property}: "${conflict.val1}" vs "${conflict.val2}"`, 'medium', 'flagged', namespace);
129
145
  // Lower confidence on both facts
130
146
  this.db.prepare('UPDATE facts SET confidence = 0.5 WHERE id = ?').run(conflict.id1);
131
147
  this.db.prepare('UPDATE facts SET confidence = 0.5 WHERE id = ?').run(conflict.id2);
@@ -137,7 +153,7 @@ export class ConsolidationPipeline {
137
153
  /**
138
154
  * Prune low-value memories
139
155
  */
140
- pruneMemories() {
156
+ pruneMemories(namespace = 'default') {
141
157
  // Find relationships to prune (weak relationships with low-access entities)
142
158
  const toPrune = this.db.prepare(`
143
159
  SELECT r.id
@@ -147,7 +163,8 @@ export class ConsolidationPipeline {
147
163
  WHERE r.strength < 0.05
148
164
  AND source.access_count < 3
149
165
  AND target.access_count < 3
150
- `).all();
166
+ AND r.namespace = ?
167
+ `).all(namespace);
151
168
  // Delete them
152
169
  let deleted = 0;
153
170
  for (const row of toPrune) {
@@ -159,20 +176,20 @@ export class ConsolidationPipeline {
159
176
  /**
160
177
  * Extract skills from positive interactions
161
178
  */
162
- extractSkills(memories) {
179
+ extractSkills(memories, namespace = 'default') {
163
180
  let extracted = 0;
164
181
  for (const memory of memories) {
165
182
  // Look for repeated patterns
166
183
  if (memory.topics && memory.topics.includes('analysis')) {
167
184
  // Check if skill already exists
168
- const existing = this.skillLibrary.search('data analysis', 1);
185
+ const existing = this.skillLibrary.search('data analysis', 1, namespace);
169
186
  if (existing.length === 0) {
170
187
  this.skillLibrary.addSkill({
171
188
  name: 'Data Analysis',
172
189
  description: 'Analyze datasets and provide insights',
173
190
  category: 'analysis',
174
191
  triggers: ['analyze', 'data', 'insights'],
175
- });
192
+ }, namespace);
176
193
  extracted++;
177
194
  }
178
195
  }
@@ -184,10 +201,11 @@ export class ConsolidationPipeline {
184
201
  */
185
202
  createBackup() {
186
203
  const backupId = 'backup_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
204
+ const now = new Date().toISOString();
187
205
  this.db.prepare(`
188
- INSERT INTO backup_metadata (id, backup_type, backup_path, created_at, expires_at)
189
- VALUES (?, ?, ?, ?, ?)
190
- `).run(backupId, 'consolidation', './backups/' + backupId + '.db', new Date().toISOString(), new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString());
206
+ INSERT INTO backup_metadata (id, backup_timestamp, backup_type, status, backup_path, created_at, expires_at)
207
+ VALUES (?, ?, ?, ?, ?, ?, ?)
208
+ `).run(backupId, now, 'consolidation', 'completed', './backups/' + backupId + '.db', now, new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString());
191
209
  }
192
210
  }
193
211
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/consolidation/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/consolidation/pipeline.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Semantic Memory Layer - v3.0 Implementation
3
3
  *
4
4
  * SQLite knowledge graph with HippoRAG Personalized PageRank.
5
+ * v0.5.0: Added namespace parameter for multi-agent isolation.
5
6
  */
6
7
  import Database from 'better-sqlite3';
7
8
  export interface Entity {
@@ -48,29 +49,18 @@ export declare class SemanticMemoryLayer {
48
49
  upsertEntity(entity: Partial<Entity> & {
49
50
  name: string;
50
51
  type: string;
51
- }): Entity;
52
- getEntity(name: string): any | null;
52
+ }, namespace?: string): Entity;
53
+ getEntity(name: string, namespace?: string): any | null;
53
54
  upsertRelationship(rel: {
54
55
  sourceId: string;
55
56
  targetId: string;
56
57
  relationType: string;
57
58
  strength?: number;
58
- }): void;
59
- personalizedPageRank(entityId: string, depth?: number): any[];
60
- /**
61
- * Enhanced Personalized PageRank with fact retrieval for multi-hop reasoning.
62
- *
63
- * Returns both entities AND their associated facts along the traversal path,
64
- * enabling multi-hop query answering (e.g., "What protocol does Vesper follow?"
65
- * can chain Vesper -> MCP -> "Model Context Protocol").
66
- *
67
- * @param entityId - Starting entity ID for traversal
68
- * @param depth - Maximum hops to traverse (default: 3 for multi-hop queries)
69
- * @returns PageRankWithFactsResult containing entities, facts, paths, and chains
70
- */
71
- personalizedPageRankWithFacts(entityId: string, depth?: number): PageRankWithFactsResult;
72
- applyTemporalDecay(): number;
73
- getPreferences(domain?: string): any[];
74
- getByTimeRange(start?: Date, end?: Date): any[];
59
+ }, namespace?: string): void;
60
+ personalizedPageRank(entityId: string, depth?: number, namespace?: string): any[];
61
+ personalizedPageRankWithFacts(entityId: string, depth?: number, namespace?: string): PageRankWithFactsResult;
62
+ applyTemporalDecay(namespace?: string): number;
63
+ getPreferences(domain?: string, namespace?: string): any[];
64
+ getByTimeRange(start?: Date, end?: Date, namespace?: string): any[];
75
65
  }
76
66
  //# sourceMappingURL=semantic-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-memory.d.ts","sourceRoot":"","sources":["../../src/memory-layers/semantic-memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAiC9E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAcnC,kBAAkB,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAuB9G,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,GAAG,EAAE;IAmChE;;;;;;;;;;OAUG;IACH,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,uBAAuB;IAyI3F,kBAAkB,IAAI,MAAM;IAgB5B,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAStC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE;CAgBhD"}
1
+ {"version":3,"file":"semantic-memory.d.ts","sourceRoot":"","sources":["../../src/memory-layers/semantic-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,GAAE,MAAkB,GAAG,MAAM;IAiC7G,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,GAAG,GAAG,IAAI;IAclE,kBAAkB,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,GAAE,MAAkB,GAAG,IAAI;IAuB7I,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,SAAS,GAAE,MAAkB,GAAG,GAAG,EAAE;IAmC/F,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,SAAS,GAAE,MAAkB,GAAG,uBAAuB;IA4H1H,kBAAkB,CAAC,SAAS,GAAE,MAAkB,GAAG,MAAM;IAezD,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,GAAG,EAAE;IASrE,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAE,MAAkB,GAAG,GAAG,EAAE;CAgB/E"}