@synth-coder/memhub 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +2 -2
  3. package/README.zh-CN.md +1 -1
  4. package/dist/src/contracts/mcp.d.ts +2 -5
  5. package/dist/src/contracts/mcp.d.ts.map +1 -1
  6. package/dist/src/contracts/mcp.js +77 -23
  7. package/dist/src/contracts/mcp.js.map +1 -1
  8. package/dist/src/contracts/schemas.d.ts +67 -76
  9. package/dist/src/contracts/schemas.d.ts.map +1 -1
  10. package/dist/src/contracts/schemas.js +4 -8
  11. package/dist/src/contracts/schemas.js.map +1 -1
  12. package/dist/src/contracts/types.d.ts +1 -4
  13. package/dist/src/contracts/types.d.ts.map +1 -1
  14. package/dist/src/contracts/types.js.map +1 -1
  15. package/dist/src/server/mcp-server.d.ts.map +1 -1
  16. package/dist/src/server/mcp-server.js +21 -4
  17. package/dist/src/server/mcp-server.js.map +1 -1
  18. package/dist/src/services/embedding-service.d.ts +43 -0
  19. package/dist/src/services/embedding-service.d.ts.map +1 -0
  20. package/dist/src/services/embedding-service.js +80 -0
  21. package/dist/src/services/embedding-service.js.map +1 -0
  22. package/dist/src/services/memory-service.d.ts +30 -44
  23. package/dist/src/services/memory-service.d.ts.map +1 -1
  24. package/dist/src/services/memory-service.js +212 -161
  25. package/dist/src/services/memory-service.js.map +1 -1
  26. package/dist/src/storage/vector-index.d.ts +62 -0
  27. package/dist/src/storage/vector-index.d.ts.map +1 -0
  28. package/dist/src/storage/vector-index.js +123 -0
  29. package/dist/src/storage/vector-index.js.map +1 -0
  30. package/package.json +16 -13
  31. package/src/contracts/mcp.ts +84 -29
  32. package/src/contracts/schemas.ts +4 -8
  33. package/src/contracts/types.ts +4 -8
  34. package/src/server/mcp-server.ts +23 -7
  35. package/src/services/embedding-service.ts +114 -0
  36. package/src/services/memory-service.ts +252 -179
  37. package/src/storage/vector-index.ts +160 -0
  38. package/test/server/mcp-server.test.ts +11 -9
  39. package/test/services/memory-service-edge.test.ts +1 -1
  40. package/test/services/memory-service.test.ts +1 -1
  41. package/test/storage/vector-index.test.ts +153 -0
  42. package/vitest.config.ts +3 -1
  43. /package/docs/{proposal-close-gates.md → proposals/proposal-close-gates.md} +0 -0
@@ -1,6 +1,3 @@
1
- /**
2
- * Memory Service - Business logic for memory operations
3
- */
4
1
  import { randomUUID } from 'crypto';
5
2
  import { ErrorCode } from '../contracts/types.js';
6
3
  import { MarkdownStorage, StorageError } from '../storage/markdown-storage.js';
