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.
Files changed (92) hide show
  1. package/README.md +85 -18
  2. package/config/claude-rules/memory-discipline.md +39 -0
  3. package/config/claude-rules/vesper.md +218 -0
  4. package/dist/cli.js +59 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/router/smart-router.d.ts +9 -3
  7. package/dist/router/smart-router.d.ts.map +1 -1
  8. package/dist/router/smart-router.js +236 -57
  9. package/dist/router/smart-router.js.map +1 -1
  10. package/dist/server.js +127 -2
  11. package/dist/server.js.map +1 -1
  12. package/dist/utils/validation.d.ts +12 -0
  13. package/dist/utils/validation.d.ts.map +1 -1
  14. package/dist/utils/validation.js +13 -0
  15. package/dist/utils/validation.js.map +1 -1
  16. package/package.json +1 -2
  17. package/dist/cli 2.js +0 -583
  18. package/dist/cli.d 2.ts +0 -8
  19. package/dist/cli.d.ts 2.map +0 -1
  20. package/dist/cli.js 2.map +0 -1
  21. package/dist/config 2/rate-limits.d.ts +0 -76
  22. package/dist/config 2/rate-limits.d.ts.map +0 -1
  23. package/dist/config 2/rate-limits.js +0 -161
  24. package/dist/config 2/rate-limits.js.map +0 -1
  25. package/dist/consolidation 2/pipeline.d.ts +0 -52
  26. package/dist/consolidation 2/pipeline.d.ts.map +0 -1
  27. package/dist/consolidation 2/pipeline.js +0 -193
  28. package/dist/consolidation 2/pipeline.js.map +0 -1
  29. package/dist/embeddings 2/client.d.ts +0 -94
  30. package/dist/embeddings 2/client.d.ts.map +0 -1
  31. package/dist/embeddings 2/client.js +0 -144
  32. package/dist/embeddings 2/client.js.map +0 -1
  33. package/dist/memory-layers 2/semantic-memory.d.ts +0 -33
  34. package/dist/memory-layers 2/semantic-memory.d.ts.map +0 -1
  35. package/dist/memory-layers 2/semantic-memory.js +0 -114
  36. package/dist/memory-layers 2/semantic-memory.js.map +0 -1
  37. package/dist/memory-layers 2/skill-library.d.ts +0 -25
  38. package/dist/memory-layers 2/skill-library.d.ts.map +0 -1
  39. package/dist/memory-layers 2/skill-library.js +0 -54
  40. package/dist/memory-layers 2/skill-library.js.map +0 -1
  41. package/dist/memory-layers 2/working-memory.d.ts +0 -57
  42. package/dist/memory-layers 2/working-memory.d.ts.map +0 -1
  43. package/dist/memory-layers 2/working-memory.js +0 -153
  44. package/dist/memory-layers 2/working-memory.js.map +0 -1
  45. package/dist/middleware 2/auth.d.ts +0 -287
  46. package/dist/middleware 2/auth.d.ts.map +0 -1
  47. package/dist/middleware 2/auth.js +0 -610
  48. package/dist/middleware 2/auth.js.map +0 -1
  49. package/dist/monitoring 2/health.d.ts +0 -241
  50. package/dist/monitoring 2/health.d.ts.map +0 -1
  51. package/dist/monitoring 2/health.js +0 -649
  52. package/dist/monitoring 2/health.js.map +0 -1
  53. package/dist/monitoring 2/metrics.d.ts +0 -153
  54. package/dist/monitoring 2/metrics.d.ts.map +0 -1
  55. package/dist/monitoring 2/metrics.js +0 -349
  56. package/dist/monitoring 2/metrics.js.map +0 -1
  57. package/dist/retrieval 2/hybrid-search.d.ts +0 -186
  58. package/dist/retrieval 2/hybrid-search.d.ts.map +0 -1
  59. package/dist/retrieval 2/hybrid-search.js +0 -327
  60. package/dist/retrieval 2/hybrid-search.js.map +0 -1
  61. package/dist/router 2/smart-router.d.ts +0 -111
  62. package/dist/router 2/smart-router.d.ts.map +0 -1
  63. package/dist/router 2/smart-router.js +0 -383
  64. package/dist/router 2/smart-router.js.map +0 -1
  65. package/dist/security 2/rate-limit-middleware.d.ts +0 -119
  66. package/dist/security 2/rate-limit-middleware.d.ts.map +0 -1
  67. package/dist/security 2/rate-limit-middleware.js +0 -193
  68. package/dist/security 2/rate-limit-middleware.js.map +0 -1
  69. package/dist/server 2.js +0 -861
  70. package/dist/server-wrapper 2.js +0 -170
  71. package/dist/server-wrapper.d 2.ts +0 -12
  72. package/dist/server-wrapper.d.ts 2.map +0 -1
  73. package/dist/server-wrapper.js 2.map +0 -1
  74. package/dist/server.d 2.ts +0 -14
  75. package/dist/server.d.ts 2.map +0 -1
  76. package/dist/server.js 2.map +0 -1
  77. package/dist/synthesis 2/conflict-detector.d.ts +0 -43
  78. package/dist/synthesis 2/conflict-detector.d.ts.map +0 -1
  79. package/dist/synthesis 2/conflict-detector.js +0 -125
  80. package/dist/synthesis 2/conflict-detector.js.map +0 -1
  81. package/dist/utils 2/monitoring.d.ts +0 -25
  82. package/dist/utils 2/monitoring.d.ts.map +0 -1
  83. package/dist/utils 2/monitoring.js +0 -41
  84. package/dist/utils 2/monitoring.js.map +0 -1
  85. package/dist/utils 2/rate-limiter.d.ts +0 -97
  86. package/dist/utils 2/rate-limiter.d.ts.map +0 -1
  87. package/dist/utils 2/rate-limiter.js +0 -166
  88. package/dist/utils 2/rate-limiter.js.map +0 -1
  89. package/dist/utils 2/validation.d.ts +0 -139
  90. package/dist/utils 2/validation.d.ts.map +0 -1
  91. package/dist/utils 2/validation.js +0 -195
  92. 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(_query: string): string | null;
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(_query: string): TimeRange | null;
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;AAiBjE;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,oBAAY,SAAS;IACnB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CA0FjE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CAyDzB;AAmND;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAI/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+BpE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAE/E;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC,CAwCzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC,CA4EzB"}
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 dependency - set via init()
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 skill library dependency for skill queries
19
+ * Module-level SQLite dependency for direct queries
20
20
  */
21
- let skillLibraryLayer = null;
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, _context) {
261
+ async function handleFactualQuery(query, context) {
254
262
  console.debug(`[Router] Handling factual query: "${query}"`);
255
- // TODO: Implement factual query handler
256
- // 1. Extract entity name from query (using NER or simple heuristics)
257
- // 2. Lookup entity in semantic memory
258
- // 3. Retrieve related facts and properties
259
- // 4. Return with confidence scores
260
- return [];
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, _context) {
339
+ async function handleProjectQuery(query, context) {
291
340
  console.debug(`[Router] Handling project query: "${query}"`);
292
- // TODO: Implement project query handler
293
- // 1. Extract project entity name from query
294
- // 2. Lookup project entity in semantic memory
295
- // 3. Run HippoRAG personalized PageRank from project node (depth=2)
296
- // 4. Return connected entities and relationships
297
- return [];
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, _context) {
397
+ async function handleTemporalQuery(query, context) {
312
398
  console.debug(`[Router] Handling temporal query: "${query}"`);
313
- // TODO: Implement temporal query handler
314
- // 1. Parse temporal references from query
315
- // 2. Convert to time range (start_date, end_date)
316
- // 3. Query semantic memory for memories in that range
317
- // 4. Apply temporal decay based on specificity
318
- return [];
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, _context) {
460
+ async function handleComplexQuery(query, context) {
354
461
  console.debug(`[Router] Handling complex query with hybrid search: "${query}"`);
355
- // TODO: Implement hybrid search
356
- // 1. Embed query in multiple representations:
357
- // - Dense: BGE-large embeddings
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(_query) {
385
- // TODO: Implement entity extraction
386
- // Current: just return null
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(_query) {
402
- // TODO: Implement temporal reference parsing
403
- // Current: just return null
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 working memory and skill library
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":