codevault 1.7.3 → 1.7.4

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 (215) hide show
  1. package/README.md +18 -5
  2. package/dist/chunking/semantic-chunker.d.ts.map +1 -1
  3. package/dist/chunking/semantic-chunker.js +20 -7
  4. package/dist/chunking/semantic-chunker.js.map +1 -1
  5. package/dist/cli/commands/index-cmd.d.ts +3 -0
  6. package/dist/cli/commands/index-cmd.d.ts.map +1 -0
  7. package/dist/cli/commands/index-cmd.js +118 -0
  8. package/dist/cli/commands/index-cmd.js.map +1 -0
  9. package/dist/cli/commands/info-cmd.d.ts +3 -0
  10. package/dist/cli/commands/info-cmd.d.ts.map +1 -0
  11. package/dist/cli/commands/info-cmd.js +47 -0
  12. package/dist/cli/commands/info-cmd.js.map +1 -0
  13. package/dist/cli/commands/mcp-cmd.d.ts +3 -0
  14. package/dist/cli/commands/mcp-cmd.d.ts.map +1 -0
  15. package/dist/cli/commands/mcp-cmd.js +33 -0
  16. package/dist/cli/commands/mcp-cmd.js.map +1 -0
  17. package/dist/cli/commands/search-cmd.d.ts +3 -0
  18. package/dist/cli/commands/search-cmd.d.ts.map +1 -0
  19. package/dist/cli/commands/search-cmd.js +52 -0
  20. package/dist/cli/commands/search-cmd.js.map +1 -0
  21. package/dist/cli/commands/search-with-code-cmd.d.ts +3 -0
  22. package/dist/cli/commands/search-with-code-cmd.d.ts.map +1 -0
  23. package/dist/cli/commands/search-with-code-cmd.js +74 -0
  24. package/dist/cli/commands/search-with-code-cmd.js.map +1 -0
  25. package/dist/cli/commands/update-cmd.d.ts +3 -0
  26. package/dist/cli/commands/update-cmd.d.ts.map +1 -0
  27. package/dist/cli/commands/update-cmd.js +24 -0
  28. package/dist/cli/commands/update-cmd.js.map +1 -0
  29. package/dist/cli/commands/watch-cmd.d.ts +3 -0
  30. package/dist/cli/commands/watch-cmd.d.ts.map +1 -0
  31. package/dist/cli/commands/watch-cmd.js +47 -0
  32. package/dist/cli/commands/watch-cmd.js.map +1 -0
  33. package/dist/cli/index.d.ts +3 -0
  34. package/dist/cli/index.d.ts.map +1 -0
  35. package/dist/cli/index.js +47 -0
  36. package/dist/cli/index.js.map +1 -0
  37. package/dist/cli.d.ts +1 -1
  38. package/dist/cli.d.ts.map +1 -1
  39. package/dist/cli.js +4 -398
  40. package/dist/cli.js.map +1 -1
  41. package/dist/codemap/io.d.ts +1 -0
  42. package/dist/codemap/io.d.ts.map +1 -1
  43. package/dist/codemap/io.js.map +1 -1
  44. package/dist/config/constants.d.ts +11 -0
  45. package/dist/config/constants.d.ts.map +1 -1
  46. package/dist/config/constants.js +9 -0
  47. package/dist/config/constants.js.map +1 -1
  48. package/dist/config/loader.d.ts.map +1 -1
  49. package/dist/config/loader.js +9 -2
  50. package/dist/config/loader.js.map +1 -1
  51. package/dist/core/IndexerEngine.d.ts +9 -17
  52. package/dist/core/IndexerEngine.d.ts.map +1 -1
  53. package/dist/core/IndexerEngine.js +72 -347
  54. package/dist/core/IndexerEngine.js.map +1 -1
  55. package/dist/core/SearchService.d.ts +13 -13
  56. package/dist/core/SearchService.d.ts.map +1 -1
  57. package/dist/core/SearchService.js +133 -325
  58. package/dist/core/SearchService.js.map +1 -1
  59. package/dist/core/batch-indexer.d.ts +5 -0
  60. package/dist/core/batch-indexer.d.ts.map +1 -1
  61. package/dist/core/batch-indexer.js +22 -23
  62. package/dist/core/batch-indexer.js.map +1 -1
  63. package/dist/core/indexer.d.ts +13 -0
  64. package/dist/core/indexer.d.ts.map +1 -1
  65. package/dist/core/indexer.js +13 -0
  66. package/dist/core/indexer.js.map +1 -1
  67. package/dist/core/indexing/FileProcessor.d.ts +42 -0
  68. package/dist/core/indexing/FileProcessor.d.ts.map +1 -0
  69. package/dist/core/indexing/FileProcessor.js +245 -0
  70. package/dist/core/indexing/FileProcessor.js.map +1 -0
  71. package/dist/core/indexing/IndexContext.d.ts +42 -0
  72. package/dist/core/indexing/IndexContext.d.ts.map +1 -0
  73. package/dist/core/indexing/IndexContext.js +133 -0
  74. package/dist/core/indexing/IndexContext.js.map +1 -0
  75. package/dist/core/indexing/IndexFinalizationStage.d.ts +39 -0
  76. package/dist/core/indexing/IndexFinalizationStage.d.ts.map +1 -0
  77. package/dist/core/indexing/IndexFinalizationStage.js +114 -0
  78. package/dist/core/indexing/IndexFinalizationStage.js.map +1 -0
  79. package/dist/core/indexing/IndexState.d.ts +50 -0
  80. package/dist/core/indexing/IndexState.d.ts.map +1 -0
  81. package/dist/core/indexing/IndexState.js +66 -0
  82. package/dist/core/indexing/IndexState.js.map +1 -0
  83. package/dist/core/indexing/chunk-pipeline.d.ts +39 -3
  84. package/dist/core/indexing/chunk-pipeline.d.ts.map +1 -1
  85. package/dist/core/indexing/chunk-pipeline.js +59 -24
  86. package/dist/core/indexing/chunk-pipeline.js.map +1 -1
  87. package/dist/core/search/CandidateRetriever.d.ts +51 -0
  88. package/dist/core/search/CandidateRetriever.d.ts.map +1 -0
  89. package/dist/core/search/CandidateRetriever.js +119 -0
  90. package/dist/core/search/CandidateRetriever.js.map +1 -0
  91. package/dist/core/search/HybridFusion.d.ts +89 -0
  92. package/dist/core/search/HybridFusion.d.ts.map +1 -0
  93. package/dist/core/search/HybridFusion.js +263 -0
  94. package/dist/core/search/HybridFusion.js.map +1 -0
  95. package/dist/core/search/ResultMapper.d.ts +31 -0
  96. package/dist/core/search/ResultMapper.d.ts.map +1 -0
  97. package/dist/core/search/ResultMapper.js +131 -0
  98. package/dist/core/search/ResultMapper.js.map +1 -0
  99. package/dist/core/search/SearchContextManager.d.ts +69 -0
  100. package/dist/core/search/SearchContextManager.d.ts.map +1 -0
  101. package/dist/core/search/SearchContextManager.js +139 -0
  102. package/dist/core/search/SearchContextManager.js.map +1 -0
  103. package/dist/core/search.d.ts +31 -0
  104. package/dist/core/search.d.ts.map +1 -1
  105. package/dist/core/search.js +33 -0
  106. package/dist/core/search.js.map +1 -1
  107. package/dist/core/types.d.ts +13 -0
  108. package/dist/core/types.d.ts.map +1 -1
  109. package/dist/database/db.d.ts +36 -18
  110. package/dist/database/db.d.ts.map +1 -1
  111. package/dist/database/db.js +151 -24
  112. package/dist/database/db.js.map +1 -1
  113. package/dist/indexer/ChangeQueue.d.ts +67 -0
  114. package/dist/indexer/ChangeQueue.d.ts.map +1 -0
  115. package/dist/indexer/ChangeQueue.js +182 -0
  116. package/dist/indexer/ChangeQueue.js.map +1 -0
  117. package/dist/indexer/ProviderManager.d.ts +33 -0
  118. package/dist/indexer/ProviderManager.d.ts.map +1 -0
  119. package/dist/indexer/ProviderManager.js +75 -0
  120. package/dist/indexer/ProviderManager.js.map +1 -0
  121. package/dist/indexer/WatchService.d.ts +68 -0
  122. package/dist/indexer/WatchService.d.ts.map +1 -0
  123. package/dist/indexer/WatchService.js +155 -0
  124. package/dist/indexer/WatchService.js.map +1 -0
  125. package/dist/indexer/merkle.d.ts +5 -0
  126. package/dist/indexer/merkle.d.ts.map +1 -1
  127. package/dist/indexer/merkle.js +36 -12
  128. package/dist/indexer/merkle.js.map +1 -1
  129. package/dist/indexer/update.d.ts +14 -2
  130. package/dist/indexer/update.d.ts.map +1 -1
  131. package/dist/indexer/update.js +11 -0
  132. package/dist/indexer/update.js.map +1 -1
  133. package/dist/indexer/watch.d.ts +15 -20
  134. package/dist/indexer/watch.d.ts.map +1 -1
  135. package/dist/indexer/watch.js +14 -223
  136. package/dist/indexer/watch.js.map +1 -1
  137. package/dist/mcp/handlers/project.d.ts.map +1 -1
  138. package/dist/mcp/handlers/project.js +17 -1
  139. package/dist/mcp/handlers/project.js.map +1 -1
  140. package/dist/mcp-server.d.ts +6 -0
  141. package/dist/mcp-server.d.ts.map +1 -1
  142. package/dist/mcp-server.js +63 -2
  143. package/dist/mcp-server.js.map +1 -1
  144. package/dist/providers/base.d.ts +3 -0
  145. package/dist/providers/base.d.ts.map +1 -1
  146. package/dist/providers/base.js.map +1 -1
  147. package/dist/providers/index.d.ts +7 -0
  148. package/dist/providers/index.d.ts.map +1 -1
  149. package/dist/providers/index.js +15 -0
  150. package/dist/providers/index.js.map +1 -1
  151. package/dist/providers/mock.d.ts +16 -0
  152. package/dist/providers/mock.d.ts.map +1 -0
  153. package/dist/providers/mock.js +46 -0
  154. package/dist/providers/mock.js.map +1 -0
  155. package/dist/providers/openai.d.ts.map +1 -1
  156. package/dist/providers/openai.js +4 -8
  157. package/dist/providers/openai.js.map +1 -1
  158. package/dist/ranking/api-reranker.d.ts.map +1 -1
  159. package/dist/ranking/api-reranker.js +9 -5
  160. package/dist/ranking/api-reranker.js.map +1 -1
  161. package/dist/search/bm25.d.ts.map +1 -1
  162. package/dist/search/bm25.js +21 -1
  163. package/dist/search/bm25.js.map +1 -1
  164. package/dist/search/scope.d.ts +1 -1
  165. package/dist/search/scope.d.ts.map +1 -1
  166. package/dist/search/scope.js +3 -3
  167. package/dist/search/scope.js.map +1 -1
  168. package/dist/storage/encrypted-chunks.d.ts +7 -1
  169. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  170. package/dist/storage/encrypted-chunks.js +187 -75
  171. package/dist/storage/encrypted-chunks.js.map +1 -1
  172. package/dist/symbols/extract.d.ts +2 -1
  173. package/dist/symbols/extract.d.ts.map +1 -1
  174. package/dist/symbols/extract.js +1 -1
  175. package/dist/symbols/extract.js.map +1 -1
  176. package/dist/symbols/graph.d.ts.map +1 -1
  177. package/dist/symbols/graph.js.map +1 -1
  178. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -1
  179. package/dist/synthesis/conversational-synthesizer.js +68 -76
  180. package/dist/synthesis/conversational-synthesizer.js.map +1 -1
  181. package/dist/synthesis/prompt-builder.d.ts +2 -0
  182. package/dist/synthesis/prompt-builder.d.ts.map +1 -1
  183. package/dist/synthesis/prompt-builder.js +80 -81
  184. package/dist/synthesis/prompt-builder.js.map +1 -1
  185. package/dist/synthesis/synthesizer.d.ts +11 -0
  186. package/dist/synthesis/synthesizer.d.ts.map +1 -1
  187. package/dist/synthesis/synthesizer.js +29 -1
  188. package/dist/synthesis/synthesizer.js.map +1 -1
  189. package/dist/tests/helpers/test-repo.d.ts +7 -0
  190. package/dist/tests/helpers/test-repo.d.ts.map +1 -0
  191. package/dist/tests/helpers/test-repo.js +21 -0
  192. package/dist/tests/helpers/test-repo.js.map +1 -0
  193. package/dist/tests/integration/index-search.integration.test.d.ts +2 -0
  194. package/dist/tests/integration/index-search.integration.test.d.ts.map +1 -0
  195. package/dist/tests/integration/index-search.integration.test.js +163 -0
  196. package/dist/tests/integration/index-search.integration.test.js.map +1 -0
  197. package/dist/tests/simple-lru.test.js +22 -10
  198. package/dist/tests/simple-lru.test.js.map +1 -1
  199. package/dist/utils/cli-ui.d.ts.map +1 -1
  200. package/dist/utils/cli-ui.js +9 -3
  201. package/dist/utils/cli-ui.js.map +1 -1
  202. package/dist/utils/logger.d.ts +4 -1
  203. package/dist/utils/logger.d.ts.map +1 -1
  204. package/dist/utils/logger.js.map +1 -1
  205. package/dist/utils/path-helpers.d.ts.map +1 -1
  206. package/dist/utils/path-helpers.js +17 -1
  207. package/dist/utils/path-helpers.js.map +1 -1
  208. package/dist/utils/scan-patterns.d.ts.map +1 -1
  209. package/dist/utils/scan-patterns.js +1 -2
  210. package/dist/utils/scan-patterns.js.map +1 -1
  211. package/dist/utils/simple-lru.d.ts +21 -2
  212. package/dist/utils/simple-lru.d.ts.map +1 -1
  213. package/dist/utils/simple-lru.js +126 -19
  214. package/dist/utils/simple-lru.js.map +1 -1
  215. package/package.json +13 -4