@@ -22,15 +19,99 @@ export class ServiceError extends Error {
22
19
  */
23
20
  export class MemoryService {
24
21
  storage;
22
+ vectorIndex;
23
+ embedding;
24
+ vectorSearchEnabled;
25
25
  constructor(config) {
26
26
  this.storage = new MarkdownStorage({ storagePath: config.storagePath });
27
+ this.vectorSearchEnabled = config.vectorSearch !== false;
28
+ if (this.vectorSearchEnabled) {
29
+ // Lazily resolved at runtime — do not use top-level static imports so that
30
+ // native modules (onnxruntime-node, sharp) are never loaded when vectorSearch=false.
31
+ let resolvedVectorIndex = null;
32
+ let resolvedEmbedding = null;
33
+ // Kick off async initialisation without blocking the constructor.
34
+ // The proxy objects below delegate to the real instances once ready.
35
+ const storagePath = config.storagePath;
36
+ const initPromise = (async () => {
37
+ const [{ VectorIndex }, { EmbeddingService }] = await Promise.all([
38
+ import('../storage/vector-index.js'),
39
+ import('./embedding-service.js'),
40
+ ]);
41
+ resolvedVectorIndex = new VectorIndex(storagePath);
42
+ resolvedEmbedding = EmbeddingService.getInstance();
43
+ })();
44
+ // Lightweight proxy that waits for init before delegating
45
+ this.vectorIndex = {
46
+ upsert: async (memory, vector) => {
47
+ await initPromise;
48
+ return resolvedVectorIndex.upsert(memory, vector);
49
+ },
50
+ delete: async (id) => {
51
+ await initPromise;
52
+ return resolvedVectorIndex.delete(id);
53
+ },
54
+ search: async (vector, limit) => {
55
+ await initPromise;
56
+ return resolvedVectorIndex.search(vector, limit);
57
+ },
58
+ };
59
+ this.embedding = {
60
+ embedMemory: async (title, content) => {
61
+ await initPromise;
62
+ return resolvedEmbedding.embedMemory(title, content);
63
+ },
64
+ embed: async (text) => {
65
+ await initPromise;
66
+ return resolvedEmbedding.embed(text);
67
+ },
68
+ };
69
+ }
70
+ else {
71
+ this.vectorIndex = null;
72
+ this.embedding = null;
73
+ }
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Internal helpers
77
+ // ---------------------------------------------------------------------------
78
+ /**
79
+ * Asynchronously embeds a memory and upserts it into the vector index.
80
+ * Fire-and-forget: failures are logged but do not propagate.
81
+ */
82
+ scheduleVectorUpsert(memory) {
83
+ if (!this.vectorIndex || !this.embedding)
84
+ return;
85
+ const vectorIndex = this.vectorIndex;
86
+ const embedding = this.embedding;
87
+ // Intentionally not awaited
88
+ embedding
89
+ .embedMemory(memory.title, memory.content)
90
+ .then(vec => vectorIndex.upsert(memory, vec))
91
+ .catch(err => {
92
+ // Non-fatal: Markdown file is the source of truth
93
+ console.error('[MemHub] Vector upsert failed (non-fatal):', err);
94
+ });
27
95
  }
96
+ /**
97
+ * Removes a memory from the vector index.
98
+ * Called synchronously (awaited) on delete.
99
+ */
100
+ async removeFromVectorIndex(id) {
101
+ if (!this.vectorIndex)
102
+ return;
103
+ try {
104
+ await this.vectorIndex.delete(id);
105
+ }
106
+ catch (err) {
107
+ console.error('[MemHub] Vector delete failed (non-fatal):', err);
108
+ }
109
+ }
110
+ // ---------------------------------------------------------------------------
111
+ // CRUD operations
112
+ // ---------------------------------------------------------------------------
28
113
  /**
29
114
  * Creates a new memory entry
30
- *
31
- * @param input - Create memory input
32
- * @returns Create result with ID, file path, and memory object
33
- * @throws ServiceError if creation fails
34
115
  */
35
116
  async create(input) {
36
117
  const now = new Date().toISOString();
@@ -47,11 +128,8 @@ export class MemoryService {
47
128
  };
48
129
  try {
49
130
  const filePath = await this.storage.write(memory);
50
- return {
51
- id,
52
- filePath,
53
- memory,
54
- };
131
+ this.scheduleVectorUpsert(memory);
132
+ return { id, filePath, memory };
55
133
  }
56
134
  catch (error) {
57
135
  throw new ServiceError(`Failed to create memory: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
@@ -59,10 +137,6 @@ export class MemoryService {
59
137
  }
60
138
  /**
61
139
  * Reads a memory by ID
62
- *
63
- * @param input - Read memory input
64
- * @returns Memory object
65
- * @throws ServiceError if memory not found
66
140
  */
67
141
  async read(input) {
68
142
  try {
@@ -78,13 +152,8 @@ export class MemoryService {
78
152
  }
79
153
  /**
80
154
  * Updates an existing memory
81
- *
82
- * @param input - Update memory input
83
- * @returns Updated memory object
84
- * @throws ServiceError if memory not found
85
155
  */
86
156
  async update(input) {
87
- // First read the existing memory
88
157
  let existing;
89
158
  try {
90
159
  existing = await this.storage.read(input.id);
@@ -95,7 +164,6 @@ export class MemoryService {
95
164
  }
96
165
  throw new ServiceError(`Failed to read memory for update: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
97
166
  }
98
- // Apply updates
99
167
  const updated = {
100
168
  ...existing,
101
169
  updatedAt: new Date().toISOString(),
@@ -107,6 +175,7 @@ export class MemoryService {
107
175
  };
108
176
  try {
109
177
  await this.storage.write(updated);
178
+ this.scheduleVectorUpsert(updated);
110
179
  return { memory: updated };
111
180
  }
112
181
  catch (error) {
@@ -115,18 +184,12 @@ export class MemoryService {
115
184
  }
116
185
  /**
117
186
  * Deletes a memory by ID
118
- *
119
- * @param input - Delete memory input
120
- * @returns Delete result
121
- * @throws ServiceError if memory not found
122
187
  */
123
188
  async delete(input) {
124
189
  try {
125
190
  const filePath = await this.storage.delete(input.id);
126
- return {
127
- success: true,
128
- filePath,
129
- };
191
+ await this.removeFromVectorIndex(input.id);
192
+ return { success: true, filePath };
130
193
  }
131
194
  catch (error) {
132
195
  if (error instanceof StorageError && error.message.includes('not found')) {
@@ -135,16 +198,15 @@ export class MemoryService {
135
198
  throw new ServiceError(`Failed to delete memory: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
136
199
  }
137
200
  }
201
+ // ---------------------------------------------------------------------------
202
+ // List / Search
203
+ // ---------------------------------------------------------------------------
138
204
  /**
139
205
  * Lists memories with filtering and pagination
140
- *
141
- * @param input - List memory input
142
- * @returns List result with memories, total count, and hasMore flag
143
206
  */
144
207
  async list(input) {
145
208
  try {
146
209
  const files = await this.storage.list();
147
- // Parse all files into memories
148
210
  let memories = [];
149
211
  for (const file of files) {
150
212
  try {
@@ -152,11 +214,9 @@ export class MemoryService {
152
214
  memories.push(memory);
153
215
  }
154
216
  catch {
155
- // Skip invalid files
156
217
  continue;
157
218
  }
158
219
  }
159
- // Apply filters
160
220
  if (input.category) {
161
221
  memories = memories.filter(m => m.category === input.category);
162
222
  }
@@ -169,7 +229,6 @@ export class MemoryService {
169
229
  if (input.toDate) {
170
230
  memories = memories.filter(m => m.createdAt <= input.toDate);
171
231
  }
172
- // Sort
173
232
  const sortBy = input.sortBy ?? 'createdAt';
174
233
  const sortOrder = input.sortOrder ?? 'desc';
175
234
  memories.sort((a, b) => {
@@ -190,16 +249,14 @@ export class MemoryService {
190
249
  }
191
250
  return sortOrder === 'asc' ? comparison : -comparison;
192
251
  });
193
- // Apply pagination
194
252
  const total = memories.length;
195
253
  const limit = input.limit ?? 20;
196
254
  const offset = input.offset ?? 0;
197
255
  const paginatedMemories = memories.slice(offset, offset + limit);
198
- const hasMore = offset + limit < total;
199
256
  return {
200
257
  memories: paginatedMemories,
201
258
  total,
202
- hasMore,
259
+ hasMore: offset + limit < total,
203
260
  };
204
261
  }
205
262
  catch (error) {
@@ -207,104 +264,130 @@ export class MemoryService {
207
264
  }
208
265
  }
209
266
  /**
210
- * Searches memories by query
211
- *
212
- * @param input - Search memory input
213
- * @returns Search results with scores and matches
267
+ * Searches memories by query.
268
+ * Uses vector semantic search when available, falls back to keyword search.
214
269
  */
215
270
  async search(input) {
216
- try {
217
- const listResult = await this.list({
218
- category: input.category,
219
- tags: input.tags,
220
- limit: 1000, // Get all for search
221
- });
222
- const query = input.query.toLowerCase();
223
- const keywords = query.split(/\s+/).filter(k => k.length > 0);
224
- const results = [];
225
- for (const memory of listResult.memories) {
226
- let score = 0;
227
- const matches = [];
228
- // Search in title (higher weight)
229
- const titleLower = memory.title.toLowerCase();
230
- if (titleLower.includes(query)) {
231
- score += 10;
232
- matches.push(memory.title);
233
- }
234
- else {
235
- // Check individual keywords in title
236
- for (const keyword of keywords) {
237
- if (titleLower.includes(keyword)) {
238
- score += 5;
239
- if (!matches.includes(memory.title)) {
240
- matches.push(memory.title);
241
- }
271
+ // --- Vector semantic search path ---
272
+ if (this.vectorSearchEnabled && this.vectorIndex && this.embedding) {
273
+ try {
274
+ const queryVec = await this.embedding.embed(input.query);
275
+ const vectorResults = await this.vectorIndex.search(queryVec, input.limit ?? 10);
276
+ const results = [];
277
+ for (const vr of vectorResults) {
278
+ try {
279
+ const { memory } = await this.read({ id: vr.id });
280
+ // Apply metadata filters
281
+ if (input.category && memory.category !== input.category)
282
+ continue;
283
+ if (input.tags &&
284
+ input.tags.length > 0 &&
285
+ !input.tags.every(t => memory.tags.includes(t))) {
286
+ continue;
242
287
  }
288
+ // Convert cosine distance (0‥2) → similarity score (0‥1)
289
+ const score = Math.max(0, 1 - vr._distance / 2);
290
+ results.push({ memory, score, matches: [memory.title] });
291
+ }
292
+ catch {
293
+ // Memory in index but missing on disk — skip
243
294
  }
244
295
  }
245
- // Search in content
246
- const contentLower = memory.content.toLowerCase();
247
- if (contentLower.includes(query)) {
248
- score += 3;
249
- // Extract matching snippet
250
- const index = contentLower.indexOf(query);
251
- const start = Math.max(0, index - 50);
252
- const end = Math.min(contentLower.length, index + query.length + 50);
253
- const snippet = memory.content.slice(start, end);
254
- matches.push(snippet);
255
- }
256
- else {
257
- // Check individual keywords in content
258
- for (const keyword of keywords) {
259
- if (contentLower.includes(keyword)) {
260
- score += 1;
261
- const index = contentLower.indexOf(keyword);
262
- const start = Math.max(0, index - 30);
263
- const end = Math.min(contentLower.length, index + keyword.length + 30);
264
- const snippet = memory.content.slice(start, end);
265
- if (!matches.some(m => m.includes(snippet))) {
266
- matches.push(snippet);
267
- }
268
- }
296
+ return { results, total: results.length };
297
+ }
298
+ catch (err) {
299
+ // Fall through to keyword search on vector failure
300
+ console.error('[MemHub] Vector search failed, falling back to keyword search:', err);
301
+ }
302
+ }
303
+ // --- Keyword search fallback ---
304
+ return this.keywordSearch(input);
305
+ }
306
+ /**
307
+ * Legacy keyword-based search (used as fallback when vector search is unavailable).
308
+ */
309
+ async keywordSearch(input) {
310
+ const listResult = await this.list({
311
+ category: input.category,
312
+ tags: input.tags,
313
+ limit: 1000,
314
+ });
315
+ const query = input.query.toLowerCase();
316
+ const keywords = query.split(/\s+/).filter(k => k.length > 0);
317
+ const results = [];
318
+ for (const memory of listResult.memories) {
319
+ let score = 0;
320
+ const matches = [];
321
+ const titleLower = memory.title.toLowerCase();
322
+ if (titleLower.includes(query)) {
323
+ score += 10;
324
+ matches.push(memory.title);
325
+ }
326
+ else {
327
+ for (const keyword of keywords) {
328
+ if (titleLower.includes(keyword)) {
329
+ score += 5;
330
+ if (!matches.includes(memory.title))
331
+ matches.push(memory.title);
269
332
  }
270
333
  }
271
- // Search in tags
272
- for (const tag of memory.tags) {
273
- if (tag.toLowerCase().includes(query) || keywords.some(k => tag.toLowerCase().includes(k))) {
274
- score += 2;
275
- matches.push(`Tag: ${tag}`);
334
+ }
335
+ const contentLower = memory.content.toLowerCase();
336
+ if (contentLower.includes(query)) {
337
+ score += 3;
338
+ const index = contentLower.indexOf(query);
339
+ const start = Math.max(0, index - 50);
340
+ const end = Math.min(contentLower.length, index + query.length + 50);
341
+ matches.push(memory.content.slice(start, end));
342
+ }
343
+ else {
344
+ for (const keyword of keywords) {
345
+ if (contentLower.includes(keyword)) {
346
+ score += 1;
347
+ const index = contentLower.indexOf(keyword);
348
+ const start = Math.max(0, index - 30);
349
+ const end = Math.min(contentLower.length, index + keyword.length + 30);
350
+ const snippet = memory.content.slice(start, end);
351
+ if (!matches.some(m => m.includes(snippet)))
352
+ matches.push(snippet);
276
353
  }
277
354
  }
278
- if (score > 0) {
279
- results.push({
280
- memory,
281
- score: Math.min(score / 20, 1), // Normalize to 0-1
282
- matches: matches.slice(0, 3), // Limit matches
283
- });
355
+ }
356
+ for (const tag of memory.tags) {
357
+ if (tag.toLowerCase().includes(query) ||
358
+ keywords.some(k => tag.toLowerCase().includes(k))) {
359
+ score += 2;
360
+ matches.push(`Tag: ${tag}`);
284
361
  }
285
362
  }
286
- // Sort by score descending
287
- results.sort((a, b) => b.score - a.score);
288
- // Apply limit
289
- const limit = input.limit ?? 10;
290
- const limitedResults = results.slice(0, limit);
291
- return {
292
- results: limitedResults,
293
- total: results.length,
294
- };
295
- }
296
- catch (error) {
297
- throw new ServiceError(`Failed to search memories: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
363
+ if (score > 0) {
364
+ results.push({
365
+ memory,
366
+ score: Math.min(score / 20, 1),
367
+ matches: matches.slice(0, 3),
368
+ });
369
+ }
298
370
  }
371
+ results.sort((a, b) => b.score - a.score);
372
+ const limit = input.limit ?? 10;
373
+ return { results: results.slice(0, limit), total: results.length };
299
374
  }
375
+ // ---------------------------------------------------------------------------
376
+ // MCP unified tools
377
+ // ---------------------------------------------------------------------------
300
378
  /**
301
- * memory_load unified read API (STM-first)
379
+ * memory_load unified read API.
380
+ *
381
+ * Requires either `id` (exact lookup) or `query` (semantic search).
382
+ * Calling without either returns an empty result.
302
383
  */
303
384
  async memoryLoad(input) {
385
+ // By-ID lookup
304
386
  if (input.id) {
305
387
  const { memory } = await this.read({ id: input.id });
306
388
  return { items: [memory], total: 1 };
307
389
  }
390
+ // Semantic / keyword search
308
391
  if (input.query) {
309
392
  const searched = await this.search({
310
393
  query: input.query,
@@ -312,31 +395,14 @@ export class MemoryService {
312
395
  tags: input.tags,
313
396
  limit: input.limit,
314
397
  });
315
- let items = searched.results.map(r => r.memory);
316
- if (input.sessionId) {
317
- items = items.filter(m => m.sessionId === input.sessionId);
318
- }
398
+ const items = searched.results.map(r => r.memory);
319
399
  return { items, total: items.length };
320
400
  }
321
- const listResult = await this.list({
322
- category: input.category,
323
- tags: input.tags,
324
- limit: input.limit ?? 20,
325
- sortBy: 'updatedAt',
326
- sortOrder: 'desc',
327
- });
328
- let items = [...listResult.memories];
329
- if (input.sessionId) {
330
- items = items.filter(m => m.sessionId === input.sessionId);
331
- }
332
- if (input.date) {
333
- const date = input.date;
334
- items = items.filter(m => m.createdAt.startsWith(date));
335
- }
336
- return { items, total: items.length };
401
+ // No id and no query — return empty (not supported)
402
+ return { items: [], total: 0 };
337
403
  }
338
404
  /**
339
- * memory_update unified write API (append/upsert)
405
+ * memory_update unified write API (append/upsert)
340
406
  */
341
407
  async memoryUpdate(input) {
342
408
  const now = new Date().toISOString();
@@ -356,6 +422,7 @@ export class MemoryService {
356
422
  entryType: input.entryType,
357
423
  };
358
424
  const filePath = await this.storage.write(updatedMemory);
425
+ this.scheduleVectorUpsert(updatedMemory);
359
426
  return {
360
427
  id: updatedMemory.id,
361
428
  sessionId,
@@ -379,6 +446,7 @@ export class MemoryService {
379
446
  content: input.content,
380
447
  };
381
448
  const filePath = await this.storage.write(createdMemory);
449
+ this.scheduleVectorUpsert(createdMemory);
382
450
  return {
383
451
  id,
384
452
  sessionId,
@@ -388,11 +456,9 @@ export class MemoryService {
388
456
  memory: createdMemory,
389
457
  };
390
458
  }
391
- /**
392
- * Gets all unique categories
393
- *
394
- * @returns Array of category names
395
- */
459
+ // ---------------------------------------------------------------------------
460
+ // Metadata helpers
461
+ // ---------------------------------------------------------------------------
396
462
  async getCategories() {
397
463
  try {
398
464
  const listResult = await this.list({ limit: 1000 });
@@ -400,19 +466,12 @@ export class MemoryService {
400
466
  for (const memory of listResult.memories) {
401
467
  categories.add(memory.category);
402
468
  }
403
- return {
404
- categories: Array.from(categories).sort(),
405
- };
469
+ return { categories: Array.from(categories).sort() };
406
470
  }
407
471
  catch (error) {
408
472
  throw new ServiceError(`Failed to get categories: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
409
473
  }
410
474
  }
411
- /**
412
- * Gets all unique tags
413
- *
414
- * @returns Array of tag names
415
- */
416
475
  async getTags() {
417
476
  try {
418
477
  const listResult = await this.list({ limit: 1000 });
@@ -422,20 +481,12 @@ export class MemoryService {
422
481
  tags.add(tag);
423
482
  }
424
483
  }
425
- return {
426
- tags: Array.from(tags).sort(),
427
- };
484
+ return { tags: Array.from(tags).sort() };
428
485
  }
429
486
  catch (error) {
430
487
  throw new ServiceError(`Failed to get tags: ${error instanceof Error ? error.message : 'Unknown error'}`, ErrorCode.STORAGE_ERROR);
431
488
  }
432
489
  }
433
- /**
434
- * Extracts ID from file content
435
- *
436
- * @param content - File content
437
- * @returns ID string
438
- */
439
490
  extractIdFromContent(content) {
440
491
  const match = content.match(/id:\s*"?([^"\n]+)"?/);
441
492
  if (!match) {
@@ -1 +1 @@
1
- {"version":3,"file":"memory-service.js","sourceRoot":"","sources":["../../../src/services/memory-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-service.js","sourceRoot":"","sources":["../../../src/services/memory-service.ts"],"names":[],"mappings":"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"}