codevault 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/dist/chunking/file-grouper.d.ts +39 -0
  2. package/dist/chunking/file-grouper.d.ts.map +1 -0
  3. package/dist/chunking/file-grouper.js +164 -0
  4. package/dist/chunking/file-grouper.js.map +1 -0
  5. package/dist/chunking/semantic-chunker.d.ts +37 -0
  6. package/dist/chunking/semantic-chunker.d.ts.map +1 -0
  7. package/dist/chunking/semantic-chunker.js +157 -0
  8. package/dist/chunking/semantic-chunker.js.map +1 -0
  9. package/dist/chunking/token-counter.d.ts +28 -0
  10. package/dist/chunking/token-counter.d.ts.map +1 -0
  11. package/dist/chunking/token-counter.js +207 -0
  12. package/dist/chunking/token-counter.js.map +1 -0
  13. package/dist/cli/commands/ask-cmd.d.ts +3 -0
  14. package/dist/cli/commands/ask-cmd.d.ts.map +1 -0
  15. package/dist/cli/commands/ask-cmd.js +130 -0
  16. package/dist/cli/commands/ask-cmd.js.map +1 -0
  17. package/dist/cli/commands/chat-cmd.d.ts +3 -0
  18. package/dist/cli/commands/chat-cmd.d.ts.map +1 -0
  19. package/dist/cli/commands/chat-cmd.js +194 -0
  20. package/dist/cli/commands/chat-cmd.js.map +1 -0
  21. package/dist/cli/commands/config-cmd.d.ts +3 -0
  22. package/dist/cli/commands/config-cmd.d.ts.map +1 -0
  23. package/dist/cli/commands/config-cmd.js +245 -0
  24. package/dist/cli/commands/config-cmd.js.map +1 -0
  25. package/dist/cli/commands/context.d.ts +3 -0
  26. package/dist/cli/commands/context.d.ts.map +1 -0
  27. package/dist/cli/commands/context.js +98 -0
  28. package/dist/cli/commands/context.js.map +1 -0
  29. package/dist/cli/commands/interactive-config.d.ts +2 -0
  30. package/dist/cli/commands/interactive-config.d.ts.map +1 -0
  31. package/dist/cli/commands/interactive-config.js +274 -0
  32. package/dist/cli/commands/interactive-config.js.map +1 -0
  33. package/dist/cli.d.ts +3 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +403 -0
  36. package/dist/cli.js.map +1 -0
  37. package/dist/codemap/io.d.ts +5 -0
  38. package/dist/codemap/io.d.ts.map +1 -0
  39. package/dist/codemap/io.js +30 -0
  40. package/dist/codemap/io.js.map +1 -0
  41. package/dist/config/apply-env.d.ts +15 -0
  42. package/dist/config/apply-env.d.ts.map +1 -0
  43. package/dist/config/apply-env.js +91 -0
  44. package/dist/config/apply-env.js.map +1 -0
  45. package/dist/config/constants.d.ts +326 -0
  46. package/dist/config/constants.d.ts.map +1 -0
  47. package/dist/config/constants.js +214 -0
  48. package/dist/config/constants.js.map +1 -0
  49. package/dist/config/loader.d.ts +57 -0
  50. package/dist/config/loader.d.ts.map +1 -0
  51. package/dist/config/loader.js +287 -0
  52. package/dist/config/loader.js.map +1 -0
  53. package/dist/config/types.d.ts +46 -0
  54. package/dist/config/types.d.ts.map +1 -0
  55. package/dist/config/types.js +2 -0
  56. package/dist/config/types.js.map +1 -0
  57. package/dist/context/packs.d.ts +33 -0
  58. package/dist/context/packs.d.ts.map +1 -0
  59. package/dist/context/packs.js +180 -0
  60. package/dist/context/packs.js.map +1 -0
  61. package/dist/core/batch-indexer.d.ts +56 -0
  62. package/dist/core/batch-indexer.d.ts.map +1 -0
  63. package/dist/core/batch-indexer.js +189 -0
  64. package/dist/core/batch-indexer.js.map +1 -0
  65. package/dist/core/indexer.d.ts +3 -0
  66. package/dist/core/indexer.d.ts.map +1 -0
  67. package/dist/core/indexer.js +600 -0
  68. package/dist/core/indexer.js.map +1 -0
  69. package/dist/core/metadata.d.ts +19 -0
  70. package/dist/core/metadata.d.ts.map +1 -0
  71. package/dist/core/metadata.js +161 -0
  72. package/dist/core/metadata.js.map +1 -0
  73. package/dist/core/search.d.ts +7 -0
  74. package/dist/core/search.d.ts.map +1 -0
  75. package/dist/core/search.js +545 -0
  76. package/dist/core/search.js.map +1 -0
  77. package/dist/core/symbol-extractor.d.ts +3 -0
  78. package/dist/core/symbol-extractor.d.ts.map +1 -0
  79. package/dist/core/symbol-extractor.js +78 -0
  80. package/dist/core/symbol-extractor.js.map +1 -0
  81. package/dist/core/types.d.ts +104 -0
  82. package/dist/core/types.d.ts.map +1 -0
  83. package/dist/core/types.js +2 -0
  84. package/dist/core/types.js.map +1 -0
  85. package/dist/database/db.d.ts +102 -0
  86. package/dist/database/db.d.ts.map +1 -0
  87. package/dist/database/db.js +366 -0
  88. package/dist/database/db.js.map +1 -0
  89. package/dist/indexer/merkle.d.ts +13 -0
  90. package/dist/indexer/merkle.d.ts.map +1 -0
  91. package/dist/indexer/merkle.js +86 -0
  92. package/dist/indexer/merkle.js.map +1 -0
  93. package/dist/indexer/update.d.ts +19 -0
  94. package/dist/indexer/update.d.ts.map +1 -0
  95. package/dist/indexer/update.js +40 -0
  96. package/dist/indexer/update.js.map +1 -0
  97. package/dist/indexer/watch.d.ts +21 -0
  98. package/dist/indexer/watch.d.ts.map +1 -0
  99. package/dist/indexer/watch.js +222 -0
  100. package/dist/indexer/watch.js.map +1 -0
  101. package/dist/languages/rules.d.ts +11 -0
  102. package/dist/languages/rules.d.ts.map +1 -0
  103. package/dist/languages/rules.js +371 -0
  104. package/dist/languages/rules.js.map +1 -0
  105. package/dist/languages/tree-sitter-loader.d.ts +27 -0
  106. package/dist/languages/tree-sitter-loader.d.ts.map +1 -0
  107. package/dist/languages/tree-sitter-loader.js +76 -0
  108. package/dist/languages/tree-sitter-loader.js.map +1 -0
  109. package/dist/mcp/schemas.d.ts +166 -0
  110. package/dist/mcp/schemas.d.ts.map +1 -0
  111. package/dist/mcp/schemas.js +159 -0
  112. package/dist/mcp/schemas.js.map +1 -0
  113. package/dist/mcp/tools/ask-codebase.d.ts +85 -0
  114. package/dist/mcp/tools/ask-codebase.d.ts.map +1 -0
  115. package/dist/mcp/tools/ask-codebase.js +125 -0
  116. package/dist/mcp/tools/ask-codebase.js.map +1 -0
  117. package/dist/mcp/tools/use-context-pack.d.ts +57 -0
  118. package/dist/mcp/tools/use-context-pack.d.ts.map +1 -0
  119. package/dist/mcp/tools/use-context-pack.js +91 -0
  120. package/dist/mcp/tools/use-context-pack.js.map +1 -0
  121. package/dist/mcp-server.d.ts +3 -0
  122. package/dist/mcp-server.d.ts.map +1 -0
  123. package/dist/mcp-server.js +511 -0
  124. package/dist/mcp-server.js.map +1 -0
  125. package/dist/providers/base.d.ts +39 -0
  126. package/dist/providers/base.d.ts.map +1 -0
  127. package/dist/providers/base.js +198 -0
  128. package/dist/providers/base.js.map +1 -0
  129. package/dist/providers/chat-llm.d.ts +30 -0
  130. package/dist/providers/chat-llm.d.ts.map +1 -0
  131. package/dist/providers/chat-llm.js +85 -0
  132. package/dist/providers/chat-llm.js.map +1 -0
  133. package/dist/providers/index.d.ts +5 -0
  134. package/dist/providers/index.d.ts.map +1 -0
  135. package/dist/providers/index.js +12 -0
  136. package/dist/providers/index.js.map +1 -0
  137. package/dist/providers/openai.d.ts +14 -0
  138. package/dist/providers/openai.d.ts.map +1 -0
  139. package/dist/providers/openai.js +122 -0
  140. package/dist/providers/openai.js.map +1 -0
  141. package/dist/providers/token-counter.d.ts +2 -0
  142. package/dist/providers/token-counter.d.ts.map +1 -0
  143. package/dist/providers/token-counter.js +18 -0
  144. package/dist/providers/token-counter.js.map +1 -0
  145. package/dist/ranking/api-reranker.d.ts +18 -0
  146. package/dist/ranking/api-reranker.d.ts.map +1 -0
  147. package/dist/ranking/api-reranker.js +134 -0
  148. package/dist/ranking/api-reranker.js.map +1 -0
  149. package/dist/ranking/symbol-boost.d.ts +15 -0
  150. package/dist/ranking/symbol-boost.d.ts.map +1 -0
  151. package/dist/ranking/symbol-boost.js +175 -0
  152. package/dist/ranking/symbol-boost.js.map +1 -0
  153. package/dist/search/bm25.d.ts +17 -0
  154. package/dist/search/bm25.d.ts.map +1 -0
  155. package/dist/search/bm25.js +56 -0
  156. package/dist/search/bm25.js.map +1 -0
  157. package/dist/search/hybrid.d.ts +21 -0
  158. package/dist/search/hybrid.d.ts.map +1 -0
  159. package/dist/search/hybrid.js +50 -0
  160. package/dist/search/hybrid.js.map +1 -0
  161. package/dist/search/scope.d.ts +5 -0
  162. package/dist/search/scope.d.ts.map +1 -0
  163. package/dist/search/scope.js +107 -0
  164. package/dist/search/scope.js.map +1 -0
  165. package/dist/storage/encrypted-chunks.d.ts +40 -0
  166. package/dist/storage/encrypted-chunks.d.ts.map +1 -0
  167. package/dist/storage/encrypted-chunks.js +238 -0
  168. package/dist/storage/encrypted-chunks.js.map +1 -0
  169. package/dist/symbols/extract.d.ts +15 -0
  170. package/dist/symbols/extract.d.ts.map +1 -0
  171. package/dist/symbols/extract.js +208 -0
  172. package/dist/symbols/extract.js.map +1 -0
  173. package/dist/symbols/graph.d.ts +3 -0
  174. package/dist/symbols/graph.d.ts.map +1 -0
  175. package/dist/symbols/graph.js +89 -0
  176. package/dist/symbols/graph.js.map +1 -0
  177. package/dist/synthesis/conversational-synthesizer.d.ts +61 -0
  178. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -0
  179. package/dist/synthesis/conversational-synthesizer.js +286 -0
  180. package/dist/synthesis/conversational-synthesizer.js.map +1 -0
  181. package/dist/synthesis/markdown-formatter.d.ts +13 -0
  182. package/dist/synthesis/markdown-formatter.d.ts.map +1 -0
  183. package/dist/synthesis/markdown-formatter.js +104 -0
  184. package/dist/synthesis/markdown-formatter.js.map +1 -0
  185. package/dist/synthesis/prompt-builder.d.ts +21 -0
  186. package/dist/synthesis/prompt-builder.d.ts.map +1 -0
  187. package/dist/synthesis/prompt-builder.js +129 -0
  188. package/dist/synthesis/prompt-builder.js.map +1 -0
  189. package/dist/synthesis/synthesizer.d.ts +30 -0
  190. package/dist/synthesis/synthesizer.d.ts.map +1 -0
  191. package/dist/synthesis/synthesizer.js +210 -0
  192. package/dist/synthesis/synthesizer.js.map +1 -0
  193. package/dist/types/ast.d.ts +3 -0
  194. package/dist/types/ast.d.ts.map +1 -0
  195. package/dist/types/ast.js +2 -0
  196. package/dist/types/ast.js.map +1 -0
  197. package/dist/types/codemap.d.ts +58 -0
  198. package/dist/types/codemap.d.ts.map +1 -0
  199. package/dist/types/codemap.js +224 -0
  200. package/dist/types/codemap.js.map +1 -0
  201. package/dist/types/context-pack.d.ts +47 -0
  202. package/dist/types/context-pack.d.ts.map +1 -0
  203. package/dist/types/context-pack.js +44 -0
  204. package/dist/types/context-pack.js.map +1 -0
  205. package/dist/types/search.d.ts +15 -0
  206. package/dist/types/search.d.ts.map +1 -0
  207. package/dist/types/search.js +11 -0
  208. package/dist/types/search.js.map +1 -0
  209. package/dist/utils/cli-ui.d.ts +44 -0
  210. package/dist/utils/cli-ui.d.ts.map +1 -0
  211. package/dist/utils/cli-ui.js +139 -0
  212. package/dist/utils/cli-ui.js.map +1 -0
  213. package/dist/utils/indexer-with-progress.d.ts +10 -0
  214. package/dist/utils/indexer-with-progress.d.ts.map +1 -0
  215. package/dist/utils/indexer-with-progress.js +43 -0
  216. package/dist/utils/indexer-with-progress.js.map +1 -0
  217. package/dist/utils/logger.d.ts +55 -0
  218. package/dist/utils/logger.d.ts.map +1 -0
  219. package/dist/utils/logger.js +121 -0
  220. package/dist/utils/logger.js.map +1 -0
  221. package/dist/utils/mutex.d.ts +63 -0
  222. package/dist/utils/mutex.d.ts.map +1 -0
  223. package/dist/utils/mutex.js +123 -0
  224. package/dist/utils/mutex.js.map +1 -0
  225. package/dist/utils/path-helpers.d.ts +27 -0
  226. package/dist/utils/path-helpers.d.ts.map +1 -0
  227. package/dist/utils/path-helpers.js +55 -0
  228. package/dist/utils/path-helpers.js.map +1 -0
  229. package/dist/utils/rate-limiter.d.ts +34 -0
  230. package/dist/utils/rate-limiter.d.ts.map +1 -0
  231. package/dist/utils/rate-limiter.js +178 -0
  232. package/dist/utils/rate-limiter.js.map +1 -0
  233. package/dist/utils/scan-patterns.d.ts +5 -0
  234. package/dist/utils/scan-patterns.d.ts.map +1 -0
  235. package/dist/utils/scan-patterns.js +29 -0
  236. package/dist/utils/scan-patterns.js.map +1 -0
  237. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../src/core/symbol-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import type { EmbeddingProvider } from '../providers/base.js';
