@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,138 +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
- /**
9
- * Query Planner generates execution plans from query analysis.
10
- *
11
- * Creates optimized plans that:
12
- * - Select appropriate search layers
13
- * - Determine execution strategy (parallel/sequential)
14
- * - Set up query dependencies
15
- * - Configure merge strategies
16
- *
17
- * @example
18
- * ```typescript
19
- * const analyzer = new QueryAnalyzer();
20
- * const planner = new QueryPlanner();
21
- *
22
- * const analysis = analyzer.analyze('Find projects by Alice');
23
- * const plan = planner.createPlan('Find projects by Alice', analysis);
24
- * // { originalQuery: '...', subQueries: [...], executionStrategy: 'iterative', ... }
25
- * ```
26
- */
27
- export class QueryPlanner {
28
- /**
29
- * Create an execution plan from query analysis.
30
- */
31
- createPlan(query, analysis) {
32
- const subQueries = this.createSubQueries(query, analysis);
33
- const executionStrategy = this.selectExecutionStrategy(subQueries);
34
- const mergeStrategy = this.selectMergeStrategy(analysis);
35
- return {
36
- originalQuery: query,
37
- subQueries,
38
- executionStrategy,
39
- mergeStrategy,
40
- estimatedComplexity: this.calculateComplexity(subQueries),
41
- };
42
- }
43
- /**
44
- * Create sub-queries from analysis.
45
- */
46
- createSubQueries(query, analysis) {
47
- const subQueries = [];
48
- let id = 0;
49
- // If query was decomposed, create sub-query for each part
50
- if (analysis.subQueries && analysis.subQueries.length > 1) {
51
- for (const sq of analysis.subQueries) {
52
- subQueries.push({
53
- id: `sq_${id++}`,
54
- query: sq,
55
- targetLayer: this.selectLayer(analysis),
56
- priority: id === 1 ? 1 : 2,
57
- dependsOn: id > 1 ? [`sq_${id - 2}`] : undefined,
58
- });
59
- }
60
- }
61
- else {
62
- // Single query
63
- subQueries.push({
64
- id: `sq_${id}`,
65
- query,
66
- targetLayer: this.selectLayer(analysis),
67
- priority: 1,
68
- filters: this.buildFilters(analysis),
69
- });
70
- }
71
- return subQueries;
72
- }
73
- /**
74
- * Select the most appropriate search layer.
75
- */
76
- selectLayer(analysis) {
77
- // Use symbolic for tag/type/date filtered queries
78
- if (analysis.temporalRange || analysis.requiredInfoTypes.includes('temporal')) {
79
- return 'symbolic';
80
- }
81
- // Use semantic for complex concept queries
82
- if (analysis.complexity === 'high' || analysis.questionType === 'comparative') {
83
- return 'semantic';
84
- }
85
- // Use hybrid for balanced approach
86
- return 'hybrid';
87
- }
88
- /**
89
- * Select execution strategy based on sub-queries.
90
- */
91
- selectExecutionStrategy(subQueries) {
92
- const hasDependencies = subQueries.some(sq => sq.dependsOn && sq.dependsOn.length > 0);
93
- if (hasDependencies)
94
- return 'sequential';
95
- if (subQueries.length > 1)
96
- return 'parallel';
97
- return 'iterative';
98
- }
99
- /**
100
- * Select merge strategy based on question type.
101
- */
102
- selectMergeStrategy(analysis) {
103
- switch (analysis.questionType) {
104
- case 'aggregation': return 'union';
105
- case 'comparative': return 'intersection';
106
- default: return 'weighted';
107
- }
108
- }
109
- /**
110
- * Build symbolic filters from analysis.
111
- */
112
- buildFilters(analysis) {
113
- const filters = {};
114
- let hasFilters = false;
115
- if (analysis.temporalRange) {
116
- filters.dateRange = {
117
- start: analysis.temporalRange.start || '',
118
- end: analysis.temporalRange.end || '',
119
- };
120
- hasFilters = true;
121
- }
122
- return hasFilters ? filters : undefined;
123
- }
124
- /**
125
- * Calculate plan complexity score.
126
- */
127
- calculateComplexity(subQueries) {
128
- let complexity = subQueries.length;
129
- for (const sq of subQueries) {
130
- if (sq.dependsOn)
131
- complexity += sq.dependsOn.length * 0.5;
132
- if (sq.filters)
133
- complexity += 0.5;
134
- }
135
- return Math.min(complexity, 10);
136
- }
137
- }
138
- //# sourceMappingURL=QueryPlanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryPlanner.js","sourceRoot":"","sources":["../../src/search/QueryPlanner.ts"],"names":[],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- /**
2
- * Ranked Search
3
- *
4
- * TF-IDF relevance-based search with scoring and pre-calculated indexes.
5
- *
6
- * @module search/RankedSearch
7
- */
8
- import type { SearchResult } from '../types/index.js';
9
- import type { GraphStorage } from '../core/GraphStorage.js';
10
- /**
11
- * Performs TF-IDF ranked search with optional pre-calculated indexes.
12
- */
13
- export declare class RankedSearch {
14
- private storage;
15
- private indexManager;
16
- /**
17
- * Phase 4 Sprint 2: Fallback token cache for entities.
18
- * Maps entity name -> pre-tokenized entity data.
19
- * Invalidated when graph changes (detected by entity count mismatch).
20
- */
21
- private fallbackTokenCache;
22
- private cachedEntityCount;
23
- constructor(storage: GraphStorage, storageDir?: string);
24
- /**
25
- * Phase 4 Sprint 2: Clear the fallback token cache.
26
- * Called when graph changes are detected or explicitly by external code.
27
- */
28
- clearTokenCache(): void;
29
- /**
30
- * Initialize and build the TF-IDF index for fast searches.
31
- *
32
- * Should be called after graph changes to keep index up-to-date.
33
- */
34
- buildIndex(): Promise<void>;
35
- /**
36
- * Update the index incrementally after entity changes.
37
- *
38
- * @param changedEntityNames - Names of entities that were created, updated, or deleted
39
- */
40
- updateIndex(changedEntityNames: Set<string>): Promise<void>;
41
- /**
42
- * Load the TF-IDF index from disk if available.
43
- */
44
- private ensureIndexLoaded;
45
- /**
46
- * Search with TF-IDF relevance ranking.
47
- *
48
- * Uses pre-calculated index if available, falls back to on-the-fly calculation.
49
- *
50
- * @param query - Search query
51
- * @param tags - Optional tags filter
52
- * @param minImportance - Optional minimum importance
53
- * @param maxImportance - Optional maximum importance
54
- * @param limit - Maximum results to return (default 50, max 200)
55
- * @returns Array of search results sorted by relevance
56
- */
57
- searchNodesRanked(query: string, tags?: string[], minImportance?: number, maxImportance?: number, limit?: number): Promise<SearchResult[]>;
58
- /**
59
- * Search using pre-calculated TF-IDF index (fast path).
60
- */
61
- private searchWithIndex;
62
- /**
63
- * Search without index (on-the-fly calculation, slow path).
64
- *
65
- * OPTIMIZED: Phase 4 Sprint 2 - Uses fallback token cache to avoid
66
- * repeated tokenization of entities. Pre-tokenizes all documents once
67
- * and caches for subsequent searches.
68
- */
69
- private searchWithoutIndex;
70
- }
71
- //# sourceMappingURL=RankedSearch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RankedSearch.d.ts","sourceRoot":"","sources":["../../src/search/RankedSearch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAU,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAM5D;;GAEG;AACH,qBAAa,YAAY;IAYrB,OAAO,CAAC,OAAO;IAXjB,OAAO,CAAC,YAAY,CAAkC;IAEtD;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,iBAAiB,CAAa;gBAG5B,OAAO,EAAE,YAAY,EAC7B,UAAU,CAAC,EAAE,MAAM;IAQrB;;;OAGG;IACH,eAAe,IAAI,IAAI;IAKvB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;;OAIG;IACG,WAAW,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE;;OAEG;YACW,iBAAiB;IAe/B;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,KAAK,GAAE,MAA8B,GACpC,OAAO,CAAC,YAAY,EAAE,CAAC;IAsB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgEvB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAqF3B"}
@@ -1,239 +0,0 @@
1
- /**
2
- * Ranked Search
3
- *
4
- * TF-IDF relevance-based search with scoring and pre-calculated indexes.
5
- *
6
- * @module search/RankedSearch
7
- */
8
- import { calculateTF, calculateIDFFromTokenSets, tokenize } from '../utils/index.js';
9
- import { SEARCH_LIMITS } from '../utils/constants.js';
10
- import { TFIDFIndexManager } from './TFIDFIndexManager.js';
11
- import { SearchFilterChain } from './SearchFilterChain.js';
12
- /**
13
- * Performs TF-IDF ranked search with optional pre-calculated indexes.
14
- */
15
- export class RankedSearch {
16
- storage;
17
- indexManager = null;
18
- /**
19
- * Phase 4 Sprint 2: Fallback token cache for entities.
20
- * Maps entity name -> pre-tokenized entity data.
21
- * Invalidated when graph changes (detected by entity count mismatch).
22
- */
23
- fallbackTokenCache = new Map();
24
- cachedEntityCount = 0;
25
- constructor(storage, storageDir) {
26
- this.storage = storage;
27
- // Initialize index manager if storage directory is provided
28
- if (storageDir) {
29
- this.indexManager = new TFIDFIndexManager(storageDir);
30
- }
31
- }
32
- /**
33
- * Phase 4 Sprint 2: Clear the fallback token cache.
34
- * Called when graph changes are detected or explicitly by external code.
35
- */
36
- clearTokenCache() {
37
- this.fallbackTokenCache.clear();
38
- this.cachedEntityCount = 0;
39
- }
40
- /**
41
- * Initialize and build the TF-IDF index for fast searches.
42
- *
43
- * Should be called after graph changes to keep index up-to-date.
44
- */
45
- async buildIndex() {
46
- if (!this.indexManager) {
47
- throw new Error('Index manager not initialized. Provide storageDir to constructor.');
48
- }
49
- const graph = await this.storage.loadGraph();
50
- await this.indexManager.buildIndex(graph);
51
- await this.indexManager.saveIndex();
52
- }
53
- /**
54
- * Update the index incrementally after entity changes.
55
- *
56
- * @param changedEntityNames - Names of entities that were created, updated, or deleted
57
- */
58
- async updateIndex(changedEntityNames) {
59
- if (!this.indexManager) {
60
- return; // No index manager, skip
61
- }
62
- const graph = await this.storage.loadGraph();
63
- await this.indexManager.updateIndex(graph, changedEntityNames);
64
- await this.indexManager.saveIndex();
65
- }
66
- /**
67
- * Load the TF-IDF index from disk if available.
68
- */
69
- async ensureIndexLoaded() {
70
- if (!this.indexManager) {
71
- return null;
72
- }
73
- // Return cached index if already loaded
74
- const cached = this.indexManager.getIndex();
75
- if (cached) {
76
- return cached;
77
- }
78
- // Try to load from disk
79
- return await this.indexManager.loadIndex();
80
- }
81
- /**
82
- * Search with TF-IDF relevance ranking.
83
- *
84
- * Uses pre-calculated index if available, falls back to on-the-fly calculation.
85
- *
86
- * @param query - Search query
87
- * @param tags - Optional tags filter
88
- * @param minImportance - Optional minimum importance
89
- * @param maxImportance - Optional maximum importance
90
- * @param limit - Maximum results to return (default 50, max 200)
91
- * @returns Array of search results sorted by relevance
92
- */
93
- async searchNodesRanked(query, tags, minImportance, maxImportance, limit = SEARCH_LIMITS.DEFAULT) {
94
- // Enforce maximum search limit
95
- const effectiveLimit = Math.min(limit, SEARCH_LIMITS.MAX);
96
- const graph = await this.storage.loadGraph();
97
- // Apply tag and importance filters using SearchFilterChain
98
- const filters = { tags, minImportance, maxImportance };
99
- const filteredEntities = SearchFilterChain.applyFilters(graph.entities, filters);
100
- // Try to use pre-calculated index
101
- const index = await this.ensureIndexLoaded();
102
- const queryTerms = tokenize(query);
103
- if (index) {
104
- // Use pre-calculated index for fast search
105
- return this.searchWithIndex(filteredEntities, queryTerms, index, effectiveLimit);
106
- }
107
- else {
108
- // Fall back to on-the-fly calculation
109
- return this.searchWithoutIndex(filteredEntities, queryTerms, effectiveLimit);
110
- }
111
- }
112
- /**
113
- * Search using pre-calculated TF-IDF index (fast path).
114
- */
115
- searchWithIndex(entities, queryTerms, index, limit) {
116
- const results = [];
117
- for (const entity of entities) {
118
- const docVector = index.documents.get(entity.name);
119
- if (!docVector) {
120
- continue; // Entity not in index
121
- }
122
- // Calculate total terms in document (sum of all term frequencies)
123
- const totalTerms = Object.values(docVector.terms).reduce((sum, count) => sum + count, 0);
124
- if (totalTerms === 0)
125
- continue;
126
- // Calculate score using pre-calculated term frequencies and IDF
127
- let totalScore = 0;
128
- const matchedFields = {};
129
- for (const term of queryTerms) {
130
- const termCount = docVector.terms[term] || 0;
131
- const idf = index.idf.get(term) || 0;
132
- // Calculate TF-IDF: (termCount / totalTerms) * IDF
133
- const tf = termCount / totalTerms;
134
- const tfidf = tf * idf;
135
- totalScore += tfidf;
136
- // Track which fields matched
137
- if (termCount > 0) {
138
- if (entity.name.toLowerCase().includes(term)) {
139
- matchedFields.name = true;
140
- }
141
- if (entity.entityType.toLowerCase().includes(term)) {
142
- matchedFields.entityType = true;
143
- }
144
- const matchedObs = entity.observations.filter(o => o.toLowerCase().includes(term));
145
- if (matchedObs.length > 0) {
146
- matchedFields.observations = matchedObs;
147
- }
148
- }
149
- }
150
- // Only include entities with non-zero scores
151
- if (totalScore > 0) {
152
- results.push({
153
- entity,
154
- score: totalScore,
155
- matchedFields,
156
- });
157
- }
158
- }
159
- // Sort by score descending and apply limit
160
- return results
161
- .sort((a, b) => b.score - a.score)
162
- .slice(0, limit);
163
- }
164
- /**
165
- * Search without index (on-the-fly calculation, slow path).
166
- *
167
- * OPTIMIZED: Phase 4 Sprint 2 - Uses fallback token cache to avoid
168
- * repeated tokenization of entities. Pre-tokenizes all documents once
169
- * and caches for subsequent searches.
170
- */
171
- searchWithoutIndex(entities, queryTerms, limit) {
172
- const results = [];
173
- // Phase 4 Sprint 2: Check if cache needs invalidation
174
- if (entities.length !== this.cachedEntityCount) {
175
- this.clearTokenCache();
176
- this.cachedEntityCount = entities.length;
177
- }
178
- // Phase 4 Sprint 2: Get or compute tokenized data for each entity
179
- const documentData = entities.map(e => {
180
- // Check cache first
181
- const cached = this.fallbackTokenCache.get(e.name);
182
- if (cached) {
183
- return cached;
184
- }
185
- // Compute and cache tokenized data
186
- const text = [e.name, e.entityType, ...e.observations].join(' ');
187
- const tokens = tokenize(text);
188
- const tokenized = {
189
- entity: e,
190
- text,
191
- tokens,
192
- tokenSet: new Set(tokens),
193
- };
194
- this.fallbackTokenCache.set(e.name, tokenized);
195
- return tokenized;
196
- });
197
- // Pre-compute token sets for IDF calculation (O(1) lookup per document)
198
- const tokenSets = documentData.map(d => d.tokenSet);
199
- for (const docData of documentData) {
200
- const { entity, text } = docData;
201
- // Calculate score for each query term
202
- let totalScore = 0;
203
- const matchedFields = {};
204
- for (const term of queryTerms) {
205
- // Calculate TF using pre-tokenized tokens
206
- const tf = calculateTF(term, text);
207
- // Calculate IDF using pre-computed token sets (O(1) per document)
208
- const idf = calculateIDFFromTokenSets(term, tokenSets);
209
- // TF-IDF score
210
- const score = tf * idf;
211
- totalScore += score;
212
- // Track which fields matched
213
- if (entity.name.toLowerCase().includes(term)) {
214
- matchedFields.name = true;
215
- }
216
- if (entity.entityType.toLowerCase().includes(term)) {
217
- matchedFields.entityType = true;
218
- }
219
- const matchedObs = entity.observations.filter(o => o.toLowerCase().includes(term));
220
- if (matchedObs.length > 0) {
221
- matchedFields.observations = matchedObs;
222
- }
223
- }
224
- // Only include entities with non-zero scores
225
- if (totalScore > 0) {
226
- results.push({
227
- entity,
228
- score: totalScore,
229
- matchedFields,
230
- });
231
- }
232
- }
233
- // Sort by score descending and apply limit
234
- return results
235
- .sort((a, b) => b.score - a.score)
236
- .slice(0, limit);
237
- }
238
- }
239
- //# sourceMappingURL=RankedSearch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RankedSearch.js","sourceRoot":"","sources":["../../src/search/RankedSearch.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- /**
2
- * Reflection Manager
3
- *
4
- * Phase 11: Implements reflection-based iterative retrieval
5
- * that refines results until adequate.
6
- *
7
- * @module search/ReflectionManager
8
- */
9
- import type { ReadonlyKnowledgeGraph, HybridSearchResult, HybridSearchOptions } from '../types/index.js';
10
- import type { HybridSearchManager } from './HybridSearchManager.js';
11
- import type { QueryAnalyzer } from './QueryAnalyzer.js';
12
- /**
13
- * Options for reflection-based retrieval.
14
- */
15
- export interface ReflectionOptions {
16
- /** Maximum number of reflection iterations (default: 3) */
17
- maxIterations?: number;
18
- /** Adequacy threshold 0-1 (default: 0.7) */
19
- adequacyThreshold?: number;
20
- /** Minimum results required (default: 3) */
21
- minResults?: number;
22
- /** Hybrid search options */
23
- searchOptions?: Partial<HybridSearchOptions>;
24
- /** Phase 12 Sprint 4: Progressive limit increase factor (default: 1.5) */
25
- limitIncreaseFactor?: number;
26
- /** Phase 12 Sprint 4: Initial search limit (default: 10) */
27
- initialLimit?: number;
28
- /** Phase 12 Sprint 4: Focus on specific missing info types */
29
- focusMissingTypes?: boolean;
30
- }
31
- /**
32
- * Phase 12 Sprint 4: Refinement history entry.
33
- */
34
- export interface RefinementHistoryEntry {
35
- /** Iteration number (1-based) */
36
- iteration: number;
37
- /** Query used in this iteration */
38
- query: string;
39
- /** Search limit used */
40
- limit: number;
41
- /** Results found in this iteration */
42
- resultsFound: number;
43
- /** Adequacy score after this iteration */
44
- adequacyScore: number;
45
- /** Reason for refinement (if not final) */
46
- refinementReason?: string;
47
- /** Missing info types that triggered refinement */
48
- missingInfoTypes?: string[];
49
- }
50
- /**
51
- * Result of reflection-based retrieval.
52
- */
53
- export interface ReflectionResult {
54
- results: HybridSearchResult[];
55
- iterations: number;
56
- adequate: boolean;
57
- refinements: string[];
58
- adequacyScore: number;
59
- /** Phase 12 Sprint 4: Detailed refinement history */
60
- refinementHistory: RefinementHistoryEntry[];
61
- /** Phase 12 Sprint 4: Final search limit used */
62
- finalLimit: number;
63
- }
64
- /**
65
- * Reflection Manager for iterative retrieval refinement.
66
- *
67
- * Implements the SimpleMem-inspired reflection loop:
68
- * 1. Execute initial search
69
- * 2. Check result adequacy
70
- * 3. If inadequate, refine query and repeat
71
- * 4. Combine results from all iterations
72
- *
73
- * @example
74
- * ```typescript
75
- * const reflection = new ReflectionManager(hybridSearch, analyzer);
76
- * const result = await reflection.retrieveWithReflection(
77
- * graph,
78
- * 'What projects did Alice work on?',
79
- * { maxIterations: 3 }
80
- * );
81
- * ```
82
- */
83
- export declare class ReflectionManager {
84
- private hybridSearch;
85
- private analyzer;
86
- constructor(hybridSearch: HybridSearchManager, analyzer: QueryAnalyzer);
87
- /**
88
- * Perform retrieval with reflection-based refinement.
89
- *
90
- * Phase 12 Sprint 4 enhancements:
91
- * - Progressive limit increase per round
92
- * - Focused query refinement based on missing information
93
- * - Detailed refinement history tracking
94
- */
95
- retrieveWithReflection(graph: ReadonlyKnowledgeGraph, query: string, options?: ReflectionOptions): Promise<ReflectionResult>;
96
- /**
97
- * Find missing information types based on analysis requirements.
98
- * @private
99
- */
100
- private findMissingInfoTypes;
101
- /**
102
- * Refine query with focus on missing information types.
103
- * @private
104
- */
105
- private refineQueryFocused;
106
- /**
107
- * Get human-readable reason for refinement.
108
- * @private
109
- */
110
- private getRefinementReason;
111
- /**
112
- * Calculate result adequacy score.
113
- */
114
- private calculateAdequacy;
115
- /**
116
- * Refine query based on current results and analysis.
117
- */
118
- private refineQuery;
119
- }
120
- //# sourceMappingURL=ReflectionManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReflectionManager.d.ts","sourceRoot":"","sources":["../../src/search/ReflectionManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,sBAAsB,EAEtB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IAC5C,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;gBADR,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,aAAa;IAGjC;;;;;;;OAOG;IACG,sBAAsB,CAC1B,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAwG5B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,WAAW;CA6BpB"}