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.
- package/CHANGELOG.md +57 -3
- package/LICENSE +59 -0
- package/README.md +420 -23
- package/config/migrations/001_add_skill_summary.sql +75 -0
- package/config/migrations/001_rollback_skill_summary.sql +60 -0
- package/config/sqlite-schema.sql +68 -4
- package/dist/benchmark/types.d.ts +4 -4
- package/dist/cli.js +0 -0
- package/dist/consolidation/pipeline.d.ts +6 -1
- package/dist/consolidation/pipeline.d.ts.map +1 -1
- package/dist/consolidation/pipeline.js +53 -35
- package/dist/consolidation/pipeline.js.map +1 -1
- package/dist/memory-layers/semantic-memory.d.ts +9 -19
- package/dist/memory-layers/semantic-memory.d.ts.map +1 -1
- package/dist/memory-layers/semantic-memory.js +31 -54
- package/dist/memory-layers/semantic-memory.js.map +1 -1
- package/dist/memory-layers/skill-lazy-loading.d.ts +160 -0
- package/dist/memory-layers/skill-lazy-loading.d.ts.map +1 -0
- package/dist/memory-layers/skill-lazy-loading.js +247 -0
- package/dist/memory-layers/skill-lazy-loading.js.map +1 -0
- package/dist/memory-layers/skill-library.d.ts +133 -4
- package/dist/memory-layers/skill-library.d.ts.map +1 -1
- package/dist/memory-layers/skill-library.js +427 -8
- package/dist/memory-layers/skill-library.js.map +1 -1
- package/dist/memory-layers/working-memory.d.ts +35 -14
- package/dist/memory-layers/working-memory.d.ts.map +1 -1
- package/dist/memory-layers/working-memory.js +114 -36
- package/dist/memory-layers/working-memory.js.map +1 -1
- package/dist/retrieval/hybrid-search.d.ts +2 -2
- package/dist/retrieval/hybrid-search.d.ts.map +1 -1
- package/dist/retrieval/hybrid-search.js +4 -3
- package/dist/retrieval/hybrid-search.js.map +1 -1
- package/dist/router/smart-router.d.ts +25 -0
- package/dist/router/smart-router.d.ts.map +1 -1
- package/dist/router/smart-router.js +90 -10
- package/dist/router/smart-router.js.map +1 -1
- package/dist/scheduler/consolidation-scheduler.d.ts +129 -0
- package/dist/scheduler/consolidation-scheduler.d.ts.map +1 -0
- package/dist/scheduler/consolidation-scheduler.js +179 -0
- package/dist/scheduler/consolidation-scheduler.js.map +1 -0
- package/dist/scheduler/index.d.ts +7 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +7 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/server-wrapper.js +0 -0
- package/dist/server.js +879 -28
- package/dist/server.js.map +1 -1
- package/dist/synthesis/conflict-detector.d.ts +4 -6
- package/dist/synthesis/conflict-detector.d.ts.map +1 -1
- package/dist/synthesis/conflict-detector.js +19 -21
- package/dist/synthesis/conflict-detector.js.map +1 -1
- package/dist/utils/validation.d.ts +123 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +146 -7
- package/dist/utils/validation.js.map +1 -1
- package/docker-compose.yml +6 -6
- package/embedding-service/README.md +8 -0
- package/package.json +4 -2
- package/scripts/FRESH_INSTALL.md +1 -1
- package/scripts/ensure-infrastructure.sh +86 -26
- package/scripts/health-check.sh +2 -1
- package/scripts/stop-infrastructure.sh +23 -0
- 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
|
package/config/sqlite-schema.sql
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
-
//
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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',
|
|
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":"AAAA;;;;;GAKG;AAiBH,MAAM,OAAO,qBAAqB;IACxB,aAAa,CAAqB;IAClC,cAAc,CAAsB;IACpC,YAAY,CAAe;IAC3B,EAAE,CAAoB;IAE9B,YACE,aAAiC,EACjC,cAAmC,EACnC,YAA0B,EAC1B,EAAqB;QAErB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
|
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"}
|