2
+ export interface IndexProjectOptions {
3
+ repoPath?: string;
4
+ provider?: string;
5
+ onProgress?: ((event: ProgressEvent) => void) | null;
6
+ changedFiles?: string[] | null;
7
+ deletedFiles?: string[];
8
+ embeddingProviderOverride?: EmbeddingProvider | null;
9
+ encryptMode?: string;
10
+ }
11
+ export interface IndexProjectResult {
12
+ success: boolean;
13
+ processedChunks: number;
14
+ totalChunks: number;
15
+ provider: string;
16
+ errors: IndexError[];
17
+ chunkingStats?: ChunkingStats;
18
+ tokenStats?: any;
19
+ }
20
+ export interface ProgressEvent {
21
+ type: string;
22
+ file?: string;
23
+ symbol?: string;
24
+ chunkId?: string;
25
+ fileCount?: number;
26
+ languages?: number;
27
+ stats?: {
28
+ chunks?: number;
29
+ merged?: number;
30
+ subdivided?: number;
31
+ skipped?: number;
32
+ };
33
+ }
34
+ export interface IndexError {
35
+ type: string;
36
+ file?: string;
37
+ chunkId?: string;
38
+ error: string;
39
+ }
40
+ export interface ChunkingStats {
41
+ totalNodes: number;
42
+ skippedSmall: number;
43
+ subdivided: number;
44
+ statementFallback: number;
45
+ normalChunks: number;
46
+ mergedSmall: number;
47
+ fileGrouped?: number;
48
+ functionsGrouped?: number;
49
+ }
50
+ export interface SearchResult {
51
+ type: string;
52
+ lang: string;
53
+ path: string;
54
+ sha: string;
55
+ data: string | null;
56
+ meta: {
57
+ id?: string;
58
+ symbol: string;
59
+ score: number;
60
+ searchType?: string;
61
+ intent?: string;
62
+ description?: string;
63
+ vectorScore?: number;
64
+ hybridScore?: number;
65
+ bm25Score?: number;
66
+ bm25Rank?: number;
67
+ vectorRank?: number;
68
+ rerankerScore?: number;
69
+ rerankerRank?: number;
70
+ symbolBoost?: number;
71
+ symbolBoostSources?: string[];
72
+ scoreRaw?: number;
73
+ };
74
+ }
75
+ export interface SearchCodeResult {
76
+ success: boolean;
77
+ query?: string;
78
+ searchType?: string;
79
+ intentionResults?: number;
80
+ vectorResults?: number;
81
+ provider: string;
82
+ scope?: any;
83
+ reranker?: string;
84
+ hybrid?: {
85
+ enabled: boolean;
86
+ bm25Enabled: boolean;
87
+ fused?: boolean;
88
+ bm25Candidates?: number;
89
+ };
90
+ symbolBoost?: {
91
+ enabled: boolean;
92
+ boosted: boolean;
93
+ };
94
+ results: SearchResult[];
95
+ error?: string;
96
+ message?: string;
97
+ suggestion?: string;
98
+ }
99
+ export interface GetChunkResult {
100
+ success: boolean;
101
+ code?: string;
102
+ error?: string;
103
+ }
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,102 @@
1
+ export interface DatabaseChunk {
2
+ id: string;
3
+ file_path: string;
4
+ symbol: string;
5
+ sha: string;
6
+ lang: string;
7
+ chunk_type: string;
8
+ embedding: Buffer;
9
+ embedding_provider: string;
10
+ embedding_dimensions: number;
11
+ codevault_tags?: string;
12
+ codevault_intent?: string;
13
+ codevault_description?: string;
14
+ doc_comments?: string;
15
+ variables_used?: string;
16
+ context_info?: string;
17
+ created_at?: string;
18
+ updated_at?: string;
19
+ }
20
+ export declare class CodeVaultDatabase {
21
+ private db;
22
+ private insertChunkStmt;
23
+ private getChunksStmt;
24
+ private deleteChunksStmt;
25
+ private initialized;
26
+ constructor(dbPath: string);
27
+ /**
28
+ * Ensure database tables exist and prepare statements
29
+ */
30
+ private ensureTablesExist;
31
+ initialize(dimensions: number): Promise<void>;
32
+ insertChunk(params: {
33
+ id: string;
34
+ file_path: string;
35
+ symbol: string;
36
+ sha: string;
37
+ lang: string;
38
+ chunk_type: string;
39
+ embedding: number[];
40
+ embedding_provider: string;
41
+ embedding_dimensions: number;
42
+ codevault_tags: string[];
43
+ codevault_intent: string | null;
44
+ codevault_description: string | null;
45
+ doc_comments: string | null;
46
+ variables_used: any[];
47
+ context_info: any;
48
+ }): void;
49
+ deleteChunks(chunkIds: string[]): Promise<void>;
50
+ getChunks(providerName: string, dimensions: number): Promise<DatabaseChunk[]>;
51
+ getExistingDimensions(): Promise<Array<{
52
+ embedding_provider: string;
53
+ embedding_dimensions: number;
54
+ }>>;
55
+ recordIntention(normalizedQuery: string, originalQuery: string, targetSha: string, confidence: number): Promise<void>;
56
+ searchByIntention(normalizedQuery: string): Promise<any>;
57
+ recordQueryPattern(pattern: string): Promise<void>;
58
+ getOverviewChunks(limit: number): Promise<Array<{
59
+ id: string;
60
+ file_path: string;
61
+ symbol: string;
62
+ sha: string;
63
+ lang: string;
64
+ }>>;
65
+ /**
66
+ * Begin a database transaction
67
+ */
68
+ beginTransaction(): Promise<void>;
69
+ /**
70
+ * Commit the current transaction
71
+ */
72
+ commit(): Promise<void>;
73
+ /**
74
+ * Rollback the current transaction
75
+ */
76
+ rollback(): Promise<void>;
77
+ /**
78
+ * Execute a function within a transaction
79
+ * Automatically commits on success and rolls back on error
80
+ *
81
+ * Note: better-sqlite3 transactions MUST be synchronous
82
+ * If you need async operations, use beginTransaction/commit/rollback manually
83
+ */
84
+ transaction<T>(fn: () => Promise<T> | T): Promise<T>;
85
+ /**
86
+ * Close the database connection
87
+ * IMPORTANT: Always call this when done to avoid resource leaks
88
+ */
89
+ close(): void;
90
+ /**
91
+ * Get database statistics for monitoring
92
+ */
93
+ getStats(): {
94
+ isOpen: boolean;
95
+ inTransaction: boolean;
96
+ readonly: boolean;
97
+ memory: boolean;
98
+ };
99
+ }
100
+ export declare function initDatabase(dimensions: number, basePath?: string): Promise<void>;
101
+ export { CodeVaultDatabase as Database };
102
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,366 @@
1
+ import Database from 'better-sqlite3';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { log } from '../utils/logger.js';
5
+ export class CodeVaultDatabase {
6
+ db;
7
+ insertChunkStmt;
8
+ getChunksStmt;
9
+ deleteChunksStmt = null;
10
+ initialized = false;
11
+ constructor(dbPath) {
12
+ this.db = new Database(dbPath);
13
+ // Enable WAL mode for better concurrency
14
+ this.db.pragma('journal_mode = WAL');
15
+ // Optimize for performance
16
+ this.db.pragma('synchronous = NORMAL');
17
+ this.db.pragma('cache_size = -64000'); // 64MB cache
18
+ this.db.pragma('temp_store = MEMORY');
19
+ this.db.pragma('mmap_size = 30000000000'); // 30GB mmap
20
+ // Check if tables exist and create if needed
21
+ this.ensureTablesExist();
22
+ }
23
+ /**
24
+ * Ensure database tables exist and prepare statements
25
+ */
26
+ ensureTablesExist() {
27
+ // Create tables if they don't exist
28
+ this.db.exec(`
29
+ CREATE TABLE IF NOT EXISTS code_chunks (
30
+ id TEXT PRIMARY KEY,
31
+ file_path TEXT NOT NULL,
32
+ symbol TEXT NOT NULL,
33
+ sha TEXT NOT NULL,
34
+ lang TEXT NOT NULL,
35
+ chunk_type TEXT DEFAULT 'function',
36
+ embedding BLOB,
37
+ embedding_provider TEXT,
38
+ embedding_dimensions INTEGER,
39
+ codevault_tags TEXT,
40
+ codevault_intent TEXT,
41
+ codevault_description TEXT,
42
+ doc_comments TEXT,
43
+ variables_used TEXT,
44
+ context_info TEXT,
45
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
46
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
47
+ )
48
+ `);
49
+ // Prepare statements after tables exist
50
+ this.insertChunkStmt = this.db.prepare(`
51
+ INSERT OR REPLACE INTO code_chunks
52
+ (id, file_path, symbol, sha, lang, chunk_type, embedding, embedding_provider, embedding_dimensions,
53
+ codevault_tags, codevault_intent, codevault_description, doc_comments, variables_used, context_info, updated_at)
54
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
55
+ `);
56
+ this.getChunksStmt = this.db.prepare(`
57
+ SELECT id, file_path, symbol, sha, lang, chunk_type, embedding,
58
+ codevault_tags, codevault_intent, codevault_description,
59
+ embedding_provider, embedding_dimensions
60
+ FROM code_chunks
61
+ WHERE embedding_provider = ? AND embedding_dimensions = ?
62
+ ORDER BY created_at DESC
63
+ `);
64
+ }
65
+ async initialize(dimensions) {
66
+ this.db.exec(`
67
+ CREATE TABLE IF NOT EXISTS code_chunks (
68
+ id TEXT PRIMARY KEY,
69
+ file_path TEXT NOT NULL,
70
+ symbol TEXT NOT NULL,
71
+ sha TEXT NOT NULL,
72
+ lang TEXT NOT NULL,
73
+ chunk_type TEXT DEFAULT 'function',
74
+ embedding BLOB,
75
+ embedding_provider TEXT,
76
+ embedding_dimensions INTEGER,
77
+ codevault_tags TEXT,
78
+ codevault_intent TEXT,
79
+ codevault_description TEXT,
80
+ doc_comments TEXT,
81
+ variables_used TEXT,
82
+ context_info TEXT,
83
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
84
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
85
+ )
86
+ `);
87
+ this.db.exec(`
88
+ CREATE TABLE IF NOT EXISTS intention_cache (
89
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
90
+ query_normalized TEXT NOT NULL,
91
+ original_query TEXT NOT NULL,
92
+ target_sha TEXT NOT NULL,
93
+ confidence REAL DEFAULT 1.0,
94
+ usage_count INTEGER DEFAULT 1,
95
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
96
+ last_used DATETIME DEFAULT CURRENT_TIMESTAMP
97
+ )
98
+ `);
99
+ this.db.exec(`
100
+ CREATE TABLE IF NOT EXISTS query_patterns (
101
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
102
+ pattern TEXT NOT NULL UNIQUE,
103
+ frequency INTEGER DEFAULT 1,
104
+ typical_results TEXT,
105
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
106
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
107
+ )
108
+ `);
109
+ const indexes = [
110
+ 'CREATE INDEX IF NOT EXISTS idx_file_path ON code_chunks(file_path)',
111
+ 'CREATE INDEX IF NOT EXISTS idx_symbol ON code_chunks(symbol)',
112
+ 'CREATE INDEX IF NOT EXISTS idx_lang ON code_chunks(lang)',
113
+ 'CREATE INDEX IF NOT EXISTS idx_provider ON code_chunks(embedding_provider)',
114
+ 'CREATE INDEX IF NOT EXISTS idx_chunk_type ON code_chunks(chunk_type)',
115
+ 'CREATE INDEX IF NOT EXISTS idx_codevault_tags ON code_chunks(codevault_tags)',
116
+ 'CREATE INDEX IF NOT EXISTS idx_codevault_intent ON code_chunks(codevault_intent)',
117
+ 'CREATE INDEX IF NOT EXISTS idx_lang_provider ON code_chunks(lang, embedding_provider, embedding_dimensions)',
118
+ 'CREATE INDEX IF NOT EXISTS idx_query_normalized ON intention_cache(query_normalized)',
119
+ 'CREATE INDEX IF NOT EXISTS idx_target_sha ON intention_cache(target_sha)',
120
+ 'CREATE INDEX IF NOT EXISTS idx_usage_count ON intention_cache(usage_count DESC)',
121
+ 'CREATE INDEX IF NOT EXISTS idx_pattern_frequency ON query_patterns(frequency DESC)'
122
+ ];
123
+ for (const sql of indexes) {
124
+ this.db.exec(sql);
125
+ }
126
+ // Prepare statements after tables are created
127
+ if (!this.initialized) {
128
+ this.insertChunkStmt = this.db.prepare(`
129
+ INSERT OR REPLACE INTO code_chunks
130
+ (id, file_path, symbol, sha, lang, chunk_type, embedding, embedding_provider, embedding_dimensions,
131
+ codevault_tags, codevault_intent, codevault_description, doc_comments, variables_used, context_info, updated_at)
132
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
133
+ `);
134
+ this.getChunksStmt = this.db.prepare(`
135
+ SELECT id, file_path, symbol, sha, lang, chunk_type, embedding,
136
+ codevault_tags, codevault_intent, codevault_description,
137
+ embedding_provider, embedding_dimensions
138
+ FROM code_chunks
139
+ WHERE embedding_provider = ? AND embedding_dimensions = ?
140
+ ORDER BY created_at DESC
141
+ `);
142
+ this.initialized = true;
143
+ }
144
+ }
145
+ insertChunk(params) {
146
+ try {
147
+ this.insertChunkStmt.run(params.id, params.file_path, params.symbol, params.sha, params.lang, params.chunk_type, Buffer.from(JSON.stringify(params.embedding)), params.embedding_provider, params.embedding_dimensions, JSON.stringify(params.codevault_tags), params.codevault_intent, params.codevault_description, params.doc_comments, JSON.stringify(params.variables_used), JSON.stringify(params.context_info));
148
+ }
149
+ catch (error) {
150
+ log.error('Failed to insert chunk', error, { chunkId: params.id });
151
+ throw error;
152
+ }
153
+ }
154
+ async deleteChunks(chunkIds) {
155
+ if (!Array.isArray(chunkIds) || chunkIds.length === 0) {
156
+ return;
157
+ }
158
+ try {
159
+ const placeholders = chunkIds.map(() => '?').join(', ');
160
+ if (!this.deleteChunksStmt) {
161
+ this.deleteChunksStmt = this.db.prepare(`DELETE FROM code_chunks WHERE id IN (${placeholders})`);
162
+ }
163
+ this.deleteChunksStmt.run(...chunkIds);
164
+ }
165
+ catch (error) {
166
+ log.error('Failed to delete chunks', error, { count: chunkIds.length });
167
+ throw error;
168
+ }
169
+ }
170
+ async getChunks(providerName, dimensions) {
171
+ try {
172
+ return this.getChunksStmt.all(providerName, dimensions);
173
+ }
174
+ catch (error) {
175
+ log.error('Failed to get chunks', error, { provider: providerName, dimensions });
176
+ throw error;
177
+ }
178
+ }
179
+ async getExistingDimensions() {
180
+ try {
181
+ const stmt = this.db.prepare(`
182
+ SELECT DISTINCT embedding_provider, embedding_dimensions
183
+ FROM code_chunks
184
+ LIMIT 10
185
+ `);
186
+ return stmt.all();
187
+ }
188
+ catch (error) {
189
+ log.error('Failed to get existing dimensions', error);
190
+ throw error;
191
+ }
192
+ }
193
+ async recordIntention(normalizedQuery, originalQuery, targetSha, confidence) {
194
+ try {
195
+ const existing = this.db.prepare(`
196
+ SELECT id, usage_count FROM intention_cache
197
+ WHERE query_normalized = ? AND target_sha = ?
198
+ `).get(normalizedQuery, targetSha);
199
+ if (existing) {
200
+ this.db.prepare(`
201
+ UPDATE intention_cache
202
+ SET usage_count = usage_count + 1,
203
+ confidence = ?,
204
+ last_used = CURRENT_TIMESTAMP
205
+ WHERE id = ?
206
+ `).run(confidence, existing.id);
207
+ }
208
+ else {
209
+ this.db.prepare(`
210
+ INSERT INTO intention_cache
211
+ (query_normalized, original_query, target_sha, confidence)
212
+ VALUES (?, ?, ?, ?)
213
+ `).run(normalizedQuery, originalQuery, targetSha, confidence);
214
+ }
215
+ }
216
+ catch (error) {
217
+ log.error('Failed to record intention', error, { query: normalizedQuery });
218
+ throw error;
219
+ }
220
+ }
221
+ async searchByIntention(normalizedQuery) {
222
+ try {
223
+ return this.db.prepare(`
224
+ SELECT
225
+ i.target_sha,
226
+ i.confidence,
227
+ i.usage_count,
228
+ i.original_query,
229
+ c.file_path,
230
+ c.symbol,
231
+ c.lang,
232
+ c.chunk_type
233
+ FROM intention_cache i
234
+ LEFT JOIN code_chunks c ON i.target_sha = c.sha
235
+ WHERE i.query_normalized = ?
236
+ ORDER BY i.confidence DESC, i.usage_count DESC
237
+ LIMIT 1
238
+ `).get(normalizedQuery);
239
+ }
240
+ catch (error) {
241
+ log.error('Failed to search by intention', error, { query: normalizedQuery });
242
+ return null;
243
+ }
244
+ }
245
+ async recordQueryPattern(pattern) {
246
+ try {
247
+ const existing = this.db.prepare(`
248
+ SELECT id, frequency FROM query_patterns WHERE pattern = ?
249
+ `).get(pattern);
250
+ if (existing) {
251
+ this.db.prepare(`
252
+ UPDATE query_patterns
253
+ SET frequency = frequency + 1, updated_at = CURRENT_TIMESTAMP
254
+ WHERE id = ?
255
+ `).run(existing.id);
256
+ }
257
+ else {
258
+ this.db.prepare(`
259
+ INSERT INTO query_patterns (pattern) VALUES (?)
260
+ `).run(pattern);
261
+ }
262
+ }
263
+ catch (error) {
264
+ log.error('Failed to record query pattern', error, { pattern });
265
+ throw error;
266
+ }
267
+ }
268
+ async getOverviewChunks(limit) {
269
+ try {
270
+ return this.db.prepare(`
271
+ SELECT id, file_path, symbol, sha, lang
272
+ FROM code_chunks
273
+ ORDER BY file_path, symbol
274
+ LIMIT ?
275
+ `).all(limit);
276
+ }
277
+ catch (error) {
278
+ log.error('Failed to get overview chunks', error, { limit });
279
+ throw error;
280
+ }
281
+ }
282
+ /**
283
+ * Begin a database transaction
284
+ */
285
+ async beginTransaction() {
286
+ this.db.prepare('BEGIN TRANSACTION').run();
287
+ }
288
+ /**
289
+ * Commit the current transaction
290
+ */
291
+ async commit() {
292
+ this.db.prepare('COMMIT').run();
293
+ }
294
+ /**
295
+ * Rollback the current transaction
296
+ */
297
+ async rollback() {
298
+ this.db.prepare('ROLLBACK').run();
299
+ }
300
+ /**
301
+ * Execute a function within a transaction
302
+ * Automatically commits on success and rolls back on error
303
+ *
304
+ * Note: better-sqlite3 transactions MUST be synchronous
305
+ * If you need async operations, use beginTransaction/commit/rollback manually
306
+ */
307
+ async transaction(fn) {
308
+ try {
309
+ // Start transaction
310
+ this.db.prepare('BEGIN TRANSACTION').run();
311
+ // Execute function (can be async)
312
+ const result = await fn();
313
+ // Commit if successful
314
+ this.db.prepare('COMMIT').run();
315
+ return result;
316
+ }
317
+ catch (error) {
318
+ // Rollback on error
319
+ try {
320
+ this.db.prepare('ROLLBACK').run();
321
+ }
322
+ catch (rollbackError) {
323
+ log.error('Failed to rollback transaction', rollbackError);
324
+ }
325
+ log.error('Transaction failed and was rolled back', error);
326
+ throw error;
327
+ }
328
+ }
329
+ /**
330
+ * Close the database connection
331
+ * IMPORTANT: Always call this when done to avoid resource leaks
332
+ */
333
+ close() {
334
+ try {
335
+ this.db.close();
336
+ log.debug('Database connection closed');
337
+ }
338
+ catch (error) {
339
+ log.error('Failed to close database', error);
340
+ }
341
+ }
342
+ /**
343
+ * Get database statistics for monitoring
344
+ */
345
+ getStats() {
346
+ return {
347
+ isOpen: this.db.open,
348
+ inTransaction: this.db.inTransaction,
349
+ readonly: this.db.readonly,
350
+ memory: this.db.memory,
351
+ };
352
+ }
353
+ }
354
+ export async function initDatabase(dimensions, basePath = '.') {
355
+ const dbPath = path.join(path.resolve(basePath), '.codevault', 'codevault.db');
356
+ const dbDir = path.dirname(dbPath);
357
+ if (!fs.existsSync(dbDir)) {
358
+ fs.mkdirSync(dbDir, { recursive: true });
359
+ }
360
+ const db = new CodeVaultDatabase(dbPath);
361
+ await db.initialize(dimensions);
362
+ db.close();
363
+ }
364
+ // Export as Database for backward compatibility
365
+ export { CodeVaultDatabase as Database };
366
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare function computeFastHash(input: string | Buffer): Promise<string>;
2
+ export interface MerkleEntry {
3
+ shaFile: string;
4
+ chunkShas: string[];
5
+ }
6
+ export type MerkleTree = Record<string, MerkleEntry>;
7
+ export declare function loadMerkle(basePath?: string): MerkleTree;
8
+ export declare function saveMerkle(basePath?: string, merkle?: MerkleTree): void;
9
+ export declare function toPosixPath(relativePath: string | null): string | null;
10
+ export declare function normalizeToProjectPath(basePath?: string, filePath?: string): string | null;
11
+ export declare function removeMerkleEntry(merkle: MerkleTree, relativePath: string): boolean;
12
+ export declare function cloneMerkle(merkle: MerkleTree): MerkleTree;
13
+ //# sourceMappingURL=merkle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/indexer/merkle.ts"],"names":[],"mappings":"AAuBA,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa7E;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,wBAAgB,UAAU,CAAC,QAAQ,SAAM,GAAG,UAAU,CAcrD;AAED,wBAAgB,UAAU,CAAC,QAAQ,SAAM,EAAE,MAAM,GAAE,UAAe,GAAG,IAAI,CAOxE;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKtE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,SAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcvF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAWnF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE1D"}