@@ -0,0 +1,68 @@
1
+ import chokidar from 'chokidar';
2
+ export interface WatchServiceOptions {
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
+ export interface WatchController {
14
+ watcher: ReturnType<typeof chokidar.watch>;
15
+ ready: Promise<void>;
16
+ close: () => Promise<void>;
17
+ flush: () => Promise<void>;
18
+ }
19
+ /**
20
+ * WatchService manages file system watching and coordinates with the change queue
21
+ * and provider manager to keep the index up-to-date.
22
+ */
23
+ export declare class WatchService {
24
+ private options;
25
+ private watcher;
26
+ private changeQueue;
27
+ private providerManager;
28
+ private supportedExtensions;
29
+ private ready;
30
+ private root;
31
+ constructor(options?: WatchServiceOptions);
32
+ /**
33
+ * Attach chokidar event handlers
34
+ */
35
+ private attachEventHandlers;
36
+ /**
37
+ * Handle file system events
38
+ */
39
+ private handleFileEvent;
40
+ /**
41
+ * Handle watcher errors
42
+ */
43
+ private handleError;
44
+ /**
45
+ * Wait for watcher to be ready
46
+ */
47
+ waitForReady(): Promise<void>;
48
+ /**
49
+ * Flush all pending changes
50
+ */
51
+ flush(): Promise<void>;
52
+ /**
53
+ * Close the watcher and clean up resources
54
+ */
55
+ close(): Promise<void>;
56
+ /**
57
+ * Get a controller object (for backward compatibility)
58
+ */
59
+ getController(): WatchController;
60
+ }
61
+ /**
62
+ * Start watching a repository and automatically batch index changes.
63
+ *
64
+ * @param options - Watch configuration (repoPath, provider, debounceMs, encryption)
65
+ * @returns Controller with handles for `ready`, `flush`, and `close`
66
+ */
67
+ export declare function startWatch(options?: WatchServiceOptions): WatchController;
68
+ //# sourceMappingURL=WatchService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WatchService.d.ts","sourceRoot":"","sources":["../../src/indexer/WatchService.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAqBhC,MAAM,WAAW,mBAAmB;IAClC,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,MAAM,WAAW,eAAe;IAC9B,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;;;GAGG;AACH,qBAAa,YAAY;IAQX,OAAO,CAAC,OAAO;IAP3B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,IAAI,CAAS;gBAED,OAAO,GAAE,mBAAwB;IA0DrD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B;;OAEG;IACH,aAAa,IAAI,eAAe;CAQjC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,mBAAwB,GAAG,eAAe,CAG7E"}
@@ -0,0 +1,155 @@
1
+ import chokidar from 'chokidar';
2
+ import path from 'path';
3
+ import { toPosixPath } from './merkle.js';
4
+ import { getSupportedLanguageExtensions } from '../languages/rules.js';
5
+ import { resolveProviderContext } from '../config/resolver.js';
6
+ import { WATCHER_CONSTANTS } from '../config/constants.js';
7
+ import { ChangeQueue } from './ChangeQueue.js';
8
+ import { ProviderManager } from './ProviderManager.js';
9
+ const DEFAULT_DEBOUNCE_MS = WATCHER_CONSTANTS.DEFAULT_DEBOUNCE_MS;
10
+ const IGNORED_GLOBS = [
11
+ '**/node_modules/**',
12
+ '**/.git/**',
13
+ '**/.codevault/**',
14
+ '**/dist/**',
15
+ '**/build/**',
16
+ '**/tmp/**',
17
+ '**/.tmp/**',
18
+ '**/vendor/**'
19
+ ];
20
+ /**
21
+ * WatchService manages file system watching and coordinates with the change queue
22
+ * and provider manager to keep the index up-to-date.
23
+ */
24
+ export class WatchService {
25
+ options;
26
+ watcher;
27
+ changeQueue;
28
+ providerManager;
29
+ supportedExtensions;
30
+ ready;
31
+ root;
32
+ constructor(options = {}) {
33
+ this.options = options;
34
+ this.root = path.resolve(options.repoPath || '.');
35
+ // Setup supported file extensions
36
+ this.supportedExtensions = new Set((getSupportedLanguageExtensions() || []).map(ext => ext.toLowerCase()));
37
+ // Calculate effective debounce
38
+ const debounceMs = options.debounceMs ?? DEFAULT_DEBOUNCE_MS;
39
+ const effectiveDebounce = Number.isFinite(Number.parseInt(String(debounceMs), 10))
40
+ ? Math.max(Number.parseInt(String(debounceMs), 10), WATCHER_CONSTANTS.MIN_DEBOUNCE_MS)
41
+ : DEFAULT_DEBOUNCE_MS;
42
+ // Initialize provider manager
43
+ const providerContext = resolveProviderContext(this.root);
44
+ this.providerManager = new ProviderManager(options.provider || 'auto', providerContext.embedding, options.logger || console);
45
+ // Initialize change queue
46
+ this.changeQueue = new ChangeQueue({
47
+ repoPath: this.root,
48
+ provider: options.provider || 'auto',
49
+ debounceMs: effectiveDebounce,
50
+ encrypt: options.encrypt,
51
+ logger: options.logger || console,
52
+ onBatch: options.onBatch,
53
+ providerGetter: () => this.providerManager.getProviderSafe()
54
+ });
55
+ // Setup file watcher
56
+ const watchPatterns = this.supportedExtensions.size > 0
57
+ ? Array.from(this.supportedExtensions).map(ext => `**/*${ext}`)
58
+ : ['**/*'];
59
+ this.watcher = chokidar.watch(watchPatterns, {
60
+ cwd: this.root,
61
+ ignoreInitial: true,
62
+ ignored: IGNORED_GLOBS,
63
+ awaitWriteFinish: {
64
+ stabilityThreshold: Math.max(effectiveDebounce, WATCHER_CONSTANTS.STABILITY_THRESHOLD_MS),
65
+ pollInterval: WATCHER_CONSTANTS.POLL_INTERVAL_MS
66
+ },
67
+ persistent: true
68
+ });
69
+ // Setup ready promise
70
+ this.ready = new Promise(resolve => {
71
+ this.watcher.once('ready', resolve);
72
+ });
73
+ // Attach event handlers
74
+ this.attachEventHandlers();
75
+ }
76
+ /**
77
+ * Attach chokidar event handlers
78
+ */
79
+ attachEventHandlers() {
80
+ this.watcher.on('add', file => this.handleFileEvent('add', file));
81
+ this.watcher.on('change', file => this.handleFileEvent('change', file));
82
+ this.watcher.on('unlink', file => this.handleFileEvent('unlink', file));
83
+ this.watcher.on('error', error => this.handleError(error));
84
+ }
85
+ /**
86
+ * Handle file system events
87
+ */
88
+ handleFileEvent(type, filePath) {
89
+ const normalized = toPosixPath(filePath);
90
+ if (!normalized) {
91
+ return;
92
+ }
93
+ // Check if file extension is supported
94
+ const ext = path.extname(normalized).toLowerCase();
95
+ if (this.supportedExtensions.size > 0 && !this.supportedExtensions.has(ext)) {
96
+ return;
97
+ }
98
+ // Enqueue the change
99
+ this.changeQueue.enqueue(type, normalized);
100
+ }
101
+ /**
102
+ * Handle watcher errors
103
+ */
104
+ handleError(error) {
105
+ const logger = this.options.logger || console;
106
+ if (logger && typeof logger.error === 'function') {
107
+ logger.error('CodeVault watch error:', error);
108
+ }
109
+ }
110
+ /**
111
+ * Wait for watcher to be ready
112
+ */
113
+ async waitForReady() {
114
+ await this.ready;
115
+ }
116
+ /**
117
+ * Flush all pending changes
118
+ */
119
+ async flush() {
120
+ await this.changeQueue.drain();
121
+ }
122
+ /**
123
+ * Close the watcher and clean up resources
124
+ */
125
+ async close() {
126
+ // Cancel any pending flushes
127
+ this.changeQueue.cancel();
128
+ // Clean up provider
129
+ this.providerManager.cleanup();
130
+ // Close the watcher
131
+ await this.watcher.close();
132
+ }
133
+ /**
134
+ * Get a controller object (for backward compatibility)
135
+ */
136
+ getController() {
137
+ return {
138
+ watcher: this.watcher,
139
+ ready: this.ready,
140
+ close: () => this.close(),
141
+ flush: () => this.flush()
142
+ };
143
+ }
144
+ }
145
+ /**
146
+ * Start watching a repository and automatically batch index changes.
147
+ *
148
+ * @param options - Watch configuration (repoPath, provider, debounceMs, encryption)
149
+ * @returns Controller with handles for `ready`, `flush`, and `close`
150
+ */
151
+ export function startWatch(options = {}) {
152
+ const service = new WatchService(options);
153
+ return service.getController();
154
+ }
155
+ //# sourceMappingURL=WatchService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WatchService.js","sourceRoot":"","sources":["../../src/indexer/WatchService.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,11 @@ export type MerkleTree = Record<string, MerkleEntry>;
7
7
  export declare function loadMerkle(basePath?: string): MerkleTree;
8
8
  export declare function saveMerkle(basePath?: string, merkle?: MerkleTree): void;
9
9
  export declare function toPosixPath(relativePath: string | null): string | null;
10
+ export declare function validatePathSafety(basePath: string, targetPath: string): {
11
+ safe: boolean;
12
+ normalized: string | null;
13
+ reason?: string;
14
+ };
10
15
  export declare function normalizeToProjectPath(basePath?: string, filePath?: string): string | null;
11
16
  export declare function removeMerkleEntry(merkle: MerkleTree, relativePath: string): boolean;
12
17
  export declare function cloneMerkle(merkle: MerkleTree): MerkleTree;
@@ -1 +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"}
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/indexer/merkle.ts"],"names":[],"mappings":"AAoBA,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,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAgC/D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,SAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAWnF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE1D"}
@@ -10,11 +10,8 @@ async function getHasher() {
10
10
  }
11
11
  return hasherPromise;
12
12
  }
13
- function ensureObject(value) {
14
- if (!value || typeof value !== 'object') {
15
- return {};
16
- }
17
- return value;
13
+ function ensureObject(value, fallback = {}) {
14
+ return value && typeof value === 'object' ? value : fallback;
18
15
  }
19
16
  export async function computeFastHash(input) {
20
17
  const hasher = await getHasher();
@@ -58,17 +55,44 @@ export function toPosixPath(relativePath) {
58
55
  }
59
56
  return relativePath.split(path.sep).join('/');
60
57
  }
58
+ export function validatePathSafety(basePath, targetPath) {
59
+ try {
60
+ const absBase = fs.realpathSync(basePath);
61
+ const absTarget = path.resolve(absBase, targetPath);
62
+ const relative = path.relative(absBase, absTarget);
63
+ if (relative === '') {
64
+ return { safe: true, normalized: toPosixPath(relative) };
65
+ }
66
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
67
+ return { safe: false, normalized: null, reason: 'path_outside_base' };
68
+ }
69
+ try {
70
+ const realTarget = fs.realpathSync(absTarget);
71
+ const realRelative = path.relative(absBase, realTarget);
72
+ if (realRelative.startsWith('..') || path.isAbsolute(realRelative)) {
73
+ return { safe: false, normalized: null, reason: 'symlink_escape' };
74
+ }
75
+ return { safe: true, normalized: toPosixPath(realRelative) };
76
+ }
77
+ catch {
78
+ // Target may not exist yet; rely on original relative path
79
+ return { safe: true, normalized: toPosixPath(relative) };
80
+ }
81
+ }
82
+ catch (error) {
83
+ return {
84
+ safe: false,
85
+ normalized: null,
86
+ reason: error.message
87
+ };
88
+ }
89
+ }
61
90
  export function normalizeToProjectPath(basePath = '.', filePath) {
62
91
  if (typeof filePath !== 'string' || filePath.length === 0) {
63
92
  return null;
64
93
  }
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);
94
+ const result = validatePathSafety(basePath, filePath);
95
+ return result.safe ? result.normalized : null;
72
96
  }
73
97
  export function removeMerkleEntry(merkle, relativePath) {
74
98
  if (!merkle || typeof merkle !== 'object') {
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/indexer/merkle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/indexer/merkle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,aAAiC,MAAM,aAAa,CAAC;AAE5D,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,eAAe,GAAG,aAAa,CAAC;AAEtC,IAAI,aAAa,GAAqC,IAAI,CAAC;AAE3D,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAmB,KAAc,EAAE,WAAc,EAAO;IAC3E,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAsB;IAC1D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AASD,MAAM,UAAU,UAAU,CAAC,QAAQ,GAAG,GAAG;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAEpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAqB,EAAE;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEvD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAA2B;IACrD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YACrE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;YAC3D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,IAAI;YAChB,MAAM,EAAG,KAAe,CAAC,OAAO;SACjC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAQ,GAAG,GAAG,EAAE,QAAiB;IACtE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAkB,EAAE,YAAoB;IACxE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import type { EmbeddingProvider } from '../providers/base.js';
2
+ import type { ProgressEvent, IndexError } from '../core/types.js';
2
3
  export interface UpdateIndexOptions {
3
4
  repoPath?: string;
4
5
  provider?: string;
5
6
  changedFiles?: string[];
6
7
  deletedFiles?: string[];
7
- onProgress?: ((event: any) => void) | null;
8
+ onProgress?: ((event: ProgressEvent) => void) | null;
8
9
  embeddingProvider?: EmbeddingProvider | null;
9
10
  encrypt?: string;
10
11
  }
@@ -13,7 +14,18 @@ export interface UpdateIndexResult {
13
14
  processedChunks: number;
14
15
  totalChunks: number;
15
16
  provider: string;
16
- errors: any[];
17
+ errors: IndexError[];
17
18
  }
19
+ /**
20
+ * Incrementally update the index for a repository by processing changed/deleted files.
21
+ *
22
+ * @param repoPath - Project root containing `.codevault` artifacts
23
+ * @param provider - Embedding provider name ('auto' uses config/defaults)
24
+ * @param changedFiles - Relative paths to re-index; if empty and no deletes, returns early
25
+ * @param deletedFiles - Relative paths whose artifacts should be removed
26
+ * @param onProgress - Optional progress callback for UI/CLI integrations
27
+ * @param embeddingProvider - Optional initialized provider instance (reuses watch provider)
28
+ * @param encrypt - Optional encryption mode override ('on' | 'off')
29
+ */
18
30
  export declare function updateIndex({ repoPath, provider, changedFiles, deletedFiles, onProgress, embeddingProvider, encrypt }?: UpdateIndexOptions): Promise<UpdateIndexResult>;
19
31
  //# sourceMappingURL=update.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/indexer/update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAmBlE,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,aAAa,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,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,UAAU,EAAE,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,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"}
@@ -14,6 +14,17 @@ function normalizeList(basePath, values = []) {
14
14
  }
15
15
  return Array.from(normalized);
16
16
  }
17
+ /**
18
+ * Incrementally update the index for a repository by processing changed/deleted files.
19
+ *
20
+ * @param repoPath - Project root containing `.codevault` artifacts
21
+ * @param provider - Embedding provider name ('auto' uses config/defaults)
22
+ * @param changedFiles - Relative paths to re-index; if empty and no deletes, returns early
23
+ * @param deletedFiles - Relative paths whose artifacts should be removed
24
+ * @param onProgress - Optional progress callback for UI/CLI integrations
25
+ * @param embeddingProvider - Optional initialized provider instance (reuses watch provider)
26
+ * @param encrypt - Optional encryption mode override ('on' | 'off')
27
+ */
17
28
  export async function updateIndex({ repoPath = '.', provider = 'auto', changedFiles = [], deletedFiles = [], onProgress = null, embeddingProvider = null, encrypt = undefined } = {}) {
18
29
  const root = path.resolve(repoPath);
19
30
  const normalizedChanged = normalizeList(root, changedFiles);
@@ -1 +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"}
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;AAIlD,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;;;;;;;;;;GAUG;AACH,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"}
@@ -1,21 +1,16 @@
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 {};
1
+ /**
2
+ * Watch Service - File system watching with debounced index updates
3
+ *
4
+ * This module provides backward-compatible exports while delegating to the
5
+ * refactored WatchService, ChangeQueue, and ProviderManager classes.
6
+ *
7
+ * The refactored architecture separates concerns:
8
+ * - WatchService: Orchestrates file watching and event handling
9
+ * - ChangeQueue: Manages debouncing and race-condition-free flushing
10
+ * - ProviderManager: Handles embedding provider lifecycle
11
+ */
12
+ export { startWatch, WatchService } from './WatchService.js';
13
+ export type { WatchServiceOptions as WatchOptions, WatchController } from './WatchService.js';
14
+ export { ChangeQueue } from './ChangeQueue.js';
15
+ export { ProviderManager } from './ProviderManager.js';
21
16
  //# sourceMappingURL=watch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/indexer/watch.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAoBhC,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,CAyOrC"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/indexer/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,IAAI,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}