@danielsimonjr/memoryjs 1.0.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 (295) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +266 -0
  3. package/dist/core/EntityManager.d.ts +268 -0
  4. package/dist/core/EntityManager.d.ts.map +1 -0
  5. package/dist/core/EntityManager.js +512 -0
  6. package/dist/core/EntityManager.js.map +1 -0
  7. package/dist/core/GraphEventEmitter.d.ts +202 -0
  8. package/dist/core/GraphEventEmitter.d.ts.map +1 -0
  9. package/dist/core/GraphEventEmitter.js +347 -0
  10. package/dist/core/GraphEventEmitter.js.map +1 -0
  11. package/dist/core/GraphStorage.d.ts +395 -0
  12. package/dist/core/GraphStorage.d.ts.map +1 -0
  13. package/dist/core/GraphStorage.js +786 -0
  14. package/dist/core/GraphStorage.js.map +1 -0
  15. package/dist/core/GraphTraversal.d.ts +141 -0
  16. package/dist/core/GraphTraversal.d.ts.map +1 -0
  17. package/dist/core/GraphTraversal.js +574 -0
  18. package/dist/core/GraphTraversal.js.map +1 -0
  19. package/dist/core/HierarchyManager.d.ts +111 -0
  20. package/dist/core/HierarchyManager.d.ts.map +1 -0
  21. package/dist/core/HierarchyManager.js +225 -0
  22. package/dist/core/HierarchyManager.js.map +1 -0
  23. package/dist/core/ManagerContext.d.ts +76 -0
  24. package/dist/core/ManagerContext.d.ts.map +1 -0
  25. package/dist/core/ManagerContext.js +129 -0
  26. package/dist/core/ManagerContext.js.map +1 -0
  27. package/dist/core/ObservationManager.d.ts +85 -0
  28. package/dist/core/ObservationManager.d.ts.map +1 -0
  29. package/dist/core/ObservationManager.js +124 -0
  30. package/dist/core/ObservationManager.js.map +1 -0
  31. package/dist/core/RelationManager.d.ts +131 -0
  32. package/dist/core/RelationManager.d.ts.map +1 -0
  33. package/dist/core/RelationManager.js +212 -0
  34. package/dist/core/RelationManager.js.map +1 -0
  35. package/dist/core/SQLiteStorage.d.ts +354 -0
  36. package/dist/core/SQLiteStorage.d.ts.map +1 -0
  37. package/dist/core/SQLiteStorage.js +919 -0
  38. package/dist/core/SQLiteStorage.js.map +1 -0
  39. package/dist/core/StorageFactory.d.ts +45 -0
  40. package/dist/core/StorageFactory.d.ts.map +1 -0
  41. package/dist/core/StorageFactory.js +65 -0
  42. package/dist/core/StorageFactory.js.map +1 -0
  43. package/dist/core/TransactionManager.d.ts +464 -0
  44. package/dist/core/TransactionManager.d.ts.map +1 -0
  45. package/dist/core/TransactionManager.js +869 -0
  46. package/dist/core/TransactionManager.js.map +1 -0
  47. package/dist/core/index.d.ts +17 -0
  48. package/dist/core/index.d.ts.map +1 -0
  49. package/dist/core/index.js +20 -0
  50. package/dist/core/index.js.map +1 -0
  51. package/dist/features/AnalyticsManager.d.ts +44 -0
  52. package/dist/features/AnalyticsManager.d.ts.map +1 -0
  53. package/dist/features/AnalyticsManager.js +224 -0
  54. package/dist/features/AnalyticsManager.js.map +1 -0
  55. package/dist/features/ArchiveManager.d.ts +133 -0
  56. package/dist/features/ArchiveManager.d.ts.map +1 -0
  57. package/dist/features/ArchiveManager.js +282 -0
  58. package/dist/features/ArchiveManager.js.map +1 -0
  59. package/dist/features/CompressionManager.d.ts +119 -0
  60. package/dist/features/CompressionManager.d.ts.map +1 -0
  61. package/dist/features/CompressionManager.js +470 -0
  62. package/dist/features/CompressionManager.js.map +1 -0
  63. package/dist/features/IOManager.d.ts +225 -0
  64. package/dist/features/IOManager.d.ts.map +1 -0
  65. package/dist/features/IOManager.js +1093 -0
  66. package/dist/features/IOManager.js.map +1 -0
  67. package/dist/features/KeywordExtractor.d.ts +61 -0
  68. package/dist/features/KeywordExtractor.d.ts.map +1 -0
  69. package/dist/features/KeywordExtractor.js +127 -0
  70. package/dist/features/KeywordExtractor.js.map +1 -0
  71. package/dist/features/ObservationNormalizer.d.ts +90 -0
  72. package/dist/features/ObservationNormalizer.d.ts.map +1 -0
  73. package/dist/features/ObservationNormalizer.js +194 -0
  74. package/dist/features/ObservationNormalizer.js.map +1 -0
  75. package/dist/features/StreamingExporter.d.ts +128 -0
  76. package/dist/features/StreamingExporter.d.ts.map +1 -0
  77. package/dist/features/StreamingExporter.js +212 -0
  78. package/dist/features/StreamingExporter.js.map +1 -0
  79. package/dist/features/TagManager.d.ts +147 -0
  80. package/dist/features/TagManager.d.ts.map +1 -0
  81. package/dist/features/TagManager.js +211 -0
  82. package/dist/features/TagManager.js.map +1 -0
  83. package/dist/features/index.d.ts +14 -0
  84. package/dist/features/index.d.ts.map +1 -0
  85. package/dist/features/index.js +15 -0
  86. package/dist/features/index.js.map +1 -0
  87. package/dist/index.d.ts +15 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +20 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/search/BM25Search.d.ts +148 -0
  92. package/dist/search/BM25Search.d.ts.map +1 -0
  93. package/dist/search/BM25Search.js +340 -0
  94. package/dist/search/BM25Search.js.map +1 -0
  95. package/dist/search/BasicSearch.d.ts +51 -0
  96. package/dist/search/BasicSearch.d.ts.map +1 -0
  97. package/dist/search/BasicSearch.js +138 -0
  98. package/dist/search/BasicSearch.js.map +1 -0
  99. package/dist/search/BooleanSearch.d.ts +98 -0
  100. package/dist/search/BooleanSearch.d.ts.map +1 -0
  101. package/dist/search/BooleanSearch.js +431 -0
  102. package/dist/search/BooleanSearch.js.map +1 -0
  103. package/dist/search/EarlyTerminationManager.d.ts +140 -0
  104. package/dist/search/EarlyTerminationManager.d.ts.map +1 -0
  105. package/dist/search/EarlyTerminationManager.js +280 -0
  106. package/dist/search/EarlyTerminationManager.js.map +1 -0
  107. package/dist/search/EmbeddingCache.d.ts +175 -0
  108. package/dist/search/EmbeddingCache.d.ts.map +1 -0
  109. package/dist/search/EmbeddingCache.js +247 -0
  110. package/dist/search/EmbeddingCache.js.map +1 -0
  111. package/dist/search/EmbeddingService.d.ts +277 -0
  112. package/dist/search/EmbeddingService.d.ts.map +1 -0
  113. package/dist/search/EmbeddingService.js +531 -0
  114. package/dist/search/EmbeddingService.js.map +1 -0
  115. package/dist/search/FuzzySearch.d.ts +118 -0
  116. package/dist/search/FuzzySearch.d.ts.map +1 -0
  117. package/dist/search/FuzzySearch.js +313 -0
  118. package/dist/search/FuzzySearch.js.map +1 -0
  119. package/dist/search/HybridScorer.d.ts +181 -0
  120. package/dist/search/HybridScorer.d.ts.map +1 -0
  121. package/dist/search/HybridScorer.js +258 -0
  122. package/dist/search/HybridScorer.js.map +1 -0
  123. package/dist/search/HybridSearchManager.d.ts +80 -0
  124. package/dist/search/HybridSearchManager.d.ts.map +1 -0
  125. package/dist/search/HybridSearchManager.js +188 -0
  126. package/dist/search/HybridSearchManager.js.map +1 -0
  127. package/dist/search/IncrementalIndexer.d.ts +201 -0
  128. package/dist/search/IncrementalIndexer.d.ts.map +1 -0
  129. package/dist/search/IncrementalIndexer.js +343 -0
  130. package/dist/search/IncrementalIndexer.js.map +1 -0
  131. package/dist/search/OptimizedInvertedIndex.d.ts +163 -0
  132. package/dist/search/OptimizedInvertedIndex.d.ts.map +1 -0
  133. package/dist/search/OptimizedInvertedIndex.js +359 -0
  134. package/dist/search/OptimizedInvertedIndex.js.map +1 -0
  135. package/dist/search/ParallelSearchExecutor.d.ts +172 -0
  136. package/dist/search/ParallelSearchExecutor.d.ts.map +1 -0
  137. package/dist/search/ParallelSearchExecutor.js +310 -0
  138. package/dist/search/ParallelSearchExecutor.js.map +1 -0
  139. package/dist/search/QuantizedVectorStore.d.ts +171 -0
  140. package/dist/search/QuantizedVectorStore.d.ts.map +1 -0
  141. package/dist/search/QuantizedVectorStore.js +308 -0
  142. package/dist/search/QuantizedVectorStore.js.map +1 -0
  143. package/dist/search/QueryAnalyzer.d.ts +76 -0
  144. package/dist/search/QueryAnalyzer.d.ts.map +1 -0
  145. package/dist/search/QueryAnalyzer.js +228 -0
  146. package/dist/search/QueryAnalyzer.js.map +1 -0
  147. package/dist/search/QueryCostEstimator.d.ts +244 -0
  148. package/dist/search/QueryCostEstimator.d.ts.map +1 -0
  149. package/dist/search/QueryCostEstimator.js +653 -0
  150. package/dist/search/QueryCostEstimator.js.map +1 -0
  151. package/dist/search/QueryPlanCache.d.ts +220 -0
  152. package/dist/search/QueryPlanCache.d.ts.map +1 -0
  153. package/dist/search/QueryPlanCache.js +380 -0
  154. package/dist/search/QueryPlanCache.js.map +1 -0
  155. package/dist/search/QueryPlanner.d.ts +58 -0
  156. package/dist/search/QueryPlanner.d.ts.map +1 -0
  157. package/dist/search/QueryPlanner.js +138 -0
  158. package/dist/search/QueryPlanner.js.map +1 -0
  159. package/dist/search/RankedSearch.d.ts +71 -0
  160. package/dist/search/RankedSearch.d.ts.map +1 -0
  161. package/dist/search/RankedSearch.js +239 -0
  162. package/dist/search/RankedSearch.js.map +1 -0
  163. package/dist/search/ReflectionManager.d.ts +120 -0
  164. package/dist/search/ReflectionManager.d.ts.map +1 -0
  165. package/dist/search/ReflectionManager.js +232 -0
  166. package/dist/search/ReflectionManager.js.map +1 -0
  167. package/dist/search/SavedSearchManager.d.ts +79 -0
  168. package/dist/search/SavedSearchManager.d.ts.map +1 -0
  169. package/dist/search/SavedSearchManager.js +147 -0
  170. package/dist/search/SavedSearchManager.js.map +1 -0
  171. package/dist/search/SearchFilterChain.d.ts +120 -0
  172. package/dist/search/SearchFilterChain.d.ts.map +1 -0
  173. package/dist/search/SearchFilterChain.js +186 -0
  174. package/dist/search/SearchFilterChain.js.map +1 -0
  175. package/dist/search/SearchManager.d.ts +326 -0
  176. package/dist/search/SearchManager.d.ts.map +1 -0
  177. package/dist/search/SearchManager.js +454 -0
  178. package/dist/search/SearchManager.js.map +1 -0
  179. package/dist/search/SearchSuggestions.d.ts +27 -0
  180. package/dist/search/SearchSuggestions.d.ts.map +1 -0
  181. package/dist/search/SearchSuggestions.js +58 -0
  182. package/dist/search/SearchSuggestions.js.map +1 -0
  183. package/dist/search/SemanticSearch.d.ts +149 -0
  184. package/dist/search/SemanticSearch.d.ts.map +1 -0
  185. package/dist/search/SemanticSearch.js +324 -0
  186. package/dist/search/SemanticSearch.js.map +1 -0
  187. package/dist/search/SymbolicSearch.d.ts +61 -0
  188. package/dist/search/SymbolicSearch.d.ts.map +1 -0
  189. package/dist/search/SymbolicSearch.js +164 -0
  190. package/dist/search/SymbolicSearch.js.map +1 -0
  191. package/dist/search/TFIDFEventSync.d.ts +85 -0
  192. package/dist/search/TFIDFEventSync.d.ts.map +1 -0
  193. package/dist/search/TFIDFEventSync.js +134 -0
  194. package/dist/search/TFIDFEventSync.js.map +1 -0
  195. package/dist/search/TFIDFIndexManager.d.ts +151 -0
  196. package/dist/search/TFIDFIndexManager.d.ts.map +1 -0
  197. package/dist/search/TFIDFIndexManager.js +433 -0
  198. package/dist/search/TFIDFIndexManager.js.map +1 -0
  199. package/dist/search/VectorStore.d.ts +235 -0
  200. package/dist/search/VectorStore.d.ts.map +1 -0
  201. package/dist/search/VectorStore.js +312 -0
  202. package/dist/search/VectorStore.js.map +1 -0
  203. package/dist/search/index.d.ts +35 -0
  204. package/dist/search/index.d.ts.map +1 -0
  205. package/dist/search/index.js +53 -0
  206. package/dist/search/index.js.map +1 -0
  207. package/dist/types/index.d.ts +13 -0
  208. package/dist/types/index.d.ts.map +1 -0
  209. package/dist/types/index.js +13 -0
  210. package/dist/types/index.js.map +1 -0
  211. package/dist/types/types.d.ts +1811 -0
  212. package/dist/types/types.d.ts.map +1 -0
  213. package/dist/types/types.js +10 -0
  214. package/dist/types/types.js.map +1 -0
  215. package/dist/utils/BatchProcessor.d.ts +271 -0
  216. package/dist/utils/BatchProcessor.d.ts.map +1 -0
  217. package/dist/utils/BatchProcessor.js +377 -0
  218. package/dist/utils/BatchProcessor.js.map +1 -0
  219. package/dist/utils/MemoryMonitor.d.ts +176 -0
  220. package/dist/utils/MemoryMonitor.d.ts.map +1 -0
  221. package/dist/utils/MemoryMonitor.js +306 -0
  222. package/dist/utils/MemoryMonitor.js.map +1 -0
  223. package/dist/utils/WorkerPoolManager.d.ts +233 -0
  224. package/dist/utils/WorkerPoolManager.d.ts.map +1 -0
  225. package/dist/utils/WorkerPoolManager.js +421 -0
  226. package/dist/utils/WorkerPoolManager.js.map +1 -0
  227. package/dist/utils/compressedCache.d.ts +221 -0
  228. package/dist/utils/compressedCache.d.ts.map +1 -0
  229. package/dist/utils/compressedCache.js +349 -0
  230. package/dist/utils/compressedCache.js.map +1 -0
  231. package/dist/utils/compressionUtil.d.ts +214 -0
  232. package/dist/utils/compressionUtil.d.ts.map +1 -0
  233. package/dist/utils/compressionUtil.js +248 -0
  234. package/dist/utils/compressionUtil.js.map +1 -0
  235. package/dist/utils/constants.d.ts +245 -0
  236. package/dist/utils/constants.d.ts.map +1 -0
  237. package/dist/utils/constants.js +253 -0
  238. package/dist/utils/constants.js.map +1 -0
  239. package/dist/utils/entityUtils.d.ts +379 -0
  240. package/dist/utils/entityUtils.d.ts.map +1 -0
  241. package/dist/utils/entityUtils.js +649 -0
  242. package/dist/utils/entityUtils.js.map +1 -0
  243. package/dist/utils/errors.d.ts +95 -0
  244. package/dist/utils/errors.d.ts.map +1 -0
  245. package/dist/utils/errors.js +146 -0
  246. package/dist/utils/errors.js.map +1 -0
  247. package/dist/utils/formatters.d.ts +145 -0
  248. package/dist/utils/formatters.d.ts.map +1 -0
  249. package/dist/utils/formatters.js +133 -0
  250. package/dist/utils/formatters.js.map +1 -0
  251. package/dist/utils/index.d.ts +26 -0
  252. package/dist/utils/index.d.ts.map +1 -0
  253. package/dist/utils/index.js +88 -0
  254. package/dist/utils/index.js.map +1 -0
  255. package/dist/utils/indexes.d.ts +270 -0
  256. package/dist/utils/indexes.d.ts.map +1 -0
  257. package/dist/utils/indexes.js +527 -0
  258. package/dist/utils/indexes.js.map +1 -0
  259. package/dist/utils/logger.d.ts +31 -0
  260. package/dist/utils/logger.d.ts.map +1 -0
  261. package/dist/utils/logger.js +41 -0
  262. package/dist/utils/logger.js.map +1 -0
  263. package/dist/utils/operationUtils.d.ts +124 -0
  264. package/dist/utils/operationUtils.d.ts.map +1 -0
  265. package/dist/utils/operationUtils.js +176 -0
  266. package/dist/utils/operationUtils.js.map +1 -0
  267. package/dist/utils/parallelUtils.d.ts +76 -0
  268. package/dist/utils/parallelUtils.d.ts.map +1 -0
  269. package/dist/utils/parallelUtils.js +192 -0
  270. package/dist/utils/parallelUtils.js.map +1 -0
  271. package/dist/utils/schemas.d.ts +556 -0
  272. package/dist/utils/schemas.d.ts.map +1 -0
  273. package/dist/utils/schemas.js +485 -0
  274. package/dist/utils/schemas.js.map +1 -0
  275. package/dist/utils/searchAlgorithms.d.ts +99 -0
  276. package/dist/utils/searchAlgorithms.d.ts.map +1 -0
  277. package/dist/utils/searchAlgorithms.js +168 -0
  278. package/dist/utils/searchAlgorithms.js.map +1 -0
  279. package/dist/utils/searchCache.d.ts +108 -0
  280. package/dist/utils/searchCache.d.ts.map +1 -0
  281. package/dist/utils/searchCache.js +210 -0
  282. package/dist/utils/searchCache.js.map +1 -0
  283. package/dist/utils/taskScheduler.d.ts +294 -0
  284. package/dist/utils/taskScheduler.d.ts.map +1 -0
  285. package/dist/utils/taskScheduler.js +487 -0
  286. package/dist/utils/taskScheduler.js.map +1 -0
  287. package/dist/workers/index.d.ts +12 -0
  288. package/dist/workers/index.d.ts.map +1 -0
  289. package/dist/workers/index.js +10 -0
  290. package/dist/workers/index.js.map +1 -0
  291. package/dist/workers/levenshteinWorker.d.ts +60 -0
  292. package/dist/workers/levenshteinWorker.d.ts.map +1 -0
  293. package/dist/workers/levenshteinWorker.js +99 -0
  294. package/dist/workers/levenshteinWorker.js.map +1 -0
  295. package/package.json +69 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Semantic Search Manager
3
+ *
4
+ * Phase 4 Sprint 12: Orchestrates embedding service and vector store
5
+ * to provide semantic similarity search capabilities.
6
+ *
7
+ * @module search/SemanticSearch
8
+ */
9
+ import type { Entity, EmbeddingService, IVectorStore, SemanticSearchResult, SemanticIndexOptions, ReadonlyKnowledgeGraph } from '../types/index.js';
10
+ /**
11
+ * Convert an entity to a text representation for embedding.
12
+ *
13
+ * Creates a structured text that captures the entity's key information
14
+ * for generating meaningful embeddings.
15
+ *
16
+ * @param entity - Entity to convert
17
+ * @returns Text representation suitable for embedding
18
+ */
19
+ export declare function entityToText(entity: Entity): string;
20
+ /**
21
+ * Semantic Search Manager
22
+ *
23
+ * Provides semantic similarity search by converting entities to embeddings
24
+ * and storing them in a vector store. Supports search by query text and
25
+ * finding similar entities.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const semanticSearch = new SemanticSearch(embeddingService, vectorStore);
30
+ * await semanticSearch.indexAll(graph);
31
+ * const results = await semanticSearch.search(graph, "machine learning");
32
+ * ```
33
+ */
34
+ export declare class SemanticSearch {
35
+ /** Embedding service for generating vectors */
36
+ private embeddingService;
37
+ /** Vector store for storing and searching embeddings */
38
+ private vectorStore;
39
+ /** Whether embeddings have been indexed */
40
+ private indexed;
41
+ /** Number of entities currently indexed */
42
+ private indexedCount;
43
+ /**
44
+ * Create a semantic search manager.
45
+ *
46
+ * @param embeddingService - Service for generating embeddings
47
+ * @param vectorStore - Store for vector storage and search
48
+ */
49
+ constructor(embeddingService: EmbeddingService, vectorStore?: IVectorStore);
50
+ /**
51
+ * Index all entities in the knowledge graph.
52
+ *
53
+ * Generates embeddings for all entities and stores them in the vector store.
54
+ * Can be called incrementally - only indexes entities that aren't already indexed.
55
+ *
56
+ * Phase 9B: Supports cancellation via AbortSignal in options.
57
+ *
58
+ * @param graph - Knowledge graph to index
59
+ * @param options - Indexing options (includes signal for cancellation)
60
+ * @returns Index statistics
61
+ * @throws {OperationCancelledError} If operation is cancelled via signal (Phase 9B)
62
+ */
63
+ indexAll(graph: ReadonlyKnowledgeGraph, options?: SemanticIndexOptions): Promise<{
64
+ indexed: number;
65
+ skipped: number;
66
+ errors: number;
67
+ }>;
68
+ /**
69
+ * Index a single entity.
70
+ *
71
+ * @param entity - Entity to index
72
+ * @returns True if indexed successfully
73
+ */
74
+ indexEntity(entity: Entity): Promise<boolean>;
75
+ /**
76
+ * Remove an entity from the index.
77
+ *
78
+ * @param entityName - Name of entity to remove
79
+ * @returns True if found and removed
80
+ */
81
+ removeEntity(entityName: string): boolean;
82
+ /**
83
+ * Search for entities semantically similar to a query.
84
+ *
85
+ * @param graph - Knowledge graph to search in
86
+ * @param query - Search query text
87
+ * @param limit - Maximum number of results (default: 10)
88
+ * @param minSimilarity - Minimum similarity threshold (default: 0)
89
+ * @returns Array of search results with similarity scores
90
+ */
91
+ search(graph: ReadonlyKnowledgeGraph, query: string, limit?: number, minSimilarity?: number): Promise<SemanticSearchResult[]>;
92
+ /**
93
+ * Find entities similar to a given entity.
94
+ *
95
+ * @param graph - Knowledge graph to search in
96
+ * @param entityName - Name of entity to find similar entities for
97
+ * @param limit - Maximum number of results (default: 10)
98
+ * @param minSimilarity - Minimum similarity threshold (default: 0)
99
+ * @returns Array of search results with similarity scores
100
+ */
101
+ findSimilar(graph: ReadonlyKnowledgeGraph, entityName: string, limit?: number, minSimilarity?: number): Promise<SemanticSearchResult[]>;
102
+ /**
103
+ * Get the embedding service.
104
+ *
105
+ * @returns Embedding service instance
106
+ */
107
+ getEmbeddingService(): EmbeddingService;
108
+ /**
109
+ * Get the vector store.
110
+ *
111
+ * @returns Vector store instance
112
+ */
113
+ getVectorStore(): IVectorStore;
114
+ /**
115
+ * Check if the index has been built.
116
+ *
117
+ * @returns True if indexAll has been called
118
+ */
119
+ isIndexed(): boolean;
120
+ /**
121
+ * Get the number of indexed entities.
122
+ *
123
+ * @returns Number of entities in the vector store
124
+ */
125
+ getIndexedCount(): number;
126
+ /**
127
+ * Clear all indexed embeddings.
128
+ */
129
+ clearIndex(): void;
130
+ /**
131
+ * Check if semantic search is available.
132
+ *
133
+ * @returns True if embedding service is ready
134
+ */
135
+ isAvailable(): Promise<boolean>;
136
+ /**
137
+ * Get semantic search statistics.
138
+ *
139
+ * @returns Statistics about the semantic search index
140
+ */
141
+ getStats(): {
142
+ indexed: boolean;
143
+ indexedCount: number;
144
+ provider: string;
145
+ model: string;
146
+ dimensions: number;
147
+ };
148
+ }
149
+ //# sourceMappingURL=SemanticSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../../src/search/SemanticSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAK3B;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBnD;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IACzB,+CAA+C;IAC/C,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,wDAAwD;IACxD,OAAO,CAAC,WAAW,CAAe;IAElC,2CAA2C;IAC3C,OAAO,CAAC,OAAO,CAAS;IAExB,2CAA2C;IAC3C,OAAO,CAAC,YAAY,CAAK;IAEzB;;;;;OAKG;gBACS,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,CAAC,EAAE,YAAY;IAK1E;;;;;;;;;;;;OAYG;IACG,QAAQ,CACZ,KAAK,EAAE,sBAAsB,EAC7B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAwEhE;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYnD;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQzC;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAA6C,EACpD,aAAa,GAAE,MAA8C,GAC5D,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsClC;;;;;;;;OAQG;IACG,WAAW,CACf,KAAK,EAAE,sBAAsB,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAA6C,EACpD,aAAa,GAAE,MAA8C,GAC5D,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAoDlC;;;;OAIG;IACH,mBAAmB,IAAI,gBAAgB;IAIvC;;;;OAIG;IACH,cAAc,IAAI,YAAY;IAI9B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;OAIG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB;CASF"}
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Semantic Search Manager
3
+ *
4
+ * Phase 4 Sprint 12: Orchestrates embedding service and vector store
5
+ * to provide semantic similarity search capabilities.
6
+ *
7
+ * @module search/SemanticSearch
8
+ */
9
+ import { InMemoryVectorStore } from './VectorStore.js';
10
+ import { EMBEDDING_DEFAULTS, SEMANTIC_SEARCH_LIMITS } from '../utils/constants.js';
11
+ import { checkCancellation } from '../utils/index.js';
12
+ /**
13
+ * Convert an entity to a text representation for embedding.
14
+ *
15
+ * Creates a structured text that captures the entity's key information
16
+ * for generating meaningful embeddings.
17
+ *
18
+ * @param entity - Entity to convert
19
+ * @returns Text representation suitable for embedding
20
+ */
21
+ export function entityToText(entity) {
22
+ const parts = [];
23
+ // Name and type are most important
24
+ parts.push(`${entity.name} (${entity.entityType})`);
25
+ // Add observations (limited to prevent overly long text)
26
+ if (entity.observations.length > 0) {
27
+ const observationText = entity.observations.slice(0, 10).join('. ');
28
+ parts.push(observationText);
29
+ }
30
+ // Add tags if present
31
+ if (entity.tags && entity.tags.length > 0) {
32
+ parts.push(`Tags: ${entity.tags.join(', ')}`);
33
+ }
34
+ return parts.join('\n');
35
+ }
36
+ /**
37
+ * Semantic Search Manager
38
+ *
39
+ * Provides semantic similarity search by converting entities to embeddings
40
+ * and storing them in a vector store. Supports search by query text and
41
+ * finding similar entities.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const semanticSearch = new SemanticSearch(embeddingService, vectorStore);
46
+ * await semanticSearch.indexAll(graph);
47
+ * const results = await semanticSearch.search(graph, "machine learning");
48
+ * ```
49
+ */
50
+ export class SemanticSearch {
51
+ /** Embedding service for generating vectors */
52
+ embeddingService;
53
+ /** Vector store for storing and searching embeddings */
54
+ vectorStore;
55
+ /** Whether embeddings have been indexed */
56
+ indexed = false;
57
+ /** Number of entities currently indexed */
58
+ indexedCount = 0;
59
+ /**
60
+ * Create a semantic search manager.
61
+ *
62
+ * @param embeddingService - Service for generating embeddings
63
+ * @param vectorStore - Store for vector storage and search
64
+ */
65
+ constructor(embeddingService, vectorStore) {
66
+ this.embeddingService = embeddingService;
67
+ this.vectorStore = vectorStore || new InMemoryVectorStore();
68
+ }
69
+ /**
70
+ * Index all entities in the knowledge graph.
71
+ *
72
+ * Generates embeddings for all entities and stores them in the vector store.
73
+ * Can be called incrementally - only indexes entities that aren't already indexed.
74
+ *
75
+ * Phase 9B: Supports cancellation via AbortSignal in options.
76
+ *
77
+ * @param graph - Knowledge graph to index
78
+ * @param options - Indexing options (includes signal for cancellation)
79
+ * @returns Index statistics
80
+ * @throws {OperationCancelledError} If operation is cancelled via signal (Phase 9B)
81
+ */
82
+ async indexAll(graph, options = {}) {
83
+ const { forceReindex = false, onProgress, batchSize = EMBEDDING_DEFAULTS.DEFAULT_BATCH_SIZE, signal, } = options;
84
+ // Check for early cancellation
85
+ checkCancellation(signal, 'indexAll');
86
+ let indexed = 0;
87
+ let skipped = 0;
88
+ let errors = 0;
89
+ const entities = graph.entities;
90
+ const total = entities.length;
91
+ // Collect entities to index
92
+ const toIndex = [];
93
+ for (const entity of entities) {
94
+ if (forceReindex || !this.vectorStore.has(entity.name)) {
95
+ toIndex.push(entity);
96
+ }
97
+ else {
98
+ skipped++;
99
+ }
100
+ }
101
+ // Process in batches
102
+ for (let i = 0; i < toIndex.length; i += batchSize) {
103
+ // Check for cancellation between batches
104
+ checkCancellation(signal, 'indexAll');
105
+ const batch = toIndex.slice(i, i + batchSize);
106
+ const texts = batch.map(entityToText);
107
+ try {
108
+ const embeddings = await this.embeddingService.embedBatch(texts);
109
+ for (let j = 0; j < batch.length; j++) {
110
+ this.vectorStore.add(batch[j].name, embeddings[j]);
111
+ indexed++;
112
+ }
113
+ }
114
+ catch (error) {
115
+ // Try individual embeddings on batch failure
116
+ for (const entity of batch) {
117
+ // Check for cancellation during fallback
118
+ checkCancellation(signal, 'indexAll');
119
+ try {
120
+ const text = entityToText(entity);
121
+ const embedding = await this.embeddingService.embed(text);
122
+ this.vectorStore.add(entity.name, embedding);
123
+ indexed++;
124
+ }
125
+ catch {
126
+ errors++;
127
+ }
128
+ }
129
+ }
130
+ // Report progress
131
+ if (onProgress) {
132
+ onProgress(indexed + skipped + errors, total);
133
+ }
134
+ }
135
+ this.indexed = true;
136
+ this.indexedCount = this.vectorStore.size();
137
+ return { indexed, skipped, errors };
138
+ }
139
+ /**
140
+ * Index a single entity.
141
+ *
142
+ * @param entity - Entity to index
143
+ * @returns True if indexed successfully
144
+ */
145
+ async indexEntity(entity) {
146
+ try {
147
+ const text = entityToText(entity);
148
+ const embedding = await this.embeddingService.embed(text);
149
+ this.vectorStore.add(entity.name, embedding);
150
+ this.indexedCount = this.vectorStore.size();
151
+ return true;
152
+ }
153
+ catch {
154
+ return false;
155
+ }
156
+ }
157
+ /**
158
+ * Remove an entity from the index.
159
+ *
160
+ * @param entityName - Name of entity to remove
161
+ * @returns True if found and removed
162
+ */
163
+ removeEntity(entityName) {
164
+ const removed = this.vectorStore.remove(entityName);
165
+ if (removed) {
166
+ this.indexedCount = this.vectorStore.size();
167
+ }
168
+ return removed;
169
+ }
170
+ /**
171
+ * Search for entities semantically similar to a query.
172
+ *
173
+ * @param graph - Knowledge graph to search in
174
+ * @param query - Search query text
175
+ * @param limit - Maximum number of results (default: 10)
176
+ * @param minSimilarity - Minimum similarity threshold (default: 0)
177
+ * @returns Array of search results with similarity scores
178
+ */
179
+ async search(graph, query, limit = SEMANTIC_SEARCH_LIMITS.DEFAULT_LIMIT, minSimilarity = SEMANTIC_SEARCH_LIMITS.MIN_SIMILARITY) {
180
+ // Ensure limit is within bounds
181
+ const effectiveLimit = Math.min(limit, SEMANTIC_SEARCH_LIMITS.MAX_LIMIT);
182
+ // Generate embedding for query
183
+ const queryEmbedding = await this.embeddingService.embed(query);
184
+ // Search vector store
185
+ const vectorResults = this.vectorStore.search(queryEmbedding, effectiveLimit * 2); // Get extra for filtering
186
+ // Convert to SemanticSearchResult with entity lookup
187
+ const entityMap = new Map();
188
+ for (const entity of graph.entities) {
189
+ entityMap.set(entity.name, entity);
190
+ }
191
+ const results = [];
192
+ for (const result of vectorResults) {
193
+ if (result.score < minSimilarity) {
194
+ continue;
195
+ }
196
+ const entity = entityMap.get(result.name);
197
+ if (entity) {
198
+ results.push({
199
+ entity,
200
+ similarity: result.score,
201
+ });
202
+ }
203
+ if (results.length >= effectiveLimit) {
204
+ break;
205
+ }
206
+ }
207
+ return results;
208
+ }
209
+ /**
210
+ * Find entities similar to a given entity.
211
+ *
212
+ * @param graph - Knowledge graph to search in
213
+ * @param entityName - Name of entity to find similar entities for
214
+ * @param limit - Maximum number of results (default: 10)
215
+ * @param minSimilarity - Minimum similarity threshold (default: 0)
216
+ * @returns Array of search results with similarity scores
217
+ */
218
+ async findSimilar(graph, entityName, limit = SEMANTIC_SEARCH_LIMITS.DEFAULT_LIMIT, minSimilarity = SEMANTIC_SEARCH_LIMITS.MIN_SIMILARITY) {
219
+ // Get the entity's embedding
220
+ const embedding = this.vectorStore.get(entityName);
221
+ if (!embedding) {
222
+ // Try to find and index the entity
223
+ const entity = graph.entities.find(e => e.name === entityName);
224
+ if (entity) {
225
+ await this.indexEntity(entity);
226
+ return this.findSimilar(graph, entityName, limit, minSimilarity);
227
+ }
228
+ return [];
229
+ }
230
+ // Ensure limit is within bounds
231
+ const effectiveLimit = Math.min(limit, SEMANTIC_SEARCH_LIMITS.MAX_LIMIT);
232
+ // Search vector store (request extra to filter out self)
233
+ const vectorResults = this.vectorStore.search(embedding, effectiveLimit + 1);
234
+ // Convert to SemanticSearchResult with entity lookup
235
+ const entityMap = new Map();
236
+ for (const entity of graph.entities) {
237
+ entityMap.set(entity.name, entity);
238
+ }
239
+ const results = [];
240
+ for (const result of vectorResults) {
241
+ // Skip self
242
+ if (result.name === entityName) {
243
+ continue;
244
+ }
245
+ if (result.score < minSimilarity) {
246
+ continue;
247
+ }
248
+ const entity = entityMap.get(result.name);
249
+ if (entity) {
250
+ results.push({
251
+ entity,
252
+ similarity: result.score,
253
+ });
254
+ }
255
+ if (results.length >= effectiveLimit) {
256
+ break;
257
+ }
258
+ }
259
+ return results;
260
+ }
261
+ /**
262
+ * Get the embedding service.
263
+ *
264
+ * @returns Embedding service instance
265
+ */
266
+ getEmbeddingService() {
267
+ return this.embeddingService;
268
+ }
269
+ /**
270
+ * Get the vector store.
271
+ *
272
+ * @returns Vector store instance
273
+ */
274
+ getVectorStore() {
275
+ return this.vectorStore;
276
+ }
277
+ /**
278
+ * Check if the index has been built.
279
+ *
280
+ * @returns True if indexAll has been called
281
+ */
282
+ isIndexed() {
283
+ return this.indexed;
284
+ }
285
+ /**
286
+ * Get the number of indexed entities.
287
+ *
288
+ * @returns Number of entities in the vector store
289
+ */
290
+ getIndexedCount() {
291
+ return this.indexedCount;
292
+ }
293
+ /**
294
+ * Clear all indexed embeddings.
295
+ */
296
+ clearIndex() {
297
+ this.vectorStore.clear();
298
+ this.indexed = false;
299
+ this.indexedCount = 0;
300
+ }
301
+ /**
302
+ * Check if semantic search is available.
303
+ *
304
+ * @returns True if embedding service is ready
305
+ */
306
+ async isAvailable() {
307
+ return this.embeddingService.isReady();
308
+ }
309
+ /**
310
+ * Get semantic search statistics.
311
+ *
312
+ * @returns Statistics about the semantic search index
313
+ */
314
+ getStats() {
315
+ return {
316
+ indexed: this.indexed,
317
+ indexedCount: this.indexedCount,
318
+ provider: this.embeddingService.provider,
319
+ model: this.embeddingService.model,
320
+ dimensions: this.embeddingService.dimensions,
321
+ };
322
+ }
323
+ }
324
+ //# sourceMappingURL=SemanticSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../../src/search/SemanticSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Symbolic Search Layer
3
+ *
4
+ * Phase 11: Provides metadata-based filtering using structured predicates.
5
+ * Part of the three-layer hybrid search architecture.
6
+ *
7
+ * @module search/SymbolicSearch
8
+ */
9
+ import type { Entity, SymbolicFilters } from '../types/index.js';
10
+ /**
11
+ * Result from symbolic search with match score.
12
+ */
13
+ export interface SymbolicResult {
14
+ entity: Entity;
15
+ score: number;
16
+ matchedFilters: string[];
17
+ }
18
+ /**
19
+ * Symbolic Search provides metadata-based filtering.
20
+ *
21
+ * Filters entities using structured predicates on tags, types,
22
+ * dates, importance, and hierarchy.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const symbolic = new SymbolicSearch();
27
+ * const results = symbolic.search(entities, {
28
+ * tags: ['important'],
29
+ * entityTypes: ['person'],
30
+ * importance: { min: 5 }
31
+ * });
32
+ * ```
33
+ */
34
+ export declare class SymbolicSearch {
35
+ /**
36
+ * Filter entities using structured metadata predicates.
37
+ * All filters are AND-combined.
38
+ *
39
+ * @param entities - Entities to filter
40
+ * @param filters - Symbolic filter criteria
41
+ * @returns Filtered entities with match scores
42
+ */
43
+ search(entities: readonly Entity[], filters: SymbolicFilters): SymbolicResult[];
44
+ /**
45
+ * Evaluate all filters against an entity.
46
+ */
47
+ private evaluateFilters;
48
+ /**
49
+ * Get entities matching a specific tag.
50
+ */
51
+ byTag(entities: readonly Entity[], tag: string): Entity[];
52
+ /**
53
+ * Get entities of a specific type.
54
+ */
55
+ byType(entities: readonly Entity[], entityType: string): Entity[];
56
+ /**
57
+ * Get entities within importance range.
58
+ */
59
+ byImportance(entities: readonly Entity[], min: number, max: number): Entity[];
60
+ }
61
+ //# sourceMappingURL=SymbolicSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SymbolicSearch.d.ts","sourceRoot":"","sources":["../../src/search/SymbolicSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,EAAE;IAc/E;;OAEG;IACH,OAAO,CAAC,eAAe;IAyGvB;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAMzD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAMjE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;CAM9E"}