@danielsimonjr/memoryjs 1.0.0 → 1.1.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 (300) hide show
  1. package/README.md +385 -113
  2. package/README.md.backup-1768084780988 +266 -0
  3. package/dist/index.cjs +17364 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +12371 -0
  6. package/dist/index.d.ts +12367 -11
  7. package/dist/index.js +17102 -19
  8. package/dist/index.js.map +1 -1
  9. package/dist/workers/levenshteinWorker.cjs +102 -0
  10. package/dist/workers/levenshteinWorker.cjs.map +1 -0
  11. package/dist/workers/levenshteinWorker.js +57 -91
  12. package/dist/workers/levenshteinWorker.js.map +1 -1
  13. package/package.json +12 -6
  14. package/dist/core/EntityManager.d.ts +0 -268
  15. package/dist/core/EntityManager.d.ts.map +0 -1
  16. package/dist/core/EntityManager.js +0 -512
  17. package/dist/core/EntityManager.js.map +0 -1
  18. package/dist/core/GraphEventEmitter.d.ts +0 -202
  19. package/dist/core/GraphEventEmitter.d.ts.map +0 -1
  20. package/dist/core/GraphEventEmitter.js +0 -347
  21. package/dist/core/GraphEventEmitter.js.map +0 -1
  22. package/dist/core/GraphStorage.d.ts +0 -395
  23. package/dist/core/GraphStorage.d.ts.map +0 -1
  24. package/dist/core/GraphStorage.js +0 -786
  25. package/dist/core/GraphStorage.js.map +0 -1
  26. package/dist/core/GraphTraversal.d.ts +0 -141
  27. package/dist/core/GraphTraversal.d.ts.map +0 -1
  28. package/dist/core/GraphTraversal.js +0 -574
  29. package/dist/core/GraphTraversal.js.map +0 -1
  30. package/dist/core/HierarchyManager.d.ts +0 -111
  31. package/dist/core/HierarchyManager.d.ts.map +0 -1
  32. package/dist/core/HierarchyManager.js +0 -225
  33. package/dist/core/HierarchyManager.js.map +0 -1
  34. package/dist/core/ManagerContext.d.ts +0 -76
  35. package/dist/core/ManagerContext.d.ts.map +0 -1
  36. package/dist/core/ManagerContext.js +0 -129
  37. package/dist/core/ManagerContext.js.map +0 -1
  38. package/dist/core/ObservationManager.d.ts +0 -85
  39. package/dist/core/ObservationManager.d.ts.map +0 -1
  40. package/dist/core/ObservationManager.js +0 -124
  41. package/dist/core/ObservationManager.js.map +0 -1
  42. package/dist/core/RelationManager.d.ts +0 -131
  43. package/dist/core/RelationManager.d.ts.map +0 -1
  44. package/dist/core/RelationManager.js +0 -212
  45. package/dist/core/RelationManager.js.map +0 -1
  46. package/dist/core/SQLiteStorage.d.ts +0 -354
  47. package/dist/core/SQLiteStorage.d.ts.map +0 -1
  48. package/dist/core/SQLiteStorage.js +0 -919
  49. package/dist/core/SQLiteStorage.js.map +0 -1
  50. package/dist/core/StorageFactory.d.ts +0 -45
  51. package/dist/core/StorageFactory.d.ts.map +0 -1
  52. package/dist/core/StorageFactory.js +0 -65
  53. package/dist/core/StorageFactory.js.map +0 -1
  54. package/dist/core/TransactionManager.d.ts +0 -464
  55. package/dist/core/TransactionManager.d.ts.map +0 -1
  56. package/dist/core/TransactionManager.js +0 -869
  57. package/dist/core/TransactionManager.js.map +0 -1
  58. package/dist/core/index.d.ts +0 -17
  59. package/dist/core/index.d.ts.map +0 -1
  60. package/dist/core/index.js +0 -20
  61. package/dist/core/index.js.map +0 -1
  62. package/dist/features/AnalyticsManager.d.ts +0 -44
  63. package/dist/features/AnalyticsManager.d.ts.map +0 -1
  64. package/dist/features/AnalyticsManager.js +0 -224
  65. package/dist/features/AnalyticsManager.js.map +0 -1
  66. package/dist/features/ArchiveManager.d.ts +0 -133
  67. package/dist/features/ArchiveManager.d.ts.map +0 -1
  68. package/dist/features/ArchiveManager.js +0 -282
  69. package/dist/features/ArchiveManager.js.map +0 -1
  70. package/dist/features/CompressionManager.d.ts +0 -119
  71. package/dist/features/CompressionManager.d.ts.map +0 -1
  72. package/dist/features/CompressionManager.js +0 -470
  73. package/dist/features/CompressionManager.js.map +0 -1
  74. package/dist/features/IOManager.d.ts +0 -225
  75. package/dist/features/IOManager.d.ts.map +0 -1
  76. package/dist/features/IOManager.js +0 -1093
  77. package/dist/features/IOManager.js.map +0 -1
  78. package/dist/features/KeywordExtractor.d.ts +0 -61
  79. package/dist/features/KeywordExtractor.d.ts.map +0 -1
  80. package/dist/features/KeywordExtractor.js +0 -127
  81. package/dist/features/KeywordExtractor.js.map +0 -1
  82. package/dist/features/ObservationNormalizer.d.ts +0 -90
  83. package/dist/features/ObservationNormalizer.d.ts.map +0 -1
  84. package/dist/features/ObservationNormalizer.js +0 -194
  85. package/dist/features/ObservationNormalizer.js.map +0 -1
  86. package/dist/features/StreamingExporter.d.ts +0 -128
  87. package/dist/features/StreamingExporter.d.ts.map +0 -1
  88. package/dist/features/StreamingExporter.js +0 -212
  89. package/dist/features/StreamingExporter.js.map +0 -1
  90. package/dist/features/TagManager.d.ts +0 -147
  91. package/dist/features/TagManager.d.ts.map +0 -1
  92. package/dist/features/TagManager.js +0 -211
  93. package/dist/features/TagManager.js.map +0 -1
  94. package/dist/features/index.d.ts +0 -14
  95. package/dist/features/index.d.ts.map +0 -1
  96. package/dist/features/index.js +0 -15
  97. package/dist/features/index.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/search/BM25Search.d.ts +0 -148
  100. package/dist/search/BM25Search.d.ts.map +0 -1
  101. package/dist/search/BM25Search.js +0 -340
  102. package/dist/search/BM25Search.js.map +0 -1
  103. package/dist/search/BasicSearch.d.ts +0 -51
  104. package/dist/search/BasicSearch.d.ts.map +0 -1
  105. package/dist/search/BasicSearch.js +0 -138
  106. package/dist/search/BasicSearch.js.map +0 -1
  107. package/dist/search/BooleanSearch.d.ts +0 -98
  108. package/dist/search/BooleanSearch.d.ts.map +0 -1
  109. package/dist/search/BooleanSearch.js +0 -431
  110. package/dist/search/BooleanSearch.js.map +0 -1
  111. package/dist/search/EarlyTerminationManager.d.ts +0 -140
  112. package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
  113. package/dist/search/EarlyTerminationManager.js +0 -280
  114. package/dist/search/EarlyTerminationManager.js.map +0 -1
  115. package/dist/search/EmbeddingCache.d.ts +0 -175
  116. package/dist/search/EmbeddingCache.d.ts.map +0 -1
  117. package/dist/search/EmbeddingCache.js +0 -247
  118. package/dist/search/EmbeddingCache.js.map +0 -1
  119. package/dist/search/EmbeddingService.d.ts +0 -277
  120. package/dist/search/EmbeddingService.d.ts.map +0 -1
  121. package/dist/search/EmbeddingService.js +0 -531
  122. package/dist/search/EmbeddingService.js.map +0 -1
  123. package/dist/search/FuzzySearch.d.ts +0 -118
  124. package/dist/search/FuzzySearch.d.ts.map +0 -1
  125. package/dist/search/FuzzySearch.js +0 -313
  126. package/dist/search/FuzzySearch.js.map +0 -1
  127. package/dist/search/HybridScorer.d.ts +0 -181
  128. package/dist/search/HybridScorer.d.ts.map +0 -1
  129. package/dist/search/HybridScorer.js +0 -258
  130. package/dist/search/HybridScorer.js.map +0 -1
  131. package/dist/search/HybridSearchManager.d.ts +0 -80
  132. package/dist/search/HybridSearchManager.d.ts.map +0 -1
  133. package/dist/search/HybridSearchManager.js +0 -188
  134. package/dist/search/HybridSearchManager.js.map +0 -1
  135. package/dist/search/IncrementalIndexer.d.ts +0 -201
  136. package/dist/search/IncrementalIndexer.d.ts.map +0 -1
  137. package/dist/search/IncrementalIndexer.js +0 -343
  138. package/dist/search/IncrementalIndexer.js.map +0 -1
  139. package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
  140. package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
  141. package/dist/search/OptimizedInvertedIndex.js +0 -359
  142. package/dist/search/OptimizedInvertedIndex.js.map +0 -1
  143. package/dist/search/ParallelSearchExecutor.d.ts +0 -172
  144. package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
  145. package/dist/search/ParallelSearchExecutor.js +0 -310
  146. package/dist/search/ParallelSearchExecutor.js.map +0 -1
  147. package/dist/search/QuantizedVectorStore.d.ts +0 -171
  148. package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
  149. package/dist/search/QuantizedVectorStore.js +0 -308
  150. package/dist/search/QuantizedVectorStore.js.map +0 -1
  151. package/dist/search/QueryAnalyzer.d.ts +0 -76
  152. package/dist/search/QueryAnalyzer.d.ts.map +0 -1
  153. package/dist/search/QueryAnalyzer.js +0 -228
  154. package/dist/search/QueryAnalyzer.js.map +0 -1
  155. package/dist/search/QueryCostEstimator.d.ts +0 -244
  156. package/dist/search/QueryCostEstimator.d.ts.map +0 -1
  157. package/dist/search/QueryCostEstimator.js +0 -653
  158. package/dist/search/QueryCostEstimator.js.map +0 -1
  159. package/dist/search/QueryPlanCache.d.ts +0 -220
  160. package/dist/search/QueryPlanCache.d.ts.map +0 -1
  161. package/dist/search/QueryPlanCache.js +0 -380
  162. package/dist/search/QueryPlanCache.js.map +0 -1
  163. package/dist/search/QueryPlanner.d.ts +0 -58
  164. package/dist/search/QueryPlanner.d.ts.map +0 -1
  165. package/dist/search/QueryPlanner.js +0 -138
  166. package/dist/search/QueryPlanner.js.map +0 -1
  167. package/dist/search/RankedSearch.d.ts +0 -71
  168. package/dist/search/RankedSearch.d.ts.map +0 -1
  169. package/dist/search/RankedSearch.js +0 -239
  170. package/dist/search/RankedSearch.js.map +0 -1
  171. package/dist/search/ReflectionManager.d.ts +0 -120
  172. package/dist/search/ReflectionManager.d.ts.map +0 -1
  173. package/dist/search/ReflectionManager.js +0 -232
  174. package/dist/search/ReflectionManager.js.map +0 -1
  175. package/dist/search/SavedSearchManager.d.ts +0 -79
  176. package/dist/search/SavedSearchManager.d.ts.map +0 -1
  177. package/dist/search/SavedSearchManager.js +0 -147
  178. package/dist/search/SavedSearchManager.js.map +0 -1
  179. package/dist/search/SearchFilterChain.d.ts +0 -120
  180. package/dist/search/SearchFilterChain.d.ts.map +0 -1
  181. package/dist/search/SearchFilterChain.js +0 -186
  182. package/dist/search/SearchFilterChain.js.map +0 -1
  183. package/dist/search/SearchManager.d.ts +0 -326
  184. package/dist/search/SearchManager.d.ts.map +0 -1
  185. package/dist/search/SearchManager.js +0 -454
  186. package/dist/search/SearchManager.js.map +0 -1
  187. package/dist/search/SearchSuggestions.d.ts +0 -27
  188. package/dist/search/SearchSuggestions.d.ts.map +0 -1
  189. package/dist/search/SearchSuggestions.js +0 -58
  190. package/dist/search/SearchSuggestions.js.map +0 -1
  191. package/dist/search/SemanticSearch.d.ts +0 -149
  192. package/dist/search/SemanticSearch.d.ts.map +0 -1
  193. package/dist/search/SemanticSearch.js +0 -324
  194. package/dist/search/SemanticSearch.js.map +0 -1
  195. package/dist/search/SymbolicSearch.d.ts +0 -61
  196. package/dist/search/SymbolicSearch.d.ts.map +0 -1
  197. package/dist/search/SymbolicSearch.js +0 -164
  198. package/dist/search/SymbolicSearch.js.map +0 -1
  199. package/dist/search/TFIDFEventSync.d.ts +0 -85
  200. package/dist/search/TFIDFEventSync.d.ts.map +0 -1
  201. package/dist/search/TFIDFEventSync.js +0 -134
  202. package/dist/search/TFIDFEventSync.js.map +0 -1
  203. package/dist/search/TFIDFIndexManager.d.ts +0 -151
  204. package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
  205. package/dist/search/TFIDFIndexManager.js +0 -433
  206. package/dist/search/TFIDFIndexManager.js.map +0 -1
  207. package/dist/search/VectorStore.d.ts +0 -235
  208. package/dist/search/VectorStore.d.ts.map +0 -1
  209. package/dist/search/VectorStore.js +0 -312
  210. package/dist/search/VectorStore.js.map +0 -1
  211. package/dist/search/index.d.ts +0 -35
  212. package/dist/search/index.d.ts.map +0 -1
  213. package/dist/search/index.js +0 -53
  214. package/dist/search/index.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -13
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -13
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/types.d.ts +0 -1811
  220. package/dist/types/types.d.ts.map +0 -1
  221. package/dist/types/types.js +0 -10
  222. package/dist/types/types.js.map +0 -1
  223. package/dist/utils/BatchProcessor.d.ts +0 -271
  224. package/dist/utils/BatchProcessor.d.ts.map +0 -1
  225. package/dist/utils/BatchProcessor.js +0 -377
  226. package/dist/utils/BatchProcessor.js.map +0 -1
  227. package/dist/utils/MemoryMonitor.d.ts +0 -176
  228. package/dist/utils/MemoryMonitor.d.ts.map +0 -1
  229. package/dist/utils/MemoryMonitor.js +0 -306
  230. package/dist/utils/MemoryMonitor.js.map +0 -1
  231. package/dist/utils/WorkerPoolManager.d.ts +0 -233
  232. package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
  233. package/dist/utils/WorkerPoolManager.js +0 -421
  234. package/dist/utils/WorkerPoolManager.js.map +0 -1
  235. package/dist/utils/compressedCache.d.ts +0 -221
  236. package/dist/utils/compressedCache.d.ts.map +0 -1
  237. package/dist/utils/compressedCache.js +0 -349
  238. package/dist/utils/compressedCache.js.map +0 -1
  239. package/dist/utils/compressionUtil.d.ts +0 -214
  240. package/dist/utils/compressionUtil.d.ts.map +0 -1
  241. package/dist/utils/compressionUtil.js +0 -248
  242. package/dist/utils/compressionUtil.js.map +0 -1
  243. package/dist/utils/constants.d.ts +0 -245
  244. package/dist/utils/constants.d.ts.map +0 -1
  245. package/dist/utils/constants.js +0 -253
  246. package/dist/utils/constants.js.map +0 -1
  247. package/dist/utils/entityUtils.d.ts +0 -379
  248. package/dist/utils/entityUtils.d.ts.map +0 -1
  249. package/dist/utils/entityUtils.js +0 -649
  250. package/dist/utils/entityUtils.js.map +0 -1
  251. package/dist/utils/errors.d.ts +0 -95
  252. package/dist/utils/errors.d.ts.map +0 -1
  253. package/dist/utils/errors.js +0 -146
  254. package/dist/utils/errors.js.map +0 -1
  255. package/dist/utils/formatters.d.ts +0 -145
  256. package/dist/utils/formatters.d.ts.map +0 -1
  257. package/dist/utils/formatters.js +0 -133
  258. package/dist/utils/formatters.js.map +0 -1
  259. package/dist/utils/index.d.ts +0 -26
  260. package/dist/utils/index.d.ts.map +0 -1
  261. package/dist/utils/index.js +0 -88
  262. package/dist/utils/index.js.map +0 -1
  263. package/dist/utils/indexes.d.ts +0 -270
  264. package/dist/utils/indexes.d.ts.map +0 -1
  265. package/dist/utils/indexes.js +0 -527
  266. package/dist/utils/indexes.js.map +0 -1
  267. package/dist/utils/logger.d.ts +0 -31
  268. package/dist/utils/logger.d.ts.map +0 -1
  269. package/dist/utils/logger.js +0 -41
  270. package/dist/utils/logger.js.map +0 -1
  271. package/dist/utils/operationUtils.d.ts +0 -124
  272. package/dist/utils/operationUtils.d.ts.map +0 -1
  273. package/dist/utils/operationUtils.js +0 -176
  274. package/dist/utils/operationUtils.js.map +0 -1
  275. package/dist/utils/parallelUtils.d.ts +0 -76
  276. package/dist/utils/parallelUtils.d.ts.map +0 -1
  277. package/dist/utils/parallelUtils.js +0 -192
  278. package/dist/utils/parallelUtils.js.map +0 -1
  279. package/dist/utils/schemas.d.ts +0 -556
  280. package/dist/utils/schemas.d.ts.map +0 -1
  281. package/dist/utils/schemas.js +0 -485
  282. package/dist/utils/schemas.js.map +0 -1
  283. package/dist/utils/searchAlgorithms.d.ts +0 -99
  284. package/dist/utils/searchAlgorithms.d.ts.map +0 -1
  285. package/dist/utils/searchAlgorithms.js +0 -168
  286. package/dist/utils/searchAlgorithms.js.map +0 -1
  287. package/dist/utils/searchCache.d.ts +0 -108
  288. package/dist/utils/searchCache.d.ts.map +0 -1
  289. package/dist/utils/searchCache.js +0 -210
  290. package/dist/utils/searchCache.js.map +0 -1
  291. package/dist/utils/taskScheduler.d.ts +0 -294
  292. package/dist/utils/taskScheduler.d.ts.map +0 -1
  293. package/dist/utils/taskScheduler.js +0 -487
  294. package/dist/utils/taskScheduler.js.map +0 -1
  295. package/dist/workers/index.d.ts +0 -12
  296. package/dist/workers/index.d.ts.map +0 -1
  297. package/dist/workers/index.js +0 -10
  298. package/dist/workers/index.js.map +0 -1
  299. package/dist/workers/levenshteinWorker.d.ts +0 -60
  300. package/dist/workers/levenshteinWorker.d.ts.map +0 -1
@@ -1,220 +0,0 @@
1
- /**
2
- * Query Plan Cache
3
- *
4
- * Phase 12 Sprint 4: Caches query analysis and planning results
5
- * with LRU eviction for improved performance.
6
- *
7
- * @module search/QueryPlanCache
8
- */
9
- import type { QueryAnalysis, QueryPlan } from '../types/index.js';
10
- /**
11
- * Cached query entry with metadata.
12
- */
13
- export interface CachedQueryEntry {
14
- /** Normalized query string */
15
- normalizedQuery: string;
16
- /** Original query string */
17
- originalQuery: string;
18
- /** Cached analysis result */
19
- analysis: QueryAnalysis;
20
- /** Cached plan result (if available) */
21
- plan?: QueryPlan;
22
- /** Cache entry creation time */
23
- createdAt: number;
24
- /** Last access time for LRU */
25
- lastAccessed: number;
26
- /** Number of times this entry was accessed */
27
- hitCount: number;
28
- }
29
- /**
30
- * Cache statistics for monitoring.
31
- */
32
- export interface QueryPlanCacheStats {
33
- /** Total cache entries */
34
- size: number;
35
- /** Maximum cache size */
36
- maxSize: number;
37
- /** Total cache hits */
38
- hits: number;
39
- /** Total cache misses */
40
- misses: number;
41
- /** Hit rate (0-1) */
42
- hitRate: number;
43
- /** Total evictions */
44
- evictions: number;
45
- /** Average entry age in milliseconds */
46
- averageEntryAgeMs: number;
47
- }
48
- /**
49
- * Options for the query plan cache.
50
- */
51
- export interface QueryPlanCacheOptions {
52
- /** Maximum number of entries (default: 1000) */
53
- maxSize?: number;
54
- /** Entry TTL in milliseconds (default: 5 minutes) */
55
- ttlMs?: number;
56
- /** Whether to normalize queries for better hit rate (default: true) */
57
- normalizeQueries?: boolean;
58
- /** Whether to enable cache statistics (default: true) */
59
- enableStats?: boolean;
60
- }
61
- /**
62
- * Query Plan Cache with LRU eviction.
63
- *
64
- * Caches query analysis and planning results to avoid redundant computation.
65
- * Uses LRU (Least Recently Used) eviction when cache is full.
66
- *
67
- * @example
68
- * ```typescript
69
- * const cache = new QueryPlanCache({ maxSize: 500 });
70
- *
71
- * // Cache an analysis
72
- * cache.setAnalysis('Find Alice', analysis);
73
- *
74
- * // Retrieve cached analysis
75
- * const cached = cache.getAnalysis('Find Alice');
76
- * if (cached) {
77
- * console.log('Cache hit!', cached);
78
- * }
79
- *
80
- * // Get statistics
81
- * const stats = cache.getStats();
82
- * console.log(`Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
83
- * ```
84
- */
85
- export declare class QueryPlanCache {
86
- private cache;
87
- private options;
88
- private hits;
89
- private misses;
90
- private evictions;
91
- constructor(options?: QueryPlanCacheOptions);
92
- /**
93
- * Get cached analysis for a query.
94
- *
95
- * @param query - The search query
96
- * @returns Cached analysis or undefined if not found
97
- */
98
- getAnalysis(query: string): QueryAnalysis | undefined;
99
- /**
100
- * Get cached plan for a query.
101
- *
102
- * @param query - The search query
103
- * @returns Cached plan or undefined if not found
104
- */
105
- getPlan(query: string): QueryPlan | undefined;
106
- /**
107
- * Get full cached entry for a query.
108
- *
109
- * @param query - The search query
110
- * @returns Cached entry or undefined if not found
111
- */
112
- getEntry(query: string): CachedQueryEntry | undefined;
113
- /**
114
- * Cache analysis results for a query.
115
- *
116
- * @param query - The search query
117
- * @param analysis - The analysis result to cache
118
- */
119
- setAnalysis(query: string, analysis: QueryAnalysis): void;
120
- /**
121
- * Cache plan results for a query.
122
- *
123
- * @param query - The search query
124
- * @param analysis - The analysis result to cache
125
- * @param plan - The plan result to cache
126
- */
127
- setPlan(query: string, analysis: QueryAnalysis, plan: QueryPlan): void;
128
- /**
129
- * Check if a query is cached.
130
- *
131
- * @param query - The search query
132
- * @returns True if cached (and not expired)
133
- */
134
- has(query: string): boolean;
135
- /**
136
- * Invalidate a specific query from cache.
137
- *
138
- * @param query - The search query to invalidate
139
- * @returns True if entry was found and removed
140
- */
141
- invalidate(query: string): boolean;
142
- /**
143
- * Invalidate all entries matching a pattern.
144
- *
145
- * @param pattern - Regex pattern to match against queries
146
- * @returns Number of entries invalidated
147
- */
148
- invalidatePattern(pattern: RegExp): number;
149
- /**
150
- * Clear all cache entries.
151
- */
152
- clear(): void;
153
- /**
154
- * Get cache statistics.
155
- *
156
- * @returns Cache statistics
157
- */
158
- getStats(): QueryPlanCacheStats;
159
- /**
160
- * Get the current cache size.
161
- */
162
- get size(): number;
163
- /**
164
- * Normalize a query for cache lookup.
165
- *
166
- * Normalization helps improve cache hit rate by treating
167
- * similar queries as equivalent.
168
- *
169
- * @param query - The query to normalize
170
- * @returns Normalized query string
171
- */
172
- normalizeQuery(query: string): string;
173
- /**
174
- * Check if an entry has expired.
175
- * @private
176
- */
177
- private isExpired;
178
- /**
179
- * Evict entries if cache is at capacity.
180
- * Uses LRU (Least Recently Used) eviction.
181
- * @private
182
- */
183
- private evictIfNeeded;
184
- /**
185
- * Clean up expired entries.
186
- *
187
- * Call this periodically to remove stale entries.
188
- *
189
- * @returns Number of entries removed
190
- */
191
- cleanup(): number;
192
- /**
193
- * Get all cache keys (for debugging).
194
- */
195
- keys(): string[];
196
- /**
197
- * Preload cache with common queries.
198
- *
199
- * @param queries - Array of query-analysis pairs to preload
200
- */
201
- preload(queries: Array<{
202
- query: string;
203
- analysis: QueryAnalysis;
204
- plan?: QueryPlan;
205
- }>): void;
206
- /**
207
- * Export cache entries for persistence.
208
- *
209
- * @returns Array of cache entries
210
- */
211
- export(): CachedQueryEntry[];
212
- /**
213
- * Import cache entries from persistence.
214
- *
215
- * @param entries - Array of cache entries to import
216
- * @param preserveTimestamps - Whether to preserve original timestamps
217
- */
218
- import(entries: CachedQueryEntry[], preserveTimestamps?: boolean): void;
219
- }
220
- //# sourceMappingURL=QueryPlanCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryPlanCache.d.ts","sourceRoot":"","sources":["../../src/search/QueryPlanCache.ts"],"names":[],"mappings":"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"}
@@ -1,380 +0,0 @@
1
- /**
2
- * Query Plan Cache
3
- *
4
- * Phase 12 Sprint 4: Caches query analysis and planning results
5
- * with LRU eviction for improved performance.
6
- *
7
- * @module search/QueryPlanCache
8
- */
9
- /**
10
- * Default cache options.
11
- */
12
- const DEFAULT_OPTIONS = {
13
- maxSize: 1000,
14
- ttlMs: 5 * 60 * 1000, // 5 minutes
15
- normalizeQueries: true,
16
- enableStats: true,
17
- };
18
- /**
19
- * Query Plan Cache with LRU eviction.
20
- *
21
- * Caches query analysis and planning results to avoid redundant computation.
22
- * Uses LRU (Least Recently Used) eviction when cache is full.
23
- *
24
- * @example
25
- * ```typescript
26
- * const cache = new QueryPlanCache({ maxSize: 500 });
27
- *
28
- * // Cache an analysis
29
- * cache.setAnalysis('Find Alice', analysis);
30
- *
31
- * // Retrieve cached analysis
32
- * const cached = cache.getAnalysis('Find Alice');
33
- * if (cached) {
34
- * console.log('Cache hit!', cached);
35
- * }
36
- *
37
- * // Get statistics
38
- * const stats = cache.getStats();
39
- * console.log(`Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
40
- * ```
41
- */
42
- export class QueryPlanCache {
43
- cache;
44
- options;
45
- // Statistics
46
- hits = 0;
47
- misses = 0;
48
- evictions = 0;
49
- constructor(options) {
50
- this.options = { ...DEFAULT_OPTIONS, ...options };
51
- this.cache = new Map();
52
- }
53
- /**
54
- * Get cached analysis for a query.
55
- *
56
- * @param query - The search query
57
- * @returns Cached analysis or undefined if not found
58
- */
59
- getAnalysis(query) {
60
- const entry = this.getEntry(query);
61
- return entry?.analysis;
62
- }
63
- /**
64
- * Get cached plan for a query.
65
- *
66
- * @param query - The search query
67
- * @returns Cached plan or undefined if not found
68
- */
69
- getPlan(query) {
70
- const entry = this.getEntry(query);
71
- return entry?.plan;
72
- }
73
- /**
74
- * Get full cached entry for a query.
75
- *
76
- * @param query - The search query
77
- * @returns Cached entry or undefined if not found
78
- */
79
- getEntry(query) {
80
- const key = this.normalizeQuery(query);
81
- const entry = this.cache.get(key);
82
- if (!entry) {
83
- if (this.options.enableStats)
84
- this.misses++;
85
- return undefined;
86
- }
87
- // Check TTL
88
- if (this.isExpired(entry)) {
89
- this.cache.delete(key);
90
- if (this.options.enableStats)
91
- this.misses++;
92
- return undefined;
93
- }
94
- // Update access time and count
95
- entry.lastAccessed = Date.now();
96
- entry.hitCount++;
97
- if (this.options.enableStats)
98
- this.hits++;
99
- return entry;
100
- }
101
- /**
102
- * Cache analysis results for a query.
103
- *
104
- * @param query - The search query
105
- * @param analysis - The analysis result to cache
106
- */
107
- setAnalysis(query, analysis) {
108
- const key = this.normalizeQuery(query);
109
- const now = Date.now();
110
- const existing = this.cache.get(key);
111
- if (existing) {
112
- // Update existing entry
113
- existing.analysis = analysis;
114
- existing.lastAccessed = now;
115
- }
116
- else {
117
- // Evict if necessary
118
- this.evictIfNeeded();
119
- // Create new entry
120
- this.cache.set(key, {
121
- normalizedQuery: key,
122
- originalQuery: query,
123
- analysis,
124
- createdAt: now,
125
- lastAccessed: now,
126
- hitCount: 0,
127
- });
128
- }
129
- }
130
- /**
131
- * Cache plan results for a query.
132
- *
133
- * @param query - The search query
134
- * @param analysis - The analysis result to cache
135
- * @param plan - The plan result to cache
136
- */
137
- setPlan(query, analysis, plan) {
138
- const key = this.normalizeQuery(query);
139
- const now = Date.now();
140
- const existing = this.cache.get(key);
141
- if (existing) {
142
- // Update existing entry
143
- existing.analysis = analysis;
144
- existing.plan = plan;
145
- existing.lastAccessed = now;
146
- }
147
- else {
148
- // Evict if necessary
149
- this.evictIfNeeded();
150
- // Create new entry
151
- this.cache.set(key, {
152
- normalizedQuery: key,
153
- originalQuery: query,
154
- analysis,
155
- plan,
156
- createdAt: now,
157
- lastAccessed: now,
158
- hitCount: 0,
159
- });
160
- }
161
- }
162
- /**
163
- * Check if a query is cached.
164
- *
165
- * @param query - The search query
166
- * @returns True if cached (and not expired)
167
- */
168
- has(query) {
169
- const key = this.normalizeQuery(query);
170
- const entry = this.cache.get(key);
171
- if (!entry)
172
- return false;
173
- if (this.isExpired(entry)) {
174
- this.cache.delete(key);
175
- return false;
176
- }
177
- return true;
178
- }
179
- /**
180
- * Invalidate a specific query from cache.
181
- *
182
- * @param query - The search query to invalidate
183
- * @returns True if entry was found and removed
184
- */
185
- invalidate(query) {
186
- const key = this.normalizeQuery(query);
187
- return this.cache.delete(key);
188
- }
189
- /**
190
- * Invalidate all entries matching a pattern.
191
- *
192
- * @param pattern - Regex pattern to match against queries
193
- * @returns Number of entries invalidated
194
- */
195
- invalidatePattern(pattern) {
196
- let count = 0;
197
- for (const [key, entry] of this.cache) {
198
- if (pattern.test(entry.originalQuery) || pattern.test(key)) {
199
- this.cache.delete(key);
200
- count++;
201
- }
202
- }
203
- return count;
204
- }
205
- /**
206
- * Clear all cache entries.
207
- */
208
- clear() {
209
- this.cache.clear();
210
- this.hits = 0;
211
- this.misses = 0;
212
- this.evictions = 0;
213
- }
214
- /**
215
- * Get cache statistics.
216
- *
217
- * @returns Cache statistics
218
- */
219
- getStats() {
220
- const now = Date.now();
221
- let totalAge = 0;
222
- for (const entry of this.cache.values()) {
223
- totalAge += now - entry.createdAt;
224
- }
225
- const total = this.hits + this.misses;
226
- return {
227
- size: this.cache.size,
228
- maxSize: this.options.maxSize,
229
- hits: this.hits,
230
- misses: this.misses,
231
- hitRate: total > 0 ? this.hits / total : 0,
232
- evictions: this.evictions,
233
- averageEntryAgeMs: this.cache.size > 0 ? totalAge / this.cache.size : 0,
234
- };
235
- }
236
- /**
237
- * Get the current cache size.
238
- */
239
- get size() {
240
- return this.cache.size;
241
- }
242
- /**
243
- * Normalize a query for cache lookup.
244
- *
245
- * Normalization helps improve cache hit rate by treating
246
- * similar queries as equivalent.
247
- *
248
- * @param query - The query to normalize
249
- * @returns Normalized query string
250
- */
251
- normalizeQuery(query) {
252
- if (!this.options.normalizeQueries) {
253
- return query;
254
- }
255
- return query
256
- .toLowerCase()
257
- .trim()
258
- // Normalize whitespace
259
- .replace(/\s+/g, ' ')
260
- // Remove punctuation that doesn't affect meaning
261
- .replace(/[.,!?;:]+$/g, '')
262
- // Sort operators for consistent matching
263
- .replace(/\b(AND|OR|NOT)\b/gi, match => match.toUpperCase());
264
- }
265
- /**
266
- * Check if an entry has expired.
267
- * @private
268
- */
269
- isExpired(entry) {
270
- return Date.now() - entry.createdAt > this.options.ttlMs;
271
- }
272
- /**
273
- * Evict entries if cache is at capacity.
274
- * Uses LRU (Least Recently Used) eviction.
275
- * @private
276
- */
277
- evictIfNeeded() {
278
- if (this.cache.size < this.options.maxSize) {
279
- return;
280
- }
281
- // Find the least recently used entry
282
- let oldestKey = null;
283
- let oldestTime = Infinity;
284
- for (const [key, entry] of this.cache) {
285
- // Also check for expired entries during eviction
286
- if (this.isExpired(entry)) {
287
- this.cache.delete(key);
288
- if (this.options.enableStats)
289
- this.evictions++;
290
- if (this.cache.size < this.options.maxSize)
291
- return;
292
- continue;
293
- }
294
- if (entry.lastAccessed < oldestTime) {
295
- oldestTime = entry.lastAccessed;
296
- oldestKey = key;
297
- }
298
- }
299
- // Evict the oldest entry
300
- if (oldestKey) {
301
- this.cache.delete(oldestKey);
302
- if (this.options.enableStats)
303
- this.evictions++;
304
- }
305
- }
306
- /**
307
- * Clean up expired entries.
308
- *
309
- * Call this periodically to remove stale entries.
310
- *
311
- * @returns Number of entries removed
312
- */
313
- cleanup() {
314
- let count = 0;
315
- for (const [key, entry] of this.cache) {
316
- if (this.isExpired(entry)) {
317
- this.cache.delete(key);
318
- count++;
319
- }
320
- }
321
- return count;
322
- }
323
- /**
324
- * Get all cache keys (for debugging).
325
- */
326
- keys() {
327
- return Array.from(this.cache.keys());
328
- }
329
- /**
330
- * Preload cache with common queries.
331
- *
332
- * @param queries - Array of query-analysis pairs to preload
333
- */
334
- preload(queries) {
335
- for (const { query, analysis, plan } of queries) {
336
- if (plan) {
337
- this.setPlan(query, analysis, plan);
338
- }
339
- else {
340
- this.setAnalysis(query, analysis);
341
- }
342
- }
343
- }
344
- /**
345
- * Export cache entries for persistence.
346
- *
347
- * @returns Array of cache entries
348
- */
349
- export() {
350
- const entries = [];
351
- for (const entry of this.cache.values()) {
352
- if (!this.isExpired(entry)) {
353
- entries.push({ ...entry });
354
- }
355
- }
356
- return entries;
357
- }
358
- /**
359
- * Import cache entries from persistence.
360
- *
361
- * @param entries - Array of cache entries to import
362
- * @param preserveTimestamps - Whether to preserve original timestamps
363
- */
364
- import(entries, preserveTimestamps = false) {
365
- const now = Date.now();
366
- for (const entry of entries) {
367
- if (!preserveTimestamps) {
368
- entry.createdAt = now;
369
- entry.lastAccessed = now;
370
- }
371
- // Skip if expired
372
- if (this.isExpired(entry))
373
- continue;
374
- // Evict if needed
375
- this.evictIfNeeded();
376
- this.cache.set(entry.normalizedQuery, entry);
377
- }
378
- }
379
- }
380
- //# sourceMappingURL=QueryPlanCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryPlanCache.js","sourceRoot":"","sources":["../../src/search/QueryPlanCache.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- /**
2
- * Query Planner
3
- *
4
- * Phase 11: Generates execution plans for queries based on analysis.
5
- *
6
- * @module search/QueryPlanner
7
- */
8
- import type { QueryAnalysis, QueryPlan } from '../types/index.js';
9
- /**
10
- * Query Planner generates execution plans from query analysis.
11
- *
12
- * Creates optimized plans that:
13
- * - Select appropriate search layers
14
- * - Determine execution strategy (parallel/sequential)
15
- * - Set up query dependencies
16
- * - Configure merge strategies
17
- *
18
- * @example
19
- * ```typescript
20
- * const analyzer = new QueryAnalyzer();
21
- * const planner = new QueryPlanner();
22
- *
23
- * const analysis = analyzer.analyze('Find projects by Alice');
24
- * const plan = planner.createPlan('Find projects by Alice', analysis);
25
- * // { originalQuery: '...', subQueries: [...], executionStrategy: 'iterative', ... }
26
- * ```
27
- */
28
- export declare class QueryPlanner {
29
- /**
30
- * Create an execution plan from query analysis.
31
- */
32
- createPlan(query: string, analysis: QueryAnalysis): QueryPlan;
33
- /**
34
- * Create sub-queries from analysis.
35
- */
36
- private createSubQueries;
37
- /**
38
- * Select the most appropriate search layer.
39
- */
40
- private selectLayer;
41
- /**
42
- * Select execution strategy based on sub-queries.
43
- */
44
- private selectExecutionStrategy;
45
- /**
46
- * Select merge strategy based on question type.
47
- */
48
- private selectMergeStrategy;
49
- /**
50
- * Build symbolic filters from analysis.
51
- */
52
- private buildFilters;
53
- /**
54
- * Calculate plan complexity score.
55
- */
56
- private calculateComplexity;
57
- }
58
- //# sourceMappingURL=QueryPlanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryPlanner.d.ts","sourceRoot":"","sources":["../../src/search/QueryPlanner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAA6B,MAAM,mBAAmB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS;IAc7D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}