@danielsimonjr/memory-mcp 11.0.1 → 11.1.1

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 (172) hide show
  1. package/LICENSE +22 -22
  2. package/dist/core/EntityManager.d.ts +10 -15
  3. package/dist/core/EntityManager.d.ts.map +1 -1
  4. package/dist/core/EntityManager.js +21 -54
  5. package/dist/core/GraphStorage.d.ts +0 -51
  6. package/dist/core/GraphStorage.d.ts.map +1 -1
  7. package/dist/core/GraphStorage.js +2 -79
  8. package/dist/core/GraphTraversal.d.ts +2 -7
  9. package/dist/core/GraphTraversal.d.ts.map +1 -1
  10. package/dist/core/GraphTraversal.js +2 -19
  11. package/dist/core/ManagerContext.d.ts +0 -4
  12. package/dist/core/ManagerContext.d.ts.map +1 -1
  13. package/dist/core/ManagerContext.js +2 -12
  14. package/dist/core/RelationManager.d.ts.map +1 -1
  15. package/dist/core/RelationManager.js +4 -5
  16. package/dist/core/SQLiteStorage.d.ts.map +1 -1
  17. package/dist/core/SQLiteStorage.js +2 -3
  18. package/dist/core/TransactionManager.d.ts +2 -207
  19. package/dist/core/TransactionManager.d.ts.map +1 -1
  20. package/dist/core/TransactionManager.js +6 -482
  21. package/dist/core/index.d.ts +1 -2
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +1 -3
  24. package/dist/features/ArchiveManager.d.ts +2 -14
  25. package/dist/features/ArchiveManager.d.ts.map +1 -1
  26. package/dist/features/ArchiveManager.js +3 -44
  27. package/dist/features/CompressionManager.d.ts +4 -14
  28. package/dist/features/CompressionManager.d.ts.map +1 -1
  29. package/dist/features/CompressionManager.js +9 -74
  30. package/dist/features/IOManager.d.ts +2 -6
  31. package/dist/features/IOManager.d.ts.map +1 -1
  32. package/dist/features/IOManager.js +10 -105
  33. package/dist/features/StreamingExporter.d.ts +4 -27
  34. package/dist/features/StreamingExporter.d.ts.map +1 -1
  35. package/dist/features/StreamingExporter.js +4 -65
  36. package/dist/features/index.d.ts +0 -2
  37. package/dist/features/index.d.ts.map +1 -1
  38. package/dist/features/index.js +0 -3
  39. package/dist/search/EmbeddingService.d.ts +9 -108
  40. package/dist/search/EmbeddingService.d.ts.map +1 -1
  41. package/dist/search/EmbeddingService.js +15 -187
  42. package/dist/search/FuzzySearch.js +1 -1
  43. package/dist/search/SavedSearchManager.d.ts.map +1 -1
  44. package/dist/search/SavedSearchManager.js +2 -3
  45. package/dist/search/SearchManager.d.ts +1 -42
  46. package/dist/search/SearchManager.d.ts.map +1 -1
  47. package/dist/search/SearchManager.js +0 -115
  48. package/dist/search/SemanticSearch.d.ts +1 -4
  49. package/dist/search/SemanticSearch.d.ts.map +1 -1
  50. package/dist/search/SemanticSearch.js +2 -12
  51. package/dist/search/TFIDFIndexManager.d.ts +0 -88
  52. package/dist/search/TFIDFIndexManager.d.ts.map +1 -1
  53. package/dist/search/TFIDFIndexManager.js +0 -217
  54. package/dist/search/index.d.ts +1 -18
  55. package/dist/search/index.d.ts.map +1 -1
  56. package/dist/search/index.js +1 -32
  57. package/dist/server/MCPServer.d.ts.map +1 -1
  58. package/dist/server/MCPServer.js +4 -1
  59. package/dist/server/responseCompressor.js +5 -5
  60. package/dist/server/toolDefinitions.d.ts.map +1 -1
  61. package/dist/server/toolDefinitions.js +5 -1
  62. package/dist/server/toolHandlers.d.ts +9 -5
  63. package/dist/server/toolHandlers.d.ts.map +1 -1
  64. package/dist/server/toolHandlers.js +23 -8
  65. package/dist/types/index.d.ts +1 -1
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/types.d.ts +2 -579
  68. package/dist/types/types.d.ts.map +1 -1
  69. package/dist/utils/compressedCache.d.ts +0 -29
  70. package/dist/utils/compressedCache.d.ts.map +1 -1
  71. package/dist/utils/compressedCache.js +0 -39
  72. package/dist/utils/entityUtils.d.ts +1 -59
  73. package/dist/utils/entityUtils.d.ts.map +1 -1
  74. package/dist/utils/entityUtils.js +3 -113
  75. package/dist/utils/errors.d.ts +0 -18
  76. package/dist/utils/errors.d.ts.map +1 -1
  77. package/dist/utils/errors.js +0 -24
  78. package/dist/utils/index.d.ts +2 -6
  79. package/dist/utils/index.d.ts.map +1 -1
  80. package/dist/utils/index.js +2 -14
  81. package/dist/utils/logger.d.ts +0 -7
  82. package/dist/utils/logger.d.ts.map +1 -1
  83. package/dist/utils/logger.js +2 -9
  84. package/dist/utils/parallelUtils.d.ts +1 -5
  85. package/dist/utils/parallelUtils.d.ts.map +1 -1
  86. package/dist/utils/parallelUtils.js +1 -23
  87. package/dist/utils/schemas.d.ts +16 -16
  88. package/dist/utils/schemas.d.ts.map +1 -1
  89. package/dist/utils/schemas.js +12 -12
  90. package/dist/utils/taskScheduler.d.ts +0 -4
  91. package/dist/utils/taskScheduler.d.ts.map +1 -1
  92. package/dist/utils/taskScheduler.js +1 -21
  93. package/dist/workers/WorkerPool.d.ts +81 -0
  94. package/dist/workers/WorkerPool.d.ts.map +1 -0
  95. package/dist/workers/WorkerPool.js +121 -0
  96. package/dist/workers/index.d.ts +1 -1
  97. package/dist/workers/index.d.ts.map +1 -1
  98. package/dist/workers/levenshteinWorker.js +1 -1
  99. package/package.json +1 -4
  100. package/dist/__tests__/file-path.test.js +0 -119
  101. package/dist/__tests__/knowledge-graph.test.js +0 -318
  102. package/dist/core/GraphEventEmitter.d.ts +0 -202
  103. package/dist/core/GraphEventEmitter.d.ts.map +0 -1
  104. package/dist/core/GraphEventEmitter.js +0 -346
  105. package/dist/features/KeywordExtractor.d.ts +0 -61
  106. package/dist/features/KeywordExtractor.d.ts.map +0 -1
  107. package/dist/features/KeywordExtractor.js +0 -126
  108. package/dist/features/ObservationNormalizer.d.ts +0 -90
  109. package/dist/features/ObservationNormalizer.d.ts.map +0 -1
  110. package/dist/features/ObservationNormalizer.js +0 -193
  111. package/dist/memory.jsonl +0 -1
  112. package/dist/search/BM25Search.d.ts +0 -148
  113. package/dist/search/BM25Search.d.ts.map +0 -1
  114. package/dist/search/BM25Search.js +0 -339
  115. package/dist/search/EarlyTerminationManager.d.ts +0 -140
  116. package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
  117. package/dist/search/EarlyTerminationManager.js +0 -279
  118. package/dist/search/EmbeddingCache.d.ts +0 -175
  119. package/dist/search/EmbeddingCache.d.ts.map +0 -1
  120. package/dist/search/EmbeddingCache.js +0 -246
  121. package/dist/search/HybridScorer.d.ts +0 -181
  122. package/dist/search/HybridScorer.d.ts.map +0 -1
  123. package/dist/search/HybridScorer.js +0 -257
  124. package/dist/search/HybridSearchManager.d.ts +0 -80
  125. package/dist/search/HybridSearchManager.d.ts.map +0 -1
  126. package/dist/search/HybridSearchManager.js +0 -187
  127. package/dist/search/IncrementalIndexer.d.ts +0 -201
  128. package/dist/search/IncrementalIndexer.d.ts.map +0 -1
  129. package/dist/search/IncrementalIndexer.js +0 -342
  130. package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
  131. package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
  132. package/dist/search/OptimizedInvertedIndex.js +0 -358
  133. package/dist/search/ParallelSearchExecutor.d.ts +0 -172
  134. package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
  135. package/dist/search/ParallelSearchExecutor.js +0 -309
  136. package/dist/search/QuantizedVectorStore.d.ts +0 -171
  137. package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
  138. package/dist/search/QuantizedVectorStore.js +0 -307
  139. package/dist/search/QueryAnalyzer.d.ts +0 -76
  140. package/dist/search/QueryAnalyzer.d.ts.map +0 -1
  141. package/dist/search/QueryAnalyzer.js +0 -227
  142. package/dist/search/QueryCostEstimator.d.ts +0 -244
  143. package/dist/search/QueryCostEstimator.d.ts.map +0 -1
  144. package/dist/search/QueryCostEstimator.js +0 -652
  145. package/dist/search/QueryPlanCache.d.ts +0 -220
  146. package/dist/search/QueryPlanCache.d.ts.map +0 -1
  147. package/dist/search/QueryPlanCache.js +0 -379
  148. package/dist/search/QueryPlanner.d.ts +0 -58
  149. package/dist/search/QueryPlanner.d.ts.map +0 -1
  150. package/dist/search/QueryPlanner.js +0 -137
  151. package/dist/search/ReflectionManager.d.ts +0 -120
  152. package/dist/search/ReflectionManager.d.ts.map +0 -1
  153. package/dist/search/ReflectionManager.js +0 -231
  154. package/dist/search/SymbolicSearch.d.ts +0 -61
  155. package/dist/search/SymbolicSearch.d.ts.map +0 -1
  156. package/dist/search/SymbolicSearch.js +0 -163
  157. package/dist/search/TFIDFEventSync.d.ts +0 -85
  158. package/dist/search/TFIDFEventSync.d.ts.map +0 -1
  159. package/dist/search/TFIDFEventSync.js +0 -133
  160. package/dist/utils/BatchProcessor.d.ts +0 -271
  161. package/dist/utils/BatchProcessor.d.ts.map +0 -1
  162. package/dist/utils/BatchProcessor.js +0 -376
  163. package/dist/utils/MemoryMonitor.d.ts +0 -176
  164. package/dist/utils/MemoryMonitor.d.ts.map +0 -1
  165. package/dist/utils/MemoryMonitor.js +0 -305
  166. package/dist/utils/WorkerPoolManager.d.ts +0 -233
  167. package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
  168. package/dist/utils/WorkerPoolManager.js +0 -420
  169. package/dist/utils/operationUtils.d.ts +0 -124
  170. package/dist/utils/operationUtils.d.ts.map +0 -1
  171. package/dist/utils/operationUtils.js +0 -175
  172. package/dist/vitest.config.js +0 -13
@@ -2,55 +2,21 @@
2
2
  * Embedding Service
3
3
  *
4
4
  * Phase 4 Sprint 10: Provides embedding abstractions for semantic search.
5
- * Phase 12 Sprint 5: Added query/document prefixes, l2Normalize, mode parameter,
6
- * and batch embedding with progress callback.
7
5
  * Supports multiple providers: OpenAI (cloud) and local (transformers.js).
8
6
  *
9
7
  * @module search/EmbeddingService
10
8
  */
11
- import type { EmbeddingService, EmbeddingConfig, EmbeddingMode } from '../types/index.js';
12
- /**
13
- * Phase 12 Sprint 5: Prefixes for query-optimized embedding encoding.
14
- *
15
- * These prefixes are used to distinguish between query and document embeddings,
16
- * which can improve retrieval performance with asymmetric embedding models.
17
- */
18
- export declare const QUERY_PREFIX = "query: ";
19
- export declare const DOCUMENT_PREFIX = "passage: ";
20
- /**
21
- * Phase 12 Sprint 5: Callback for batch embedding progress.
22
- */
23
- export type EmbeddingProgressCallback = (progress: {
24
- current: number;
25
- total: number;
26
- percentage: number;
27
- }) => void;
28
- /**
29
- * Phase 12 Sprint 5: L2 normalize a vector for cosine similarity.
30
- *
31
- * Normalizes a vector to unit length (magnitude 1), which is required
32
- * for accurate cosine similarity calculations.
33
- *
34
- * @param vector - Input vector to normalize
35
- * @returns L2 normalized vector
36
- *
37
- * @example
38
- * ```typescript
39
- * const normalized = l2Normalize([3, 4]); // [0.6, 0.8]
40
- * ```
41
- */
42
- export declare function l2Normalize(vector: number[]): number[];
9
+ import type { EmbeddingService, EmbeddingConfig } from '../types/index.js';
43
10
  /**
44
11
  * OpenAI Embedding Service
45
12
  *
46
13
  * Uses OpenAI's text-embedding-3-small model for generating embeddings.
47
14
  * Supports single and batch embedding with rate limit handling.
48
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
49
15
  *
50
16
  * @example
51
17
  * ```typescript
52
18
  * const service = new OpenAIEmbeddingService('sk-...');
53
- * const embedding = await service.embed("Hello world", 'query');
19
+ * const embedding = await service.embed("Hello world");
54
20
  * console.log(`Generated ${embedding.length} dimensions`);
55
21
  * ```
56
22
  */
@@ -70,41 +36,20 @@ export declare class OpenAIEmbeddingService implements EmbeddingService {
70
36
  * Check if the service is ready.
71
37
  */
72
38
  isReady(): Promise<boolean>;
73
- /**
74
- * Apply prefix to text based on embedding mode.
75
- *
76
- * @param text - Original text
77
- * @param mode - Embedding mode ('query' or 'document')
78
- * @returns Text with appropriate prefix
79
- */
80
- private applyPrefix;
81
39
  /**
82
40
  * Generate embedding for a single text.
83
41
  *
84
42
  * @param text - Text to embed
85
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
86
43
  * @returns Embedding vector
87
44
  */
88
- embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
45
+ embed(text: string): Promise<number[]>;
89
46
  /**
90
47
  * Generate embeddings for multiple texts in batch.
91
48
  *
92
49
  * @param texts - Array of texts to embed
93
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
94
- * @returns Array of embedding vectors
95
- */
96
- embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
97
- /**
98
- * Generate embeddings with progress callback support.
99
- *
100
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
101
- *
102
- * @param texts - Array of texts to embed
103
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
104
- * @param onProgress - Optional progress callback
105
50
  * @returns Array of embedding vectors
106
51
  */
107
- embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
52
+ embedBatch(texts: string[]): Promise<number[][]>;
108
53
  /**
109
54
  * Internal batch embedding with retry logic.
110
55
  */
@@ -123,7 +68,6 @@ export declare class OpenAIEmbeddingService implements EmbeddingService {
123
68
  *
124
69
  * Uses @xenova/transformers for local embedding generation.
125
70
  * No API calls needed - runs entirely offline after initial model download.
126
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
127
71
  *
128
72
  * Note: Requires @xenova/transformers to be installed as an optional dependency.
129
73
  * If not available, initialization will fail gracefully.
@@ -132,7 +76,7 @@ export declare class OpenAIEmbeddingService implements EmbeddingService {
132
76
  * ```typescript
133
77
  * const service = new LocalEmbeddingService();
134
78
  * await service.initialize();
135
- * const embedding = await service.embed("Hello world", 'query');
79
+ * const embedding = await service.embed("Hello world");
136
80
  * ```
137
81
  */
138
82
  export declare class LocalEmbeddingService implements EmbeddingService {
@@ -161,42 +105,21 @@ export declare class LocalEmbeddingService implements EmbeddingService {
161
105
  * Check if the service is ready.
162
106
  */
163
107
  isReady(): Promise<boolean>;
164
- /**
165
- * Apply prefix to text based on embedding mode.
166
- *
167
- * @param text - Original text
168
- * @param mode - Embedding mode ('query' or 'document')
169
- * @returns Text with appropriate prefix
170
- */
171
- private applyPrefix;
172
108
  /**
173
109
  * Generate embedding for a single text.
174
110
  *
175
111
  * @param text - Text to embed
176
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
177
112
  * @returns Embedding vector
178
113
  */
179
- embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
114
+ embed(text: string): Promise<number[]>;
180
115
  /**
181
116
  * Generate embeddings for multiple texts in batch.
182
117
  * Note: Local processing is done sequentially to avoid memory issues.
183
118
  *
184
119
  * @param texts - Array of texts to embed
185
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
186
- * @returns Array of embedding vectors
187
- */
188
- embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
189
- /**
190
- * Generate embeddings with progress callback support.
191
- *
192
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
193
- *
194
- * @param texts - Array of texts to embed
195
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
196
- * @param onProgress - Optional progress callback
197
120
  * @returns Array of embedding vectors
198
121
  */
199
- embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
122
+ embedBatch(texts: string[]): Promise<number[][]>;
200
123
  /**
201
124
  * Ensure the service is initialized.
202
125
  */
@@ -207,7 +130,6 @@ export declare class LocalEmbeddingService implements EmbeddingService {
207
130
  *
208
131
  * Generates deterministic mock embeddings for testing purposes.
209
132
  * Useful for unit tests that don't need real embeddings.
210
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
211
133
  */
212
134
  export declare class MockEmbeddingService implements EmbeddingService {
213
135
  readonly dimensions: number;
@@ -223,41 +145,20 @@ export declare class MockEmbeddingService implements EmbeddingService {
223
145
  * Check if the service is ready.
224
146
  */
225
147
  isReady(): Promise<boolean>;
226
- /**
227
- * Apply prefix to text based on embedding mode.
228
- *
229
- * @param text - Original text
230
- * @param mode - Embedding mode ('query' or 'document')
231
- * @returns Text with appropriate prefix
232
- */
233
- private applyPrefix;
234
148
  /**
235
149
  * Generate a deterministic mock embedding for a text.
236
150
  *
237
151
  * @param text - Text to embed
238
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
239
152
  * @returns Mock embedding vector
240
153
  */
241
- embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
154
+ embed(text: string): Promise<number[]>;
242
155
  /**
243
156
  * Generate mock embeddings for multiple texts.
244
157
  *
245
158
  * @param texts - Array of texts to embed
246
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
247
- * @returns Array of mock embedding vectors
248
- */
249
- embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
250
- /**
251
- * Generate mock embeddings with progress callback support.
252
- *
253
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
254
- *
255
- * @param texts - Array of texts to embed
256
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
257
- * @param onProgress - Optional progress callback
258
159
  * @returns Array of mock embedding vectors
259
160
  */
260
- embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
161
+ embedBatch(texts: string[]): Promise<number[][]>;
261
162
  /**
262
163
  * Simple string hash function.
263
164
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/search/EmbeddingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/search/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAO3E;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,YAAY;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAS1C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAkBtD;;OAEG;YACW,kBAAkB;IA0DhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAmBD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAuC;IAClE,QAAQ,CAAC,QAAQ,WAAW;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;;OAIG;gBACS,KAAK,CAAC,EAAE,MAAM;IAI1B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAWjC;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAWtD;;OAEG;YACW,iBAAiB;CAKhC;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,UAAU;IAC3B,QAAQ,CAAC,KAAK,gBAAgB;IAE9B;;;;OAIG;gBACS,UAAU,GAAE,MAAY;IAIpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAe5C;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAItD;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,SAAS;CAalB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAoBjG"}
@@ -2,57 +2,21 @@
2
2
  * Embedding Service
3
3
  *
4
4
  * Phase 4 Sprint 10: Provides embedding abstractions for semantic search.
5
- * Phase 12 Sprint 5: Added query/document prefixes, l2Normalize, mode parameter,
6
- * and batch embedding with progress callback.
7
5
  * Supports multiple providers: OpenAI (cloud) and local (transformers.js).
8
6
  *
9
7
  * @module search/EmbeddingService
10
8
  */
11
9
  import { EMBEDDING_DEFAULTS, OPENAI_API_CONFIG, getEmbeddingConfig, } from '../utils/constants.js';
12
- /**
13
- * Phase 12 Sprint 5: Prefixes for query-optimized embedding encoding.
14
- *
15
- * These prefixes are used to distinguish between query and document embeddings,
16
- * which can improve retrieval performance with asymmetric embedding models.
17
- */
18
- export const QUERY_PREFIX = 'query: ';
19
- export const DOCUMENT_PREFIX = 'passage: ';
20
- /**
21
- * Phase 12 Sprint 5: L2 normalize a vector for cosine similarity.
22
- *
23
- * Normalizes a vector to unit length (magnitude 1), which is required
24
- * for accurate cosine similarity calculations.
25
- *
26
- * @param vector - Input vector to normalize
27
- * @returns L2 normalized vector
28
- *
29
- * @example
30
- * ```typescript
31
- * const normalized = l2Normalize([3, 4]); // [0.6, 0.8]
32
- * ```
33
- */
34
- export function l2Normalize(vector) {
35
- let magnitude = 0;
36
- for (const v of vector) {
37
- magnitude += v * v;
38
- }
39
- magnitude = Math.sqrt(magnitude);
40
- if (magnitude === 0 || magnitude === 1) {
41
- return magnitude === 0 ? vector : vector.slice();
42
- }
43
- return vector.map(v => v / magnitude);
44
- }
45
10
  /**
46
11
  * OpenAI Embedding Service
47
12
  *
48
13
  * Uses OpenAI's text-embedding-3-small model for generating embeddings.
49
14
  * Supports single and batch embedding with rate limit handling.
50
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
51
15
  *
52
16
  * @example
53
17
  * ```typescript
54
18
  * const service = new OpenAIEmbeddingService('sk-...');
55
- * const embedding = await service.embed("Hello world", 'query');
19
+ * const embedding = await service.embed("Hello world");
56
20
  * console.log(`Generated ${embedding.length} dimensions`);
57
21
  * ```
58
22
  */
@@ -81,86 +45,36 @@ export class OpenAIEmbeddingService {
81
45
  async isReady() {
82
46
  return !!this.apiKey;
83
47
  }
84
- /**
85
- * Apply prefix to text based on embedding mode.
86
- *
87
- * @param text - Original text
88
- * @param mode - Embedding mode ('query' or 'document')
89
- * @returns Text with appropriate prefix
90
- */
91
- applyPrefix(text, mode = 'document') {
92
- return mode === 'query' ? `${QUERY_PREFIX}${text}` : `${DOCUMENT_PREFIX}${text}`;
93
- }
94
48
  /**
95
49
  * Generate embedding for a single text.
96
50
  *
97
51
  * @param text - Text to embed
98
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
99
52
  * @returns Embedding vector
100
53
  */
101
- async embed(text, mode = 'document') {
102
- const results = await this.embedBatch([text], mode);
54
+ async embed(text) {
55
+ const results = await this.embedBatch([text]);
103
56
  return results[0];
104
57
  }
105
58
  /**
106
59
  * Generate embeddings for multiple texts in batch.
107
60
  *
108
61
  * @param texts - Array of texts to embed
109
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
110
62
  * @returns Array of embedding vectors
111
63
  */
112
- async embedBatch(texts, mode = 'document') {
64
+ async embedBatch(texts) {
113
65
  if (texts.length === 0) {
114
66
  return [];
115
67
  }
116
- // Apply prefix based on mode
117
- const prefixedTexts = texts.map(text => this.applyPrefix(text, mode));
118
68
  // Split into batches if needed
119
69
  const maxBatchSize = EMBEDDING_DEFAULTS.OPENAI_MAX_BATCH_SIZE;
120
70
  const results = [];
121
- for (let i = 0; i < prefixedTexts.length; i += maxBatchSize) {
122
- const batch = prefixedTexts.slice(i, i + maxBatchSize);
71
+ for (let i = 0; i < texts.length; i += maxBatchSize) {
72
+ const batch = texts.slice(i, i + maxBatchSize);
123
73
  const batchResults = await this.embedBatchInternal(batch);
124
74
  results.push(...batchResults);
125
75
  }
126
76
  return results;
127
77
  }
128
- /**
129
- * Generate embeddings with progress callback support.
130
- *
131
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
132
- *
133
- * @param texts - Array of texts to embed
134
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
135
- * @param onProgress - Optional progress callback
136
- * @returns Array of embedding vectors
137
- */
138
- async embedBatchWithProgress(texts, mode = 'document', onProgress) {
139
- if (texts.length === 0) {
140
- return [];
141
- }
142
- // Apply prefix based on mode
143
- const prefixedTexts = texts.map(text => this.applyPrefix(text, mode));
144
- // Split into batches if needed
145
- const maxBatchSize = EMBEDDING_DEFAULTS.OPENAI_MAX_BATCH_SIZE;
146
- const results = [];
147
- const total = prefixedTexts.length;
148
- for (let i = 0; i < prefixedTexts.length; i += maxBatchSize) {
149
- const batch = prefixedTexts.slice(i, i + maxBatchSize);
150
- const batchResults = await this.embedBatchInternal(batch);
151
- results.push(...batchResults);
152
- // Report progress
153
- if (onProgress) {
154
- const current = Math.min(i + maxBatchSize, total);
155
- onProgress({
156
- current,
157
- total,
158
- percentage: Math.round((current / total) * 100),
159
- });
160
- }
161
- }
162
- return results;
163
- }
164
78
  /**
165
79
  * Internal batch embedding with retry logic.
166
80
  */
@@ -234,7 +148,6 @@ export class OpenAIEmbeddingService {
234
148
  *
235
149
  * Uses @xenova/transformers for local embedding generation.
236
150
  * No API calls needed - runs entirely offline after initial model download.
237
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
238
151
  *
239
152
  * Note: Requires @xenova/transformers to be installed as an optional dependency.
240
153
  * If not available, initialization will fail gracefully.
@@ -243,7 +156,7 @@ export class OpenAIEmbeddingService {
243
156
  * ```typescript
244
157
  * const service = new LocalEmbeddingService();
245
158
  * await service.initialize();
246
- * const embedding = await service.embed("Hello world", 'query');
159
+ * const embedding = await service.embed("Hello world");
247
160
  * ```
248
161
  */
249
162
  export class LocalEmbeddingService {
@@ -306,28 +219,16 @@ export class LocalEmbeddingService {
306
219
  }
307
220
  return this.initialized;
308
221
  }
309
- /**
310
- * Apply prefix to text based on embedding mode.
311
- *
312
- * @param text - Original text
313
- * @param mode - Embedding mode ('query' or 'document')
314
- * @returns Text with appropriate prefix
315
- */
316
- applyPrefix(text, mode = 'document') {
317
- return mode === 'query' ? `${QUERY_PREFIX}${text}` : `${DOCUMENT_PREFIX}${text}`;
318
- }
319
222
  /**
320
223
  * Generate embedding for a single text.
321
224
  *
322
225
  * @param text - Text to embed
323
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
324
226
  * @returns Embedding vector
325
227
  */
326
- async embed(text, mode = 'document') {
228
+ async embed(text) {
327
229
  await this.ensureInitialized();
328
- const prefixedText = this.applyPrefix(text, mode);
329
230
  const pipelineFn = this.pipeline;
330
- const output = await pipelineFn(prefixedText, { pooling: 'mean', normalize: true });
231
+ const output = await pipelineFn(text, { pooling: 'mean', normalize: true });
331
232
  return Array.from(output.data);
332
233
  }
333
234
  /**
@@ -335,44 +236,14 @@ export class LocalEmbeddingService {
335
236
  * Note: Local processing is done sequentially to avoid memory issues.
336
237
  *
337
238
  * @param texts - Array of texts to embed
338
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
339
239
  * @returns Array of embedding vectors
340
240
  */
341
- async embedBatch(texts, mode = 'document') {
241
+ async embedBatch(texts) {
342
242
  await this.ensureInitialized();
343
243
  const results = [];
344
244
  for (const text of texts) {
345
- const embedding = await this.embed(text, mode);
346
- results.push(embedding);
347
- }
348
- return results;
349
- }
350
- /**
351
- * Generate embeddings with progress callback support.
352
- *
353
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
354
- *
355
- * @param texts - Array of texts to embed
356
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
357
- * @param onProgress - Optional progress callback
358
- * @returns Array of embedding vectors
359
- */
360
- async embedBatchWithProgress(texts, mode = 'document', onProgress) {
361
- await this.ensureInitialized();
362
- const results = [];
363
- const total = texts.length;
364
- for (let i = 0; i < texts.length; i++) {
365
- const embedding = await this.embed(texts[i], mode);
245
+ const embedding = await this.embed(text);
366
246
  results.push(embedding);
367
- // Report progress
368
- if (onProgress) {
369
- const current = i + 1;
370
- onProgress({
371
- current,
372
- total,
373
- percentage: Math.round((current / total) * 100),
374
- });
375
- }
376
247
  }
377
248
  return results;
378
249
  }
@@ -390,7 +261,6 @@ export class LocalEmbeddingService {
390
261
  *
391
262
  * Generates deterministic mock embeddings for testing purposes.
392
263
  * Useful for unit tests that don't need real embeddings.
393
- * Phase 12 Sprint 5: Added mode parameter and progress callback support.
394
264
  */
395
265
  export class MockEmbeddingService {
396
266
  dimensions;
@@ -410,28 +280,15 @@ export class MockEmbeddingService {
410
280
  async isReady() {
411
281
  return true;
412
282
  }
413
- /**
414
- * Apply prefix to text based on embedding mode.
415
- *
416
- * @param text - Original text
417
- * @param mode - Embedding mode ('query' or 'document')
418
- * @returns Text with appropriate prefix
419
- */
420
- applyPrefix(text, mode = 'document') {
421
- return mode === 'query' ? `${QUERY_PREFIX}${text}` : `${DOCUMENT_PREFIX}${text}`;
422
- }
423
283
  /**
424
284
  * Generate a deterministic mock embedding for a text.
425
285
  *
426
286
  * @param text - Text to embed
427
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
428
287
  * @returns Mock embedding vector
429
288
  */
430
- async embed(text, mode = 'document') {
431
- // Apply prefix based on mode (affects hash for different embeddings per mode)
432
- const prefixedText = this.applyPrefix(text, mode);
289
+ async embed(text) {
433
290
  // Generate deterministic embedding based on text hash
434
- const hash = this.hashString(prefixedText);
291
+ const hash = this.hashString(text);
435
292
  const embedding = [];
436
293
  for (let i = 0; i < this.dimensions; i++) {
437
294
  // Use hash and index to generate deterministic values
@@ -445,39 +302,10 @@ export class MockEmbeddingService {
445
302
  * Generate mock embeddings for multiple texts.
446
303
  *
447
304
  * @param texts - Array of texts to embed
448
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
449
- * @returns Array of mock embedding vectors
450
- */
451
- async embedBatch(texts, mode = 'document') {
452
- return Promise.all(texts.map(text => this.embed(text, mode)));
453
- }
454
- /**
455
- * Generate mock embeddings with progress callback support.
456
- *
457
- * Phase 12 Sprint 5: Added for tracking progress on large batch operations.
458
- *
459
- * @param texts - Array of texts to embed
460
- * @param mode - Embedding mode ('query' or 'document', default: 'document')
461
- * @param onProgress - Optional progress callback
462
305
  * @returns Array of mock embedding vectors
463
306
  */
464
- async embedBatchWithProgress(texts, mode = 'document', onProgress) {
465
- const results = [];
466
- const total = texts.length;
467
- for (let i = 0; i < texts.length; i++) {
468
- const embedding = await this.embed(texts[i], mode);
469
- results.push(embedding);
470
- // Report progress
471
- if (onProgress) {
472
- const current = i + 1;
473
- onProgress({
474
- current,
475
- total,
476
- percentage: Math.round((current / total) * 100),
477
- });
478
- }
479
- }
480
- return results;
307
+ async embedBatch(texts) {
308
+ return Promise.all(texts.map(text => this.embed(text)));
481
309
  }
482
310
  /**
483
311
  * Simple string hash function.
@@ -9,7 +9,7 @@
9
9
  import { levenshteinDistance } from '../utils/index.js';
10
10
  import { SEARCH_LIMITS } from '../utils/constants.js';
11
11
  import { SearchFilterChain } from './SearchFilterChain.js';
12
- import workerpool from '@danielsimonjr/workerpool';
12
+ import workerpool from '@danielsimonjr/workerpool/modern';
13
13
  import { fileURLToPath } from 'url';
14
14
  import { dirname, join, sep } from 'path';
15
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SavedSearchManager.d.ts","sourceRoot":"","sources":["../../src/search/SavedSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,WAAW;gBADX,qBAAqB,EAAE,MAAM,EAC7B,WAAW,EAAE,WAAW;IAGlC;;;;OAIG;YACW,iBAAiB;IAa/B;;;;OAIG;YACW,iBAAiB;IAK/B;;;;;;OAMG;IACG,UAAU,CACd,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,GAC/D,OAAO,CAAC,WAAW,CAAC;IAoBvB;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIjD;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK/D;;;;;;;;OAQG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB/D;;;;;OAKG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAavD;;;;;;;;;OASG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,GAClF,OAAO,CAAC,WAAW,CAAC;CAcxB"}
1
+ {"version":3,"file":"SavedSearchManager.d.ts","sourceRoot":"","sources":["../../src/search/SavedSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,WAAW;gBADX,qBAAqB,EAAE,MAAM,EAC7B,WAAW,EAAE,WAAW;IAGlC;;;;OAIG;YACW,iBAAiB;IAa/B;;;;OAIG;YACW,iBAAiB;IAK/B;;;;;;OAMG;IACG,UAAU,CACd,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,GAC/D,OAAO,CAAC,WAAW,CAAC;IAoBvB;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIjD;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK/D;;;;;;;;OAQG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB/D;;;;;OAKG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAavD;;;;;;;;;OASG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,GAClF,OAAO,CAAC,WAAW,CAAC;CAcxB"}
@@ -6,7 +6,6 @@
6
6
  * @module search/SavedSearchManager
7
7
  */
8
8
  import * as fs from 'fs/promises';
9
- import { sanitizeObject } from '../utils/index.js';
10
9
  /**
11
10
  * Manages saved search queries with usage tracking.
12
11
  */
@@ -138,8 +137,8 @@ export class SavedSearchManager {
138
137
  if (!search) {
139
138
  throw new Error(`Saved search "${name}" not found`);
140
139
  }
141
- // Apply updates (sanitized to prevent prototype pollution)
142
- Object.assign(search, sanitizeObject(updates));
140
+ // Apply updates
141
+ Object.assign(search, updates);
143
142
  await this.saveSavedSearches(searches);
144
143
  return search;
145
144
  }
@@ -6,9 +6,8 @@
6
6
  *
7
7
  * @module search/SearchManager
8
8
  */
9
- import type { KnowledgeGraph, SearchResult, SavedSearch, AutoSearchResult } from '../types/index.js';
9
+ import type { KnowledgeGraph, SearchResult, SavedSearch } from '../types/index.js';
10
10
  import type { GraphStorage } from '../core/GraphStorage.js';
11
- import { QueryCostEstimator } from './QueryCostEstimator.js';
12
11
  /**
13
12
  * Unified search manager providing access to all search types.
14
13
  *
@@ -21,8 +20,6 @@ export declare class SearchManager {
21
20
  private fuzzySearcher;
22
21
  private searchSuggestions;
23
22
  private savedSearchManager;
24
- private storage;
25
- private queryEstimator;
26
23
  constructor(storage: GraphStorage, savedSearchesFilePath: string);
27
24
  /**
28
25
  * Phase 4 Sprint 5: Clear all search caches.
@@ -284,43 +281,5 @@ export declare class SearchManager {
284
281
  * @returns Updated saved search
285
282
  */
286
283
  updateSavedSearch(name: string, updates: Partial<Omit<SavedSearch, 'name' | 'createdAt' | 'useCount' | 'lastUsed'>>): Promise<SavedSearch>;
287
- /**
288
- * Phase 10 Sprint 4: Automatically select and execute the best search method.
289
- *
290
- * Analyzes the query and graph size to determine the optimal search method,
291
- * then executes it and returns both the results and the selection reasoning.
292
- *
293
- * @param query - The search query
294
- * @param limit - Maximum number of results (default: 10)
295
- * @returns AutoSearchResult with selected method, results, and estimates
296
- *
297
- * @example
298
- * ```typescript
299
- * const manager = new SearchManager(storage, savedSearchesPath);
300
- *
301
- * // Let the system choose the best search method
302
- * const result = await manager.autoSearch('software engineer skills');
303
- *
304
- * console.log(`Used ${result.selectedMethod} because: ${result.selectionReason}`);
305
- * console.log(`Found ${result.results.length} results in ${result.executionTimeMs}ms`);
306
- * ```
307
- */
308
- autoSearch(query: string, limit?: number): Promise<AutoSearchResult>;
309
- /**
310
- * Phase 10 Sprint 4: Get cost estimates for all search methods.
311
- *
312
- * Useful for clients that want to display cost information or
313
- * make their own method selection decisions.
314
- *
315
- * @param query - The search query
316
- * @returns Array of cost estimates for all methods
317
- */
318
- getSearchCostEstimates(query: string): Promise<import('../types/index.js').QueryCostEstimate[]>;
319
- /**
320
- * Phase 10 Sprint 4: Get the query cost estimator instance.
321
- *
322
- * @returns The QueryCostEstimator instance
323
- */
324
- getQueryEstimator(): QueryCostEstimator;
325
284
  }
326
285
  //# sourceMappingURL=SearchManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchManager.d.ts","sourceRoot":"","sources":["../../src/search/SearchManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchManager.d.ts","sourceRoot":"","sources":["../../src/search/SearchManager.ts"],"names":[],"mappings":"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"}