@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,354 @@
1
+ /**
2
+ * SQLite Storage
3
+ *
4
+ * Handles storage operations for the knowledge graph using better-sqlite3 (native SQLite).
5
+ * Implements IGraphStorage interface for storage abstraction.
6
+ *
7
+ * Benefits over sql.js (WASM):
8
+ * - 3-10x faster than WASM-based SQLite
9
+ * - Native FTS5 full-text search support
10
+ * - ACID transactions with proper durability
11
+ * - Concurrent read access support
12
+ * - No memory overhead from WASM runtime
13
+ * - Direct disk I/O (no manual export/import)
14
+ *
15
+ * Features:
16
+ * - Built-in indexes for O(1) lookups
17
+ * - Referential integrity with ON DELETE CASCADE
18
+ * - FTS5 full-text search on entity names and observations
19
+ *
20
+ * @module core/SQLiteStorage
21
+ */
22
+ import type { KnowledgeGraph, Entity, Relation, ReadonlyKnowledgeGraph, IGraphStorage, LowercaseData } from '../types/index.js';
23
+ /**
24
+ * SQLiteStorage manages persistence of the knowledge graph using native SQLite.
25
+ *
26
+ * Uses better-sqlite3 for native SQLite bindings with full FTS5 support,
27
+ * referential integrity, and proper ACID transactions.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const storage = new SQLiteStorage('/path/to/memory.db');
32
+ * await storage.ensureLoaded();
33
+ * const graph = await storage.loadGraph();
34
+ * ```
35
+ */
36
+ export declare class SQLiteStorage implements IGraphStorage {
37
+ private dbFilePath;
38
+ /**
39
+ * Mutex for thread-safe access to storage operations.
40
+ * Prevents concurrent writes from corrupting the cache.
41
+ * Note: SQLite itself handles file-level locking, but we need
42
+ * to protect our in-memory cache and index operations.
43
+ */
44
+ private mutex;
45
+ /**
46
+ * SQLite database instance.
47
+ */
48
+ private db;
49
+ /**
50
+ * Whether the database has been initialized.
51
+ */
52
+ private initialized;
53
+ /**
54
+ * In-memory cache for fast read operations.
55
+ * Synchronized with SQLite on writes.
56
+ */
57
+ private cache;
58
+ /**
59
+ * O(1) entity lookup by name.
60
+ */
61
+ private nameIndex;
62
+ /**
63
+ * O(1) entity lookup by type.
64
+ */
65
+ private typeIndex;
66
+ /**
67
+ * Pre-computed lowercase data for search optimization.
68
+ */
69
+ private lowercaseCache;
70
+ /**
71
+ * Pending changes counter for batching disk writes.
72
+ * Note: better-sqlite3 writes to disk immediately, but we track for API compatibility.
73
+ */
74
+ private pendingChanges;
75
+ /**
76
+ * Phase 4 Sprint 1: Bidirectional relation cache for O(1) repeated lookups.
77
+ * Maps entity name -> all relations involving that entity (both incoming and outgoing).
78
+ */
79
+ private bidirectionalRelationCache;
80
+ /**
81
+ * Create a new SQLiteStorage instance.
82
+ *
83
+ * @param dbFilePath - Absolute path to the SQLite database file
84
+ */
85
+ constructor(dbFilePath: string);
86
+ /**
87
+ * Initialize the database connection and schema.
88
+ */
89
+ private initialize;
90
+ /**
91
+ * Create database tables, indexes, and FTS5 virtual table.
92
+ */
93
+ private createTables;
94
+ /**
95
+ * Load all data from SQLite into memory cache.
96
+ */
97
+ private loadCache;
98
+ /**
99
+ * Convert a database row to an Entity object.
100
+ */
101
+ private rowToEntity;
102
+ /**
103
+ * Convert a database row to a Relation object.
104
+ */
105
+ private rowToRelation;
106
+ /**
107
+ * Update lowercase cache for an entity.
108
+ */
109
+ private updateLowercaseCache;
110
+ /**
111
+ * Load the knowledge graph (read-only access).
112
+ *
113
+ * @returns Promise resolving to read-only knowledge graph reference
114
+ */
115
+ loadGraph(): Promise<ReadonlyKnowledgeGraph>;
116
+ /**
117
+ * Get a mutable copy of the graph for write operations.
118
+ *
119
+ * @returns Promise resolving to mutable knowledge graph copy
120
+ */
121
+ getGraphForMutation(): Promise<KnowledgeGraph>;
122
+ /**
123
+ * Ensure the storage is loaded/initialized.
124
+ *
125
+ * @returns Promise resolving when ready
126
+ */
127
+ ensureLoaded(): Promise<void>;
128
+ /**
129
+ * Phase 4 Sprint 1: Invalidate bidirectional relation cache for an entity.
130
+ *
131
+ * @param entityName - Entity name to invalidate cache for
132
+ */
133
+ private invalidateBidirectionalCache;
134
+ /**
135
+ * Phase 4 Sprint 1: Clear the entire bidirectional relation cache.
136
+ */
137
+ private clearBidirectionalCache;
138
+ /**
139
+ * Save the entire knowledge graph to storage.
140
+ *
141
+ * THREAD-SAFE: Uses mutex to prevent concurrent write operations.
142
+ *
143
+ * @param graph - The knowledge graph to save
144
+ * @returns Promise resolving when save is complete
145
+ */
146
+ saveGraph(graph: KnowledgeGraph): Promise<void>;
147
+ /**
148
+ * Append a single entity to storage.
149
+ *
150
+ * THREAD-SAFE: Uses mutex to prevent concurrent write operations.
151
+ *
152
+ * @param entity - The entity to append
153
+ * @returns Promise resolving when append is complete
154
+ */
155
+ appendEntity(entity: Entity): Promise<void>;
156
+ /**
157
+ * Append a single relation to storage.
158
+ *
159
+ * THREAD-SAFE: Uses mutex to prevent concurrent write operations.
160
+ *
161
+ * @param relation - The relation to append
162
+ * @returns Promise resolving when append is complete
163
+ */
164
+ appendRelation(relation: Relation): Promise<void>;
165
+ /**
166
+ * Update an entity in storage.
167
+ *
168
+ * THREAD-SAFE: Uses mutex to prevent concurrent write operations.
169
+ *
170
+ * @param entityName - Name of the entity to update
171
+ * @param updates - Partial entity updates to apply
172
+ * @returns Promise resolving to true if found and updated
173
+ */
174
+ updateEntity(entityName: string, updates: Partial<Entity>): Promise<boolean>;
175
+ /**
176
+ * Compact the storage (runs VACUUM to reclaim space).
177
+ *
178
+ * THREAD-SAFE: Uses mutex to prevent concurrent operations.
179
+ *
180
+ * @returns Promise resolving when compaction is complete
181
+ */
182
+ compact(): Promise<void>;
183
+ /**
184
+ * Clear any in-memory cache.
185
+ */
186
+ clearCache(): void;
187
+ /**
188
+ * Get an entity by name in O(1) time.
189
+ *
190
+ * OPTIMIZED: Uses NameIndex for constant-time lookup.
191
+ *
192
+ * @param name - Entity name to look up
193
+ * @returns Entity if found, undefined otherwise
194
+ */
195
+ getEntityByName(name: string): Entity | undefined;
196
+ /**
197
+ * Check if an entity exists by name in O(1) time.
198
+ *
199
+ * @param name - Entity name to check
200
+ * @returns True if entity exists
201
+ */
202
+ hasEntity(name: string): boolean;
203
+ /**
204
+ * Get all entities of a given type in O(1) time.
205
+ *
206
+ * OPTIMIZED: Uses TypeIndex for constant-time lookup of entity names,
207
+ * then uses NameIndex for O(1) entity retrieval.
208
+ *
209
+ * @param entityType - Entity type to filter by (case-insensitive)
210
+ * @returns Array of entities with the given type
211
+ */
212
+ getEntitiesByType(entityType: string): Entity[];
213
+ /**
214
+ * Get all unique entity types in the graph.
215
+ *
216
+ * @returns Array of unique entity types (lowercase)
217
+ */
218
+ getEntityTypes(): string[];
219
+ /**
220
+ * Get pre-computed lowercase data for an entity.
221
+ *
222
+ * @param entityName - Entity name to get lowercase data for
223
+ * @returns LowercaseData if entity exists, undefined otherwise
224
+ */
225
+ getLowercased(entityName: string): LowercaseData | undefined;
226
+ /**
227
+ * Perform full-text search using FTS5.
228
+ *
229
+ * @param query - Search query (supports FTS5 query syntax)
230
+ * @returns Array of matching entity names with relevance scores
231
+ */
232
+ fullTextSearch(query: string): Array<{
233
+ name: string;
234
+ score: number;
235
+ }>;
236
+ /**
237
+ * Perform a simple text search (LIKE-based, case-insensitive).
238
+ *
239
+ * @param searchTerm - Term to search for
240
+ * @returns Array of matching entity names
241
+ */
242
+ simpleSearch(searchTerm: string): string[];
243
+ /**
244
+ * Get the storage path/location.
245
+ *
246
+ * @returns The storage path
247
+ */
248
+ getFilePath(): string;
249
+ /**
250
+ * Get the current pending changes count.
251
+ *
252
+ * @returns Number of pending changes since last reset
253
+ */
254
+ getPendingAppends(): number;
255
+ /**
256
+ * Force persistence to disk (no-op for better-sqlite3 as it writes immediately).
257
+ *
258
+ * @returns Promise resolving when persistence is complete
259
+ */
260
+ flush(): Promise<void>;
261
+ /**
262
+ * Close the database connection.
263
+ */
264
+ close(): void;
265
+ /**
266
+ * Get all relations where the entity is the source (outgoing relations).
267
+ *
268
+ * OPTIMIZED: Uses SQLite index on fromEntity for O(log n) lookup.
269
+ *
270
+ * @param entityName - Entity name to look up outgoing relations for
271
+ * @returns Array of relations where entity is the source
272
+ */
273
+ getRelationsFrom(entityName: string): Relation[];
274
+ /**
275
+ * Get all relations where the entity is the target (incoming relations).
276
+ *
277
+ * OPTIMIZED: Uses SQLite index on toEntity for O(log n) lookup.
278
+ *
279
+ * @param entityName - Entity name to look up incoming relations for
280
+ * @returns Array of relations where entity is the target
281
+ */
282
+ getRelationsTo(entityName: string): Relation[];
283
+ /**
284
+ * Get all relations involving the entity (both incoming and outgoing).
285
+ *
286
+ * OPTIMIZED: Phase 4 Sprint 1 - Uses bidirectional cache for O(1) repeated lookups.
287
+ *
288
+ * @param entityName - Entity name to look up all relations for
289
+ * @returns Array of all relations involving the entity
290
+ */
291
+ getRelationsFor(entityName: string): Relation[];
292
+ /**
293
+ * Check if an entity has any relations.
294
+ *
295
+ * @param entityName - Entity name to check
296
+ * @returns True if entity has any relations
297
+ */
298
+ hasRelations(entityName: string): boolean;
299
+ /**
300
+ * Phase 4 Sprint 11: Ensure embeddings table exists.
301
+ *
302
+ * Creates the embeddings table if it doesn't exist.
303
+ * Separate table from entities to avoid schema migration complexity.
304
+ */
305
+ private ensureEmbeddingsTable;
306
+ /**
307
+ * Phase 4 Sprint 11: Store an embedding for an entity.
308
+ *
309
+ * @param entityName - Name of the entity
310
+ * @param vector - Embedding vector
311
+ * @param model - Model name used for the embedding
312
+ */
313
+ storeEmbedding(entityName: string, vector: number[], model: string): void;
314
+ /**
315
+ * Phase 4 Sprint 11: Get an embedding for an entity.
316
+ *
317
+ * @param entityName - Name of the entity
318
+ * @returns Embedding vector if found, null otherwise
319
+ */
320
+ getEmbedding(entityName: string): number[] | null;
321
+ /**
322
+ * Phase 4 Sprint 11: Load all embeddings from storage.
323
+ *
324
+ * @returns Array of [entityName, vector] pairs
325
+ */
326
+ loadAllEmbeddings(): Promise<[string, number[]][]>;
327
+ /**
328
+ * Phase 4 Sprint 11: Remove an embedding for an entity.
329
+ *
330
+ * @param entityName - Name of the entity
331
+ */
332
+ removeEmbedding(entityName: string): void;
333
+ /**
334
+ * Phase 4 Sprint 11: Clear all embeddings from storage.
335
+ */
336
+ clearAllEmbeddings(): void;
337
+ /**
338
+ * Phase 4 Sprint 11: Check if an entity has an embedding.
339
+ *
340
+ * @param entityName - Name of the entity
341
+ * @returns True if embedding exists
342
+ */
343
+ hasEmbedding(entityName: string): boolean;
344
+ /**
345
+ * Phase 4 Sprint 11: Get embedding statistics.
346
+ *
347
+ * @returns Stats about stored embeddings
348
+ */
349
+ getEmbeddingStats(): {
350
+ count: number;
351
+ models: string[];
352
+ };
353
+ }
354
+ //# sourceMappingURL=SQLiteStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteStorage.d.ts","sourceRoot":"","sources":["../../src/core/SQLiteStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKhI;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,aAAa;IAyDrC,OAAO,CAAC,UAAU;IAxD9B;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAe;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,CAA6B;IAEvC;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;IAErC;;;OAGG;IACH,OAAO,CAAC,KAAK,CAA+B;IAE5C;;OAEG;IACH,OAAO,CAAC,SAAS,CAA8B;IAE/C;;OAEG;IACH,OAAO,CAAC,SAAS,CAA8B;IAE/C;;OAEG;IACH,OAAO,CAAC,cAAc,CAAyC;IAE/D;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAa;IAEnC;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAsC;IAExE;;;;OAIG;gBACiB,UAAU,EAAE,MAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkFpB;;OAEG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAKlD;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;IAYpD;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAIpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAI/B;;;;;;;OAOG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ErD;;;;;;;OAOG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjD;;;;;;;OAOG;IACG,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCvD;;;;;;;;OAQG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDlF;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAgBlB;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAY/C;;;;OAIG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAM5D;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBrE;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB1C;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAUb;;;;;;;OAOG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAqBhD;;;;;;;OAOG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAqB9C;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAiC/C;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAiBzC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkBzE;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAmBjD;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAkBxD;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAYzC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAW1B;;;;;OAKG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAazC;;;;OAIG;IACH,iBAAiB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAmBzD"}