vesper-memory 0.5.1 → 0.5.3
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/README.md +85 -18
- package/config/claude-rules/memory-discipline.md +39 -0
- package/config/claude-rules/vesper.md +218 -0
- package/dist/cli.js +59 -0
- package/dist/cli.js.map +1 -1
- package/dist/router/smart-router.d.ts +9 -3
- package/dist/router/smart-router.d.ts.map +1 -1
- package/dist/router/smart-router.js +236 -57
- package/dist/router/smart-router.js.map +1 -1
- package/dist/server.js +127 -2
- package/dist/server.js.map +1 -1
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +13 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -2
- package/dist/cli 2.js +0 -583
- package/dist/cli.d 2.ts +0 -8
- package/dist/cli.d.ts 2.map +0 -1
- package/dist/cli.js 2.map +0 -1
- package/dist/config 2/rate-limits.d.ts +0 -76
- package/dist/config 2/rate-limits.d.ts.map +0 -1
- package/dist/config 2/rate-limits.js +0 -161
- package/dist/config 2/rate-limits.js.map +0 -1
- package/dist/consolidation 2/pipeline.d.ts +0 -52
- package/dist/consolidation 2/pipeline.d.ts.map +0 -1
- package/dist/consolidation 2/pipeline.js +0 -193
- package/dist/consolidation 2/pipeline.js.map +0 -1
- package/dist/embeddings 2/client.d.ts +0 -94
- package/dist/embeddings 2/client.d.ts.map +0 -1
- package/dist/embeddings 2/client.js +0 -144
- package/dist/embeddings 2/client.js.map +0 -1
- package/dist/memory-layers 2/semantic-memory.d.ts +0 -33
- package/dist/memory-layers 2/semantic-memory.d.ts.map +0 -1
- package/dist/memory-layers 2/semantic-memory.js +0 -114
- package/dist/memory-layers 2/semantic-memory.js.map +0 -1
- package/dist/memory-layers 2/skill-library.d.ts +0 -25
- package/dist/memory-layers 2/skill-library.d.ts.map +0 -1
- package/dist/memory-layers 2/skill-library.js +0 -54
- package/dist/memory-layers 2/skill-library.js.map +0 -1
- package/dist/memory-layers 2/working-memory.d.ts +0 -57
- package/dist/memory-layers 2/working-memory.d.ts.map +0 -1
- package/dist/memory-layers 2/working-memory.js +0 -153
- package/dist/memory-layers 2/working-memory.js.map +0 -1
- package/dist/middleware 2/auth.d.ts +0 -287
- package/dist/middleware 2/auth.d.ts.map +0 -1
- package/dist/middleware 2/auth.js +0 -610
- package/dist/middleware 2/auth.js.map +0 -1
- package/dist/monitoring 2/health.d.ts +0 -241
- package/dist/monitoring 2/health.d.ts.map +0 -1
- package/dist/monitoring 2/health.js +0 -649
- package/dist/monitoring 2/health.js.map +0 -1
- package/dist/monitoring 2/metrics.d.ts +0 -153
- package/dist/monitoring 2/metrics.d.ts.map +0 -1
- package/dist/monitoring 2/metrics.js +0 -349
- package/dist/monitoring 2/metrics.js.map +0 -1
- package/dist/retrieval 2/hybrid-search.d.ts +0 -186
- package/dist/retrieval 2/hybrid-search.d.ts.map +0 -1
- package/dist/retrieval 2/hybrid-search.js +0 -327
- package/dist/retrieval 2/hybrid-search.js.map +0 -1
- package/dist/router 2/smart-router.d.ts +0 -111
- package/dist/router 2/smart-router.d.ts.map +0 -1
- package/dist/router 2/smart-router.js +0 -383
- package/dist/router 2/smart-router.js.map +0 -1
- package/dist/security 2/rate-limit-middleware.d.ts +0 -119
- package/dist/security 2/rate-limit-middleware.d.ts.map +0 -1
- package/dist/security 2/rate-limit-middleware.js +0 -193
- package/dist/security 2/rate-limit-middleware.js.map +0 -1
- package/dist/server 2.js +0 -861
- package/dist/server-wrapper 2.js +0 -170
- package/dist/server-wrapper.d 2.ts +0 -12
- package/dist/server-wrapper.d.ts 2.map +0 -1
- package/dist/server-wrapper.js 2.map +0 -1
- package/dist/server.d 2.ts +0 -14
- package/dist/server.d.ts 2.map +0 -1
- package/dist/server.js 2.map +0 -1
- package/dist/synthesis 2/conflict-detector.d.ts +0 -43
- package/dist/synthesis 2/conflict-detector.d.ts.map +0 -1
- package/dist/synthesis 2/conflict-detector.js +0 -125
- package/dist/synthesis 2/conflict-detector.js.map +0 -1
- package/dist/utils 2/monitoring.d.ts +0 -25
- package/dist/utils 2/monitoring.d.ts.map +0 -1
- package/dist/utils 2/monitoring.js +0 -41
- package/dist/utils 2/monitoring.js.map +0 -1
- package/dist/utils 2/rate-limiter.d.ts +0 -97
- package/dist/utils 2/rate-limiter.d.ts.map +0 -1
- package/dist/utils 2/rate-limiter.js +0 -166
- package/dist/utils 2/rate-limiter.js.map +0 -1
- package/dist/utils 2/validation.d.ts +0 -139
- package/dist/utils 2/validation.d.ts.map +0 -1
- package/dist/utils 2/validation.js +0 -195
- package/dist/utils 2/validation.js.map +0 -1
|
@@ -10,11 +10,17 @@
|
|
|
10
10
|
import { WorkingMemoryLayer } from '../memory-layers/working-memory.js';
|
|
11
11
|
import { SemanticMemoryLayer } from '../memory-layers/semantic-memory.js';
|
|
12
12
|
import { SkillLibrary } from '../memory-layers/skill-library.js';
|
|
13
|
+
import { HybridSearchEngine } from '../retrieval/hybrid-search.js';
|
|
14
|
+
import { EmbeddingClient } from '../embeddings/client.js';
|
|
13
15
|
/**
|
|
14
|
-
* Initialize the router with dependencies
|
|
16
|
+
* Initialize the router with all dependencies
|
|
15
17
|
*/
|
|
16
18
|
export declare function init(deps: {
|
|
17
19
|
workingMemory?: WorkingMemoryLayer;
|
|
20
|
+
semanticMemory?: SemanticMemoryLayer;
|
|
21
|
+
hybridSearch?: HybridSearchEngine;
|
|
22
|
+
embeddingClient?: EmbeddingClient;
|
|
23
|
+
sqlite?: any;
|
|
18
24
|
}): void;
|
|
19
25
|
/**
|
|
20
26
|
* Query type enumeration
|
|
@@ -99,7 +105,7 @@ export declare function retrieve(query: string, context: RoutingContext): Promis
|
|
|
99
105
|
* Implementation stub for entity extraction
|
|
100
106
|
* Will later integrate with NER or simple heuristics
|
|
101
107
|
*/
|
|
102
|
-
export declare function extractEntityName(
|
|
108
|
+
export declare function extractEntityName(query: string): string | null;
|
|
103
109
|
/**
|
|
104
110
|
* Extract domain/category from a query
|
|
105
111
|
*
|
|
@@ -120,7 +126,7 @@ export interface TimeRange {
|
|
|
120
126
|
startDate: Date;
|
|
121
127
|
endDate: Date;
|
|
122
128
|
}
|
|
123
|
-
export declare function parseTimeRange(
|
|
129
|
+
export declare function parseTimeRange(query: string): TimeRange | null;
|
|
124
130
|
/**
|
|
125
131
|
* Extract preference domain from a query using regex patterns
|
|
126
132
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-router.d.ts","sourceRoot":"","sources":["../../src/router/smart-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"smart-router.d.ts","sourceRoot":"","sources":["../../src/router/smart-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,22 +8,30 @@
|
|
|
8
8
|
* 4. Fall back to hybrid search for complex queries
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
|
-
* Module-level
|
|
11
|
+
* Module-level dependencies - set via init()
|
|
12
12
|
*/
|
|
13
13
|
let workingMemoryLayer = null;
|
|
14
|
-
/**
|
|
15
|
-
* Module-level semantic memory dependency for preference queries
|
|
16
|
-
*/
|
|
17
14
|
let semanticMemoryLayer = null;
|
|
15
|
+
let skillLibraryLayer = null;
|
|
16
|
+
let hybridSearchEngine = null;
|
|
17
|
+
let embeddingClientInstance = null;
|
|
18
18
|
/**
|
|
19
|
-
* Module-level
|
|
19
|
+
* Module-level SQLite dependency for direct queries
|
|
20
20
|
*/
|
|
21
|
-
let
|
|
21
|
+
let sqliteDb = null;
|
|
22
22
|
/**
|
|
23
|
-
* Initialize the router with dependencies
|
|
23
|
+
* Initialize the router with all dependencies
|
|
24
24
|
*/
|
|
25
25
|
export function init(deps) {
|
|
26
26
|
workingMemoryLayer = deps.workingMemory || null;
|
|
27
|
+
if (deps.semanticMemory)
|
|
28
|
+
semanticMemoryLayer = deps.semanticMemory;
|
|
29
|
+
if (deps.hybridSearch)
|
|
30
|
+
hybridSearchEngine = deps.hybridSearch;
|
|
31
|
+
if (deps.embeddingClient)
|
|
32
|
+
embeddingClientInstance = deps.embeddingClient;
|
|
33
|
+
if (deps.sqlite)
|
|
34
|
+
sqliteDb = deps.sqlite;
|
|
27
35
|
}
|
|
28
36
|
/**
|
|
29
37
|
* Query type enumeration
|
|
@@ -250,14 +258,55 @@ async function checkWorkingMemory(query, _context) {
|
|
|
250
258
|
* @param context - Routing context
|
|
251
259
|
* @returns Entity information
|
|
252
260
|
*/
|
|
253
|
-
async function handleFactualQuery(query,
|
|
261
|
+
async function handleFactualQuery(query, context) {
|
|
254
262
|
console.debug(`[Router] Handling factual query: "${query}"`);
|
|
255
|
-
|
|
256
|
-
// 1
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
263
|
+
const namespace = context.namespace || 'default';
|
|
264
|
+
// Step 1: Extract entity name from query
|
|
265
|
+
const entityName = extractEntityName(query);
|
|
266
|
+
if (entityName && semanticMemoryLayer) {
|
|
267
|
+
try {
|
|
268
|
+
const entity = semanticMemoryLayer.getEntity(entityName, namespace);
|
|
269
|
+
if (entity) {
|
|
270
|
+
const graphResults = semanticMemoryLayer.personalizedPageRankWithFacts(entity.id, 2, namespace);
|
|
271
|
+
const results = [];
|
|
272
|
+
results.push({
|
|
273
|
+
id: entity.id,
|
|
274
|
+
source: "semantic",
|
|
275
|
+
content: `${entity.name} (${entity.type}): ${entity.description || 'No description'}`,
|
|
276
|
+
similarity: 1.0,
|
|
277
|
+
timestamp: new Date(entity.last_accessed || entity.created_at || Date.now()),
|
|
278
|
+
confidence: entity.confidence,
|
|
279
|
+
});
|
|
280
|
+
for (const fact of graphResults.facts.slice(0, 5)) {
|
|
281
|
+
results.push({
|
|
282
|
+
id: fact.id,
|
|
283
|
+
source: "semantic",
|
|
284
|
+
content: `${fact.property}: ${fact.value}`,
|
|
285
|
+
similarity: fact.confidence,
|
|
286
|
+
timestamp: new Date(fact.valid_from || Date.now()),
|
|
287
|
+
confidence: fact.confidence,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
for (const relEntity of graphResults.entities.slice(1, 4)) {
|
|
291
|
+
results.push({
|
|
292
|
+
id: relEntity.id,
|
|
293
|
+
source: "semantic",
|
|
294
|
+
content: `${relEntity.name} (${relEntity.type}): ${relEntity.description || 'Related entity'}`,
|
|
295
|
+
similarity: relEntity.relevanceScore,
|
|
296
|
+
timestamp: new Date(relEntity.last_accessed || relEntity.created_at || Date.now()),
|
|
297
|
+
confidence: relEntity.confidence,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
if (results.length > 0)
|
|
301
|
+
return results;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
console.error(`[Router] Entity lookup failed for "${entityName}":`, err instanceof Error ? err.message : String(err));
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// Fallback: delegate to semantic search
|
|
309
|
+
return fallbackToSemanticSearch(query, namespace, 5);
|
|
261
310
|
}
|
|
262
311
|
/**
|
|
263
312
|
* Handle preference queries
|
|
@@ -287,14 +336,51 @@ async function handlePreferenceQuery(query, context) {
|
|
|
287
336
|
* @param context - Routing context
|
|
288
337
|
* @returns Project-related information via graph traversal
|
|
289
338
|
*/
|
|
290
|
-
async function handleProjectQuery(query,
|
|
339
|
+
async function handleProjectQuery(query, context) {
|
|
291
340
|
console.debug(`[Router] Handling project query: "${query}"`);
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
//
|
|
297
|
-
|
|
341
|
+
const namespace = context.namespace || 'default';
|
|
342
|
+
if (!semanticMemoryLayer) {
|
|
343
|
+
return fallbackToSemanticSearch(query, namespace, 5);
|
|
344
|
+
}
|
|
345
|
+
// Extract project/entity name from query
|
|
346
|
+
const entityName = extractEntityName(query);
|
|
347
|
+
if (entityName) {
|
|
348
|
+
try {
|
|
349
|
+
const entity = semanticMemoryLayer.getEntity(entityName, namespace);
|
|
350
|
+
if (entity) {
|
|
351
|
+
const graphResults = semanticMemoryLayer.personalizedPageRankWithFacts(entity.id, 2, namespace);
|
|
352
|
+
const results = [];
|
|
353
|
+
for (const e of graphResults.entities) {
|
|
354
|
+
results.push({
|
|
355
|
+
id: e.id,
|
|
356
|
+
source: "semantic",
|
|
357
|
+
content: `${e.name} (${e.type}): ${e.description || ''}`,
|
|
358
|
+
similarity: e.relevanceScore,
|
|
359
|
+
timestamp: new Date(e.last_accessed || e.created_at || Date.now()),
|
|
360
|
+
confidence: e.confidence,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
if (graphResults.chains) {
|
|
364
|
+
for (const chain of graphResults.chains) {
|
|
365
|
+
results.push({
|
|
366
|
+
id: chain.targetId,
|
|
367
|
+
source: "semantic",
|
|
368
|
+
content: `[Chain] ${entity.name} -> ${chain.intermediaries.join(' -> ')} -> ${chain.targetName}`,
|
|
369
|
+
similarity: chain.totalScore,
|
|
370
|
+
timestamp: new Date(),
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
if (results.length > 0)
|
|
375
|
+
return results;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
console.error(`[Router] Project graph traversal failed for "${entityName}":`, err instanceof Error ? err.message : String(err));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// Fallback: search memories with project-related content
|
|
383
|
+
return fallbackToSemanticSearch(query, namespace, 5);
|
|
298
384
|
}
|
|
299
385
|
/**
|
|
300
386
|
* Handle temporal queries
|
|
@@ -308,14 +394,35 @@ async function handleProjectQuery(query, _context) {
|
|
|
308
394
|
* @param context - Routing context
|
|
309
395
|
* @returns Memories from specified time range
|
|
310
396
|
*/
|
|
311
|
-
async function handleTemporalQuery(query,
|
|
397
|
+
async function handleTemporalQuery(query, context) {
|
|
312
398
|
console.debug(`[Router] Handling temporal query: "${query}"`);
|
|
313
|
-
|
|
314
|
-
// 1
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
399
|
+
const namespace = context.namespace || 'default';
|
|
400
|
+
// Step 1: Parse temporal references
|
|
401
|
+
const timeRange = parseTimeRange(query);
|
|
402
|
+
if (timeRange && sqliteDb) {
|
|
403
|
+
// Step 2: Query memories within time range
|
|
404
|
+
const startMs = timeRange.startDate.getTime();
|
|
405
|
+
const endMs = timeRange.endDate.getTime();
|
|
406
|
+
const rows = sqliteDb.prepare(`
|
|
407
|
+
SELECT id, content, memory_type, created_at, agent_id, task_id
|
|
408
|
+
FROM memories
|
|
409
|
+
WHERE namespace = ? AND created_at >= ? AND created_at <= ?
|
|
410
|
+
ORDER BY created_at DESC
|
|
411
|
+
LIMIT 10
|
|
412
|
+
`).all(namespace, startMs, endMs);
|
|
413
|
+
if (rows.length > 0) {
|
|
414
|
+
return rows.map((row) => ({
|
|
415
|
+
id: row.id,
|
|
416
|
+
source: "semantic",
|
|
417
|
+
content: row.content,
|
|
418
|
+
similarity: 0.9,
|
|
419
|
+
timestamp: new Date(row.created_at),
|
|
420
|
+
confidence: 0.9,
|
|
421
|
+
}));
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
// Fallback to semantic search
|
|
425
|
+
return fallbackToSemanticSearch(query, namespace, 5);
|
|
319
426
|
}
|
|
320
427
|
/**
|
|
321
428
|
* Handle skill queries
|
|
@@ -350,30 +457,11 @@ async function handleSkillQuery(query, context) {
|
|
|
350
457
|
* @param context - Routing context
|
|
351
458
|
* @returns Hybrid search results
|
|
352
459
|
*/
|
|
353
|
-
async function handleComplexQuery(query,
|
|
460
|
+
async function handleComplexQuery(query, context) {
|
|
354
461
|
console.debug(`[Router] Handling complex query with hybrid search: "${query}"`);
|
|
355
|
-
|
|
356
|
-
//
|
|
357
|
-
|
|
358
|
-
// - Sparse: SPLADE++ sparse vectors
|
|
359
|
-
// - Keyword: BM25 tokenization
|
|
360
|
-
//
|
|
361
|
-
// 2. Parallel search in Qdrant:
|
|
362
|
-
// - Dense similarity search (limit: 20)
|
|
363
|
-
// - Sparse similarity search (limit: 20)
|
|
364
|
-
// - BM25 full-text search (limit: 20)
|
|
365
|
-
//
|
|
366
|
-
// 3. Reciprocal Rank Fusion:
|
|
367
|
-
// - Combine ranked lists from three searches
|
|
368
|
-
// - Weight scores using RRF formula with k=60
|
|
369
|
-
//
|
|
370
|
-
// 4. Light reranking:
|
|
371
|
-
// - Use cross-encoder (not ColBERT for speed)
|
|
372
|
-
// - Rerank only top-10 results
|
|
373
|
-
// - Adds ~20ms but significant accuracy gain
|
|
374
|
-
//
|
|
375
|
-
// 5. Return top-5 after reranking
|
|
376
|
-
return [];
|
|
462
|
+
const namespace = context.namespace || 'default';
|
|
463
|
+
// Delegate to semantic search (dense vectors via Qdrant + RRF)
|
|
464
|
+
return fallbackToSemanticSearch(query, namespace, 5);
|
|
377
465
|
}
|
|
378
466
|
/**
|
|
379
467
|
* Extract entity name from a query
|
|
@@ -381,9 +469,23 @@ async function handleComplexQuery(query, _context) {
|
|
|
381
469
|
* Implementation stub for entity extraction
|
|
382
470
|
* Will later integrate with NER or simple heuristics
|
|
383
471
|
*/
|
|
384
|
-
export function extractEntityName(
|
|
385
|
-
|
|
386
|
-
//
|
|
472
|
+
export function extractEntityName(query) {
|
|
473
|
+
const normalizedQuery = query.toLowerCase().trim();
|
|
474
|
+
// Pattern: "What is X?", "Who is X?", "Where is X?"
|
|
475
|
+
const whMatch = normalizedQuery.match(/\b(?:what|who|where)\s+(?:is|was|are|were)\s+(.+)$/i);
|
|
476
|
+
if (whMatch && whMatch[1]) {
|
|
477
|
+
return whMatch[1].trim().replace(/[\?\.\!]+$/, '').replace(/^(the|a|an)\s+/i, '').trim();
|
|
478
|
+
}
|
|
479
|
+
// Pattern: "Tell me about X", "Info on X"
|
|
480
|
+
const aboutMatch = normalizedQuery.match(/\b(?:about|regarding|on)\s+(.+)$/i);
|
|
481
|
+
if (aboutMatch && aboutMatch[1]) {
|
|
482
|
+
return aboutMatch[1].trim().replace(/[\?\.\!]+$/, '').replace(/^(the|a|an)\s+/i, '').trim();
|
|
483
|
+
}
|
|
484
|
+
// Pattern: "X project", "X decision", "working on X"
|
|
485
|
+
const projectMatch = normalizedQuery.match(/\b(?:working on|decided about|building)\s+(.+)$/i);
|
|
486
|
+
if (projectMatch && projectMatch[1]) {
|
|
487
|
+
return projectMatch[1].trim().replace(/[\?\.\!]+$/, '').replace(/^(the|a|an)\s+/i, '').trim();
|
|
488
|
+
}
|
|
387
489
|
return null;
|
|
388
490
|
}
|
|
389
491
|
/**
|
|
@@ -398,9 +500,43 @@ export function extractEntityName(_query) {
|
|
|
398
500
|
export function extractDomain(query) {
|
|
399
501
|
return extractPreferenceDomain(query);
|
|
400
502
|
}
|
|
401
|
-
export function parseTimeRange(
|
|
402
|
-
|
|
403
|
-
|
|
503
|
+
export function parseTimeRange(query) {
|
|
504
|
+
const normalizedQuery = query.toLowerCase().trim();
|
|
505
|
+
const now = new Date();
|
|
506
|
+
const endDate = new Date(now);
|
|
507
|
+
// "yesterday"
|
|
508
|
+
if (/\byesterday\b/.test(normalizedQuery)) {
|
|
509
|
+
const startDate = new Date(now);
|
|
510
|
+
startDate.setDate(startDate.getDate() - 1);
|
|
511
|
+
startDate.setHours(0, 0, 0, 0);
|
|
512
|
+
endDate.setDate(endDate.getDate() - 1);
|
|
513
|
+
endDate.setHours(23, 59, 59, 999);
|
|
514
|
+
return { startDate, endDate };
|
|
515
|
+
}
|
|
516
|
+
// "last week"
|
|
517
|
+
if (/\blast\s+week\b/.test(normalizedQuery)) {
|
|
518
|
+
const startDate = new Date(now);
|
|
519
|
+
startDate.setDate(startDate.getDate() - 7);
|
|
520
|
+
return { startDate, endDate: now };
|
|
521
|
+
}
|
|
522
|
+
// "last month"
|
|
523
|
+
if (/\blast\s+month\b/.test(normalizedQuery)) {
|
|
524
|
+
const startDate = new Date(now);
|
|
525
|
+
startDate.setMonth(startDate.getMonth() - 1);
|
|
526
|
+
return { startDate, endDate: now };
|
|
527
|
+
}
|
|
528
|
+
// "last year"
|
|
529
|
+
if (/\blast\s+year\b/.test(normalizedQuery)) {
|
|
530
|
+
const startDate = new Date(now);
|
|
531
|
+
startDate.setFullYear(startDate.getFullYear() - 1);
|
|
532
|
+
return { startDate, endDate: now };
|
|
533
|
+
}
|
|
534
|
+
// "recently" / "last time" / "earlier" - last 3 days
|
|
535
|
+
if (/\b(recently|last\s+time|earlier)\b/.test(normalizedQuery)) {
|
|
536
|
+
const startDate = new Date(now);
|
|
537
|
+
startDate.setDate(startDate.getDate() - 3);
|
|
538
|
+
return { startDate, endDate: now };
|
|
539
|
+
}
|
|
404
540
|
return null;
|
|
405
541
|
}
|
|
406
542
|
/**
|
|
@@ -444,6 +580,49 @@ export function extractPreferenceDomain(query) {
|
|
|
444
580
|
}
|
|
445
581
|
return null;
|
|
446
582
|
}
|
|
583
|
+
/**
|
|
584
|
+
* Fallback to dense semantic search via embedding + Qdrant
|
|
585
|
+
*
|
|
586
|
+
* Used when specialized handlers can't find results.
|
|
587
|
+
*/
|
|
588
|
+
async function fallbackToSemanticSearch(query, namespace, maxResults) {
|
|
589
|
+
if (!embeddingClientInstance || !hybridSearchEngine) {
|
|
590
|
+
// Last resort: SQL text search
|
|
591
|
+
if (sqliteDb) {
|
|
592
|
+
const rows = sqliteDb.prepare("SELECT id, content, memory_type, created_at FROM memories WHERE namespace = ? ORDER BY created_at DESC LIMIT ?").all(namespace, maxResults);
|
|
593
|
+
return rows.map((row) => ({
|
|
594
|
+
id: row.id,
|
|
595
|
+
source: "semantic",
|
|
596
|
+
content: row.content,
|
|
597
|
+
similarity: 0.5,
|
|
598
|
+
timestamp: new Date(row.created_at),
|
|
599
|
+
}));
|
|
600
|
+
}
|
|
601
|
+
return [];
|
|
602
|
+
}
|
|
603
|
+
try {
|
|
604
|
+
const queryEmbedding = await embeddingClientInstance.embed(query);
|
|
605
|
+
const qdrantFilter = {
|
|
606
|
+
must: [{ key: "namespace", match: { value: namespace } }],
|
|
607
|
+
};
|
|
608
|
+
let searchResults = await hybridSearchEngine.hybridSearch(queryEmbedding, maxResults, qdrantFilter);
|
|
609
|
+
// Backward compat: retry without filter for default namespace
|
|
610
|
+
if (searchResults.length === 0 && namespace === 'default') {
|
|
611
|
+
searchResults = await hybridSearchEngine.hybridSearch(queryEmbedding, maxResults);
|
|
612
|
+
}
|
|
613
|
+
return searchResults.map((r) => ({
|
|
614
|
+
id: r.id,
|
|
615
|
+
source: "hybrid",
|
|
616
|
+
content: r.payload?.content || '',
|
|
617
|
+
similarity: r.fusedScore,
|
|
618
|
+
timestamp: new Date(r.payload?.created_at || Date.now()),
|
|
619
|
+
}));
|
|
620
|
+
}
|
|
621
|
+
catch (err) {
|
|
622
|
+
console.error(`[Router] Semantic search fallback failed:`, err);
|
|
623
|
+
return [];
|
|
624
|
+
}
|
|
625
|
+
}
|
|
447
626
|
/**
|
|
448
627
|
* Initialize the preference handler with semantic memory dependency
|
|
449
628
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-router.js","sourceRoot":"","sources":["../../src/router/smart-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"smart-router.js","sourceRoot":"","sources":["../../src/router/smart-router.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -16,7 +16,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode, } f
|
|
|
16
16
|
import Redis from "ioredis";
|
|
17
17
|
import { createRequire } from "module";
|
|
18
18
|
import { randomUUID } from "crypto";
|
|
19
|
-
import { validateInput, StoreMemoryInputSchema, RetrieveMemoryInputSchema, ListRecentInputSchema, GetStatsInputSchema, RecordSkillOutcomeInputSchema, LoadSkillInputSchema, ShareContextInputSchema, StoreDecisionInputSchema, NamespaceStatsInputSchema, } from "./utils/validation.js";
|
|
19
|
+
import { validateInput, StoreMemoryInputSchema, RetrieveMemoryInputSchema, ListRecentInputSchema, GetStatsInputSchema, DeleteMemoryInputSchema, RecordSkillOutcomeInputSchema, LoadSkillInputSchema, ShareContextInputSchema, StoreDecisionInputSchema, NamespaceStatsInputSchema, } from "./utils/validation.js";
|
|
20
20
|
import { getSqlitePath, ensureDirectories } from "./utils/paths.js";
|
|
21
21
|
import { createEmbeddingClient } from "./embeddings/client.js";
|
|
22
22
|
import { HybridSearchEngine } from "./retrieval/hybrid-search.js";
|
|
@@ -134,6 +134,21 @@ const TOOLS = [
|
|
|
134
134
|
},
|
|
135
135
|
},
|
|
136
136
|
},
|
|
137
|
+
{
|
|
138
|
+
name: "delete_memory",
|
|
139
|
+
description: "Delete a memory entry by ID. Removes from SQLite, Qdrant, Redis, and cleans up orphaned facts.",
|
|
140
|
+
inputSchema: {
|
|
141
|
+
type: "object",
|
|
142
|
+
properties: {
|
|
143
|
+
memory_id: {
|
|
144
|
+
type: "string",
|
|
145
|
+
description: "The ID of the memory to delete",
|
|
146
|
+
},
|
|
147
|
+
namespace: NAMESPACE_PROP,
|
|
148
|
+
},
|
|
149
|
+
required: ["memory_id"],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
137
152
|
{
|
|
138
153
|
name: "vesper_enable",
|
|
139
154
|
description: "Enable the Vesper memory system. Used for A/B benchmarking.",
|
|
@@ -404,9 +419,13 @@ async function initializeConnections() {
|
|
|
404
419
|
else {
|
|
405
420
|
console.error("[WARN] Consolidation pipeline not initialized (missing dependencies)");
|
|
406
421
|
}
|
|
407
|
-
// Initialize Smart Router with
|
|
422
|
+
// Initialize Smart Router with all available dependencies
|
|
408
423
|
SmartRouter.init({
|
|
409
424
|
workingMemory: connections.workingMemory,
|
|
425
|
+
semanticMemory: connections.semanticMemory,
|
|
426
|
+
hybridSearch: connections.hybridSearch,
|
|
427
|
+
embeddingClient: connections.embeddingClient,
|
|
428
|
+
sqlite: connections.sqlite,
|
|
410
429
|
});
|
|
411
430
|
// Initialize skill handler in router
|
|
412
431
|
if (connections.skillLibrary) {
|
|
@@ -820,6 +839,42 @@ async function handleRetrieveMemory(input) {
|
|
|
820
839
|
const validatedInput = validateInput(RetrieveMemoryInputSchema, input);
|
|
821
840
|
const namespace = validatedInput.namespace || 'default';
|
|
822
841
|
const maxResults = validatedInput.max_results || 5;
|
|
842
|
+
// Try SmartRouter first (unless a specific routing_strategy is requested)
|
|
843
|
+
if (!validatedInput.routing_strategy) {
|
|
844
|
+
try {
|
|
845
|
+
const routerContext = {
|
|
846
|
+
userId: 'default',
|
|
847
|
+
conversationId: 'mcp',
|
|
848
|
+
timestamp: new Date(),
|
|
849
|
+
namespace,
|
|
850
|
+
};
|
|
851
|
+
const routerResults = await SmartRouter.retrieve(validatedInput.query, routerContext);
|
|
852
|
+
if (routerResults.length > 0) {
|
|
853
|
+
const classification = SmartRouter.classifyQuery(validatedInput.query);
|
|
854
|
+
console.error(`[INFO] SmartRouter hit: query="${validatedInput.query}", type=${classification.type}, ns=${namespace}, results=${routerResults.length}`);
|
|
855
|
+
return {
|
|
856
|
+
success: true,
|
|
857
|
+
query: validatedInput.query,
|
|
858
|
+
namespace,
|
|
859
|
+
routing_strategy: classification.type,
|
|
860
|
+
results: routerResults.map((r) => ({
|
|
861
|
+
id: r.id,
|
|
862
|
+
content: r.content,
|
|
863
|
+
memory_type: r.source,
|
|
864
|
+
created_at: r.timestamp instanceof Date ? r.timestamp.getTime() : r.timestamp,
|
|
865
|
+
similarity_score: r.similarity,
|
|
866
|
+
confidence: r.confidence,
|
|
867
|
+
})),
|
|
868
|
+
count: routerResults.length,
|
|
869
|
+
};
|
|
870
|
+
}
|
|
871
|
+
// Router returned empty - fall through to direct search
|
|
872
|
+
console.error(`[INFO] SmartRouter returned empty, falling back to direct search for: "${validatedInput.query}"`);
|
|
873
|
+
}
|
|
874
|
+
catch (err) {
|
|
875
|
+
console.error("[WARN] SmartRouter failed, falling back to direct search:", err instanceof Error ? err.message : String(err));
|
|
876
|
+
}
|
|
877
|
+
}
|
|
823
878
|
// Build Qdrant filter for namespace
|
|
824
879
|
const qdrantFilter = {
|
|
825
880
|
must: [
|
|
@@ -1007,6 +1062,74 @@ async function handleGetStats(input) {
|
|
|
1007
1062
|
throw new McpError(ErrorCode.InternalError, `Failed to retrieve stats: ${err instanceof Error ? err.message : String(err)}`);
|
|
1008
1063
|
}
|
|
1009
1064
|
}
|
|
1065
|
+
/**
|
|
1066
|
+
* Handle delete_memory tool call
|
|
1067
|
+
*/
|
|
1068
|
+
async function handleDeleteMemory(input) {
|
|
1069
|
+
if (!connections.sqlite) {
|
|
1070
|
+
throw new McpError(ErrorCode.InternalError, "SQLite database not available");
|
|
1071
|
+
}
|
|
1072
|
+
try {
|
|
1073
|
+
const validatedInput = validateInput(DeleteMemoryInputSchema, input);
|
|
1074
|
+
const namespace = validatedInput.namespace || 'default';
|
|
1075
|
+
// Verify memory exists in SQLite
|
|
1076
|
+
const existing = connections.sqlite.prepare("SELECT id, content, memory_type, created_at FROM memories WHERE id = ? AND namespace = ?").get(validatedInput.memory_id, namespace);
|
|
1077
|
+
if (!existing) {
|
|
1078
|
+
return {
|
|
1079
|
+
success: false,
|
|
1080
|
+
message: `Memory not found: ${validatedInput.memory_id} in namespace '${namespace}'`,
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1083
|
+
// Delete from SQLite memories table
|
|
1084
|
+
connections.sqlite.prepare("DELETE FROM memories WHERE id = ? AND namespace = ?").run(validatedInput.memory_id, namespace);
|
|
1085
|
+
// Delete from Qdrant (best-effort)
|
|
1086
|
+
if (connections.hybridSearch) {
|
|
1087
|
+
try {
|
|
1088
|
+
await connections.hybridSearch.deleteMemory(validatedInput.memory_id);
|
|
1089
|
+
}
|
|
1090
|
+
catch (err) {
|
|
1091
|
+
console.error("[WARN] Failed to delete from Qdrant (continuing):", err instanceof Error ? err.message : String(err));
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
// Delete from Redis (best-effort)
|
|
1095
|
+
if (connections.redis) {
|
|
1096
|
+
try {
|
|
1097
|
+
// Delete the individual working memory key
|
|
1098
|
+
await connections.redis.del(`${namespace}:working:${validatedInput.memory_id}`);
|
|
1099
|
+
// Remove from the recent list
|
|
1100
|
+
await connections.redis.lrem(`${namespace}:working:recent`, 0, validatedInput.memory_id);
|
|
1101
|
+
}
|
|
1102
|
+
catch (err) {
|
|
1103
|
+
console.error("[WARN] Failed to delete from Redis (continuing):", err instanceof Error ? err.message : String(err));
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
// Clean up orphaned facts where source_conversation = memory_id
|
|
1107
|
+
try {
|
|
1108
|
+
connections.sqlite.prepare("DELETE FROM facts WHERE source_conversation = ? AND namespace = ?").run(validatedInput.memory_id, namespace);
|
|
1109
|
+
}
|
|
1110
|
+
catch (err) {
|
|
1111
|
+
console.error("[WARN] Failed to clean up orphaned facts (continuing):", err instanceof Error ? err.message : String(err));
|
|
1112
|
+
}
|
|
1113
|
+
console.error(`[INFO] Memory deleted: ${validatedInput.memory_id} (type: ${existing.memory_type}, ns: ${namespace})`);
|
|
1114
|
+
return {
|
|
1115
|
+
success: true,
|
|
1116
|
+
deleted: {
|
|
1117
|
+
id: existing.id,
|
|
1118
|
+
content: existing.content,
|
|
1119
|
+
memory_type: existing.memory_type,
|
|
1120
|
+
created_at: existing.created_at,
|
|
1121
|
+
},
|
|
1122
|
+
namespace,
|
|
1123
|
+
message: `Memory deleted successfully`,
|
|
1124
|
+
};
|
|
1125
|
+
}
|
|
1126
|
+
catch (err) {
|
|
1127
|
+
if (err instanceof McpError) {
|
|
1128
|
+
throw err;
|
|
1129
|
+
}
|
|
1130
|
+
throw new McpError(ErrorCode.InternalError, `Failed to delete memory: ${err instanceof Error ? err.message : String(err)}`);
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1010
1133
|
/**
|
|
1011
1134
|
* Handle vesper_enable tool call
|
|
1012
1135
|
*/
|
|
@@ -1414,6 +1537,8 @@ async function processTool(name, input) {
|
|
|
1414
1537
|
return await handleListRecent(input);
|
|
1415
1538
|
case "get_stats":
|
|
1416
1539
|
return await handleGetStats(input);
|
|
1540
|
+
case "delete_memory":
|
|
1541
|
+
return await handleDeleteMemory(input);
|
|
1417
1542
|
case "record_skill_outcome":
|
|
1418
1543
|
return await handleRecordSkillOutcome(input);
|
|
1419
1544
|
case "load_skill":
|