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,86 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import xxhashFactory from 'xxhash-wasm';
4
+ const MERKLE_DIR = '.codevault';
5
+ const MERKLE_FILENAME = 'merkle.json';
6
+ let hasherPromise = null;
7
+ async function getHasher() {
8
+ if (!hasherPromise) {
9
+ hasherPromise = xxhashFactory().then(factory => factory.h64);
10
+ }
11
+ return hasherPromise;
12
+ }
13
+ function ensureObject(value) {
14
+ if (!value || typeof value !== 'object') {
15
+ return {};
16
+ }
17
+ return value;
18
+ }
19
+ export async function computeFastHash(input) {
20
+ const hasher = await getHasher();
21
+ let normalized;
22
+ if (typeof input === 'string') {
23
+ normalized = input;
24
+ }
25
+ else if (Buffer.isBuffer(input)) {
26
+ normalized = input.toString('utf8');
27
+ }
28
+ else {
29
+ normalized = String(input ?? '');
30
+ }
31
+ const result = hasher(normalized);
32
+ return typeof result === 'bigint' ? result.toString() : String(result);
33
+ }
34
+ export function loadMerkle(basePath = '.') {
35
+ const absolute = path.resolve(basePath);
36
+ const merklePath = path.join(absolute, MERKLE_DIR, MERKLE_FILENAME);
37
+ if (!fs.existsSync(merklePath)) {
38
+ return {};
39
+ }
40
+ try {
41
+ const data = fs.readFileSync(merklePath, 'utf8');
42
+ return ensureObject(JSON.parse(data));
43
+ }
44
+ catch (error) {
45
+ return {};
46
+ }
47
+ }
48
+ export function saveMerkle(basePath = '.', merkle = {}) {
49
+ const absolute = path.resolve(basePath);
50
+ const dirPath = path.join(absolute, MERKLE_DIR);
51
+ const merklePath = path.join(dirPath, MERKLE_FILENAME);
52
+ fs.mkdirSync(dirPath, { recursive: true });
53
+ fs.writeFileSync(merklePath, JSON.stringify(merkle, null, 2));
54
+ }
55
+ export function toPosixPath(relativePath) {
56
+ if (typeof relativePath !== 'string') {
57
+ return null;
58
+ }
59
+ return relativePath.split(path.sep).join('/');
60
+ }
61
+ export function normalizeToProjectPath(basePath = '.', filePath) {
62
+ if (typeof filePath !== 'string' || filePath.length === 0) {
63
+ return null;
64
+ }
65
+ const absoluteBase = path.resolve(basePath);
66
+ const absoluteFile = path.isAbsolute(filePath) ? filePath : path.join(absoluteBase, filePath);
67
+ const relative = path.relative(absoluteBase, absoluteFile);
68
+ if (!relative || relative.startsWith('..')) {
69
+ return null;
70
+ }
71
+ return toPosixPath(relative);
72
+ }
73
+ export function removeMerkleEntry(merkle, relativePath) {
74
+ if (!merkle || typeof merkle !== 'object') {
75
+ return false;
76
+ }
77
+ if (Object.prototype.hasOwnProperty.call(merkle, relativePath)) {
78
+ delete merkle[relativePath];
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ export function cloneMerkle(merkle) {
84
+ return JSON.parse(JSON.stringify(ensureObject(merkle)));
85
+ }
86
+ //# sourceMappingURL=merkle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/indexer/merkle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { EmbeddingProvider } from '../providers/base.js';
2
+ export interface UpdateIndexOptions {
3
+ repoPath?: string;
4
+ provider?: string;
5
+ changedFiles?: string[];
6
+ deletedFiles?: string[];
7
+ onProgress?: ((event: any) => void) | null;
8
+ embeddingProvider?: EmbeddingProvider | null;
9
+ encrypt?: string;
10
+ }
11
+ export interface UpdateIndexResult {
12
+ success: boolean;
13
+ processedChunks: number;
14
+ totalChunks: number;
15
+ provider: string;
16
+ errors: any[];
17
+ }
18
+ export declare function updateIndex({ repoPath, provider, changedFiles, deletedFiles, onProgress, embeddingProvider, encrypt }?: UpdateIndexOptions): Promise<UpdateIndexResult>;
19
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/indexer/update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmB9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,EAChC,QAAc,EACd,QAAiB,EACjB,YAAiB,EACjB,YAAiB,EACjB,UAAiB,EACjB,iBAAwB,EACxB,OAAmB,EACpB,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwBtD"}
@@ -0,0 +1,40 @@
1
+ import path from 'path';
2
+ import { normalizeToProjectPath } from './merkle.js';
3
+ import { indexProject } from '../core/indexer.js';
4
+ function normalizeList(basePath, values = []) {
5
+ const normalized = new Set();
6
+ if (!Array.isArray(values)) {
7
+ return [];
8
+ }
9
+ for (const value of values) {
10
+ const relative = normalizeToProjectPath(basePath, value);
11
+ if (relative) {
12
+ normalized.add(relative);
13
+ }
14
+ }
15
+ return Array.from(normalized);
16
+ }
17
+ export async function updateIndex({ repoPath = '.', provider = 'auto', changedFiles = [], deletedFiles = [], onProgress = null, embeddingProvider = null, encrypt = undefined } = {}) {
18
+ const root = path.resolve(repoPath);
19
+ const normalizedChanged = normalizeList(root, changedFiles);
20
+ const normalizedDeleted = normalizeList(root, deletedFiles);
21
+ if (normalizedChanged.length === 0 && normalizedDeleted.length === 0) {
22
+ return {
23
+ success: true,
24
+ processedChunks: 0,
25
+ totalChunks: 0,
26
+ provider,
27
+ errors: []
28
+ };
29
+ }
30
+ return indexProject({
31
+ repoPath: root,
32
+ provider,
33
+ onProgress,
34
+ changedFiles: normalizedChanged,
35
+ deletedFiles: normalizedDeleted,
36
+ embeddingProviderOverride: embeddingProvider,
37
+ encryptMode: encrypt
38
+ });
39
+ }
40
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/indexer/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,SAAS,aAAa,CAAC,QAAgB,EAAE,SAAmB,EAAE;IAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,QAAQ,GAAG,GAAG,EACd,QAAQ,GAAG,MAAM,EACjB,YAAY,GAAG,EAAE,EACjB,YAAY,GAAG,EAAE,EACjB,UAAU,GAAG,IAAI,EACjB,iBAAiB,GAAG,IAAI,EACxB,OAAO,GAAG,SAAS,KACG,EAAE;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE5D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,CAAC;YAClB,WAAW,EAAE,CAAC;YACd,QAAQ;YACR,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,IAAI;QACd,QAAQ;QACR,UAAU;QACV,YAAY,EAAE,iBAAiB;QAC/B,YAAY,EAAE,iBAAiB;QAC/B,yBAAyB,EAAE,iBAAiB;QAC5C,WAAW,EAAE,OAAO;KACrB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ import chokidar from 'chokidar';
2
+ interface WatchOptions {
3
+ repoPath?: string;
4
+ provider?: string;
5
+ debounceMs?: number;
6
+ onBatch?: ((event: {
7
+ changed: string[];
8
+ deleted: string[];
9
+ }) => void) | null;
10
+ logger?: Console;
11
+ encrypt?: string;
12
+ }
13
+ interface WatchController {
14
+ watcher: ReturnType<typeof chokidar.watch>;
15
+ ready: Promise<void>;
16
+ close: () => Promise<void>;
17
+ flush: () => Promise<void>;
18
+ }
19
+ export declare function startWatch({ repoPath, provider, debounceMs, onBatch, logger, encrypt }?: WatchOptions): WatchController;
20
+ export {};
21
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/indexer/watch.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAmBhC,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAc,EACd,QAAiB,EACjB,UAAgC,EAChC,OAAc,EACd,MAAgB,EAChB,OAAmB,EACpB,GAAE,YAAiB,GAAG,eAAe,CAwOrC"}
@@ -0,0 +1,222 @@
1
+ import chokidar from 'chokidar';
2
+ import path from 'path';
3
+ import { updateIndex } from './update.js';
4
+ import { toPosixPath } from './merkle.js';
5
+ import { getSupportedLanguageExtensions } from '../languages/rules.js';
6
+ import { createEmbeddingProvider } from '../providers/index.js';
7
+ const DEFAULT_DEBOUNCE_MS = 500;
8
+ const IGNORED_GLOBS = [
9
+ '**/node_modules/**',
10
+ '**/.git/**',
11
+ '**/.codevault/**',
12
+ '**/dist/**',
13
+ '**/build/**',
14
+ '**/tmp/**',
15
+ '**/.tmp/**',
16
+ '**/vendor/**'
17
+ ];
18
+ export function startWatch({ repoPath = '.', provider = 'auto', debounceMs = DEFAULT_DEBOUNCE_MS, onBatch = null, logger = console, encrypt = undefined } = {}) {
19
+ const root = path.resolve(repoPath);
20
+ const supportedExtensions = new Set((getSupportedLanguageExtensions() || []).map(ext => ext.toLowerCase()));
21
+ const watchPatterns = supportedExtensions.size > 0
22
+ ? Array.from(supportedExtensions).map(ext => `**/*${ext}`)
23
+ : ['**/*'];
24
+ const effectiveDebounce = Number.isFinite(Number.parseInt(String(debounceMs), 10))
25
+ ? Math.max(Number.parseInt(String(debounceMs), 10), 50)
26
+ : DEFAULT_DEBOUNCE_MS;
27
+ const watcher = chokidar.watch(watchPatterns, {
28
+ cwd: root,
29
+ ignoreInitial: true,
30
+ ignored: IGNORED_GLOBS,
31
+ awaitWriteFinish: {
32
+ stabilityThreshold: Math.max(effectiveDebounce, 100),
33
+ pollInterval: 50
34
+ },
35
+ persistent: true
36
+ });
37
+ const ready = new Promise(resolve => {
38
+ watcher.once('ready', resolve);
39
+ });
40
+ const pendingChanges = new Set();
41
+ const pendingDeletes = new Set();
42
+ let timer = null;
43
+ let processing = false;
44
+ let flushPromise = null;
45
+ let embeddingProviderInstance = null;
46
+ let embeddingProviderInitPromise = null;
47
+ let providerInitErrorLogged = false;
48
+ async function getEmbeddingProviderInstance() {
49
+ if (embeddingProviderInstance) {
50
+ return embeddingProviderInstance;
51
+ }
52
+ if (!embeddingProviderInitPromise) {
53
+ embeddingProviderInitPromise = (async () => {
54
+ const instance = createEmbeddingProvider(provider);
55
+ if (instance.init) {
56
+ await instance.init();
57
+ }
58
+ embeddingProviderInstance = instance;
59
+ return instance;
60
+ })();
61
+ }
62
+ try {
63
+ return await embeddingProviderInitPromise;
64
+ }
65
+ catch (error) {
66
+ embeddingProviderInitPromise = null;
67
+ embeddingProviderInstance = null;
68
+ throw error;
69
+ }
70
+ }
71
+ function scheduleFlush() {
72
+ if (timer) {
73
+ clearTimeout(timer);
74
+ }
75
+ timer = setTimeout(() => {
76
+ timer = null;
77
+ void flush();
78
+ }, effectiveDebounce);
79
+ }
80
+ function recordChange(type, filePath) {
81
+ const normalized = toPosixPath(filePath);
82
+ if (!normalized) {
83
+ return;
84
+ }
85
+ const ext = path.extname(normalized).toLowerCase();
86
+ if (supportedExtensions.size > 0 && !supportedExtensions.has(ext)) {
87
+ return;
88
+ }
89
+ if (type === 'unlink') {
90
+ pendingDeletes.add(normalized);
91
+ pendingChanges.delete(normalized);
92
+ }
93
+ else {
94
+ pendingChanges.add(normalized);
95
+ pendingDeletes.delete(normalized);
96
+ }
97
+ scheduleFlush();
98
+ }
99
+ async function flush() {
100
+ // FIX: Prevent race condition by waiting for any in-progress flush
101
+ if (flushPromise) {
102
+ await flushPromise;
103
+ // After waiting, check if new changes came in and reschedule
104
+ if (pendingChanges.size > 0 || pendingDeletes.size > 0) {
105
+ scheduleFlush();
106
+ }
107
+ return;
108
+ }
109
+ if (pendingChanges.size === 0 && pendingDeletes.size === 0) {
110
+ return;
111
+ }
112
+ // Atomically capture and clear pending changes
113
+ const changed = Array.from(pendingChanges);
114
+ const deleted = Array.from(pendingDeletes);
115
+ pendingChanges.clear();
116
+ pendingDeletes.clear();
117
+ processing = true;
118
+ // Create promise that tracks this flush operation
119
+ flushPromise = (async () => {
120
+ try {
121
+ let embeddingProviderOverride = null;
122
+ try {
123
+ embeddingProviderOverride = await getEmbeddingProviderInstance();
124
+ }
125
+ catch (providerError) {
126
+ if (!providerInitErrorLogged && logger && typeof logger.error === 'function') {
127
+ logger.error('CodeVault watch provider initialization failed:', providerError);
128
+ providerInitErrorLogged = true;
129
+ }
130
+ }
131
+ await updateIndex({
132
+ repoPath: root,
133
+ provider,
134
+ changedFiles: changed,
135
+ deletedFiles: deleted,
136
+ embeddingProvider: embeddingProviderOverride,
137
+ encrypt
138
+ });
139
+ if (typeof onBatch === 'function') {
140
+ await onBatch({ changed, deleted });
141
+ }
142
+ else if (logger && typeof logger.log === 'function') {
143
+ logger.log(`CodeVault watch: indexed ${changed.length} changed / ${deleted.length} deleted files`);
144
+ }
145
+ }
146
+ catch (error) {
147
+ if (logger && typeof logger.error === 'function') {
148
+ logger.error('CodeVault watch update failed:', error);
149
+ }
150
+ }
151
+ finally {
152
+ processing = false;
153
+ flushPromise = null;
154
+ // Check if new changes came in during processing
155
+ if (pendingChanges.size > 0 || pendingDeletes.size > 0) {
156
+ scheduleFlush();
157
+ }
158
+ }
159
+ })();
160
+ await flushPromise;
161
+ }
162
+ async function waitForProcessing() {
163
+ while (processing) {
164
+ await new Promise(resolve => setTimeout(resolve, 10));
165
+ }
166
+ }
167
+ const settleDelay = Math.min(effectiveDebounce, 200);
168
+ async function drainPending() {
169
+ if (timer) {
170
+ clearTimeout(timer);
171
+ timer = null;
172
+ }
173
+ await flush();
174
+ await waitForProcessing();
175
+ if (pendingChanges.size > 0 || pendingDeletes.size > 0 || timer) {
176
+ if (timer) {
177
+ clearTimeout(timer);
178
+ timer = null;
179
+ }
180
+ await flush();
181
+ await waitForProcessing();
182
+ return;
183
+ }
184
+ if (settleDelay > 0) {
185
+ await new Promise(resolve => setTimeout(resolve, settleDelay));
186
+ }
187
+ if (timer) {
188
+ clearTimeout(timer);
189
+ timer = null;
190
+ }
191
+ if (pendingChanges.size > 0 || pendingDeletes.size > 0) {
192
+ await flush();
193
+ await waitForProcessing();
194
+ }
195
+ }
196
+ watcher.on('add', file => recordChange('add', file));
197
+ watcher.on('change', file => recordChange('change', file));
198
+ watcher.on('unlink', file => recordChange('unlink', file));
199
+ watcher.on('error', error => {
200
+ if (logger && typeof logger.error === 'function') {
201
+ logger.error('CodeVault watch error:', error);
202
+ }
203
+ });
204
+ return {
205
+ watcher,
206
+ ready,
207
+ async close() {
208
+ if (timer) {
209
+ clearTimeout(timer);
210
+ timer = null;
211
+ }
212
+ // FIX: Clean up embedding provider on close
213
+ if (embeddingProviderInstance) {
214
+ embeddingProviderInstance = null;
215
+ embeddingProviderInitPromise = null;
216
+ }
217
+ await watcher.close();
218
+ },
219
+ flush: drainPending
220
+ };
221
+ }
222
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/indexer/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface LanguageRule {
2
+ lang: string;
3
+ ts: any;
4
+ nodeTypes: string[];
5
+ subdivisionTypes?: Record<string, string[]>;
6
+ variableTypes?: string[];
7
+ commentPattern: RegExp | null;
8
+ }
9
+ export declare const LANG_RULES: Record<string, LanguageRule>;
10
+ export declare function getSupportedLanguageExtensions(): string[];
11
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/languages/rules.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA6WnD,CAAC;AAEF,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAEzD"}