codebase-context 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/analyzers/angular/index.d.ts +44 -0
- package/dist/analyzers/angular/index.d.ts.map +1 -0
- package/dist/analyzers/angular/index.js +922 -0
- package/dist/analyzers/angular/index.js.map +1 -0
- package/dist/analyzers/generic/index.d.ts +23 -0
- package/dist/analyzers/generic/index.d.ts.map +1 -0
- package/dist/analyzers/generic/index.js +354 -0
- package/dist/analyzers/generic/index.js.map +1 -0
- package/dist/core/analyzer-registry.d.ts +36 -0
- package/dist/core/analyzer-registry.d.ts.map +1 -0
- package/dist/core/analyzer-registry.js +78 -0
- package/dist/core/analyzer-registry.js.map +1 -0
- package/dist/core/file-watcher.d.ts +63 -0
- package/dist/core/file-watcher.d.ts.map +1 -0
- package/dist/core/file-watcher.js +210 -0
- package/dist/core/file-watcher.js.map +1 -0
- package/dist/core/indexer.d.ts +29 -0
- package/dist/core/indexer.d.ts.map +1 -0
- package/dist/core/indexer.js +507 -0
- package/dist/core/indexer.js.map +1 -0
- package/dist/core/search.d.ts +31 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +307 -0
- package/dist/core/search.js.map +1 -0
- package/dist/embeddings/index.d.ts +5 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +33 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/openai.d.ts +19 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +59 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/transformers.d.ts +17 -0
- package/dist/embeddings/transformers.d.ts.map +1 -0
- package/dist/embeddings/transformers.js +83 -0
- package/dist/embeddings/transformers.js.map +1 -0
- package/dist/embeddings/types.d.ts +20 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +9 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +790 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +58 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +81 -0
- package/dist/lib.js.map +1 -0
- package/dist/storage/index.d.ts +12 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +18 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lancedb.d.ts +24 -0
- package/dist/storage/lancedb.d.ts.map +1 -0
- package/dist/storage/lancedb.js +197 -0
- package/dist/storage/lancedb.js.map +1 -0
- package/dist/storage/types.d.ts +45 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +8 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/types/index.d.ts +367 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/chunking.d.ts +23 -0
- package/dist/utils/chunking.d.ts.map +1 -0
- package/dist/utils/chunking.js +226 -0
- package/dist/utils/chunking.js.map +1 -0
- package/dist/utils/language-detection.d.ts +29 -0
- package/dist/utils/language-detection.d.ts.map +1 -0
- package/dist/utils/language-detection.js +127 -0
- package/dist/utils/language-detection.js.map +1 -0
- package/dist/utils/pattern-detector.d.ts +41 -0
- package/dist/utils/pattern-detector.d.ts.map +1 -0
- package/dist/utils/pattern-detector.js +101 -0
- package/dist/utils/pattern-detector.js.map +1 -0
- package/dist/utils/usage-tracker.d.ts +120 -0
- package/dist/utils/usage-tracker.d.ts.map +1 -0
- package/dist/utils/usage-tracker.js +336 -0
- package/dist/utils/usage-tracker.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/core/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;AAkBvE,qBAAa,WAAY,SAAQ,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAIX;gBAEU,OAAO,EAAE,kBAAkB;IAMvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAsBZ;;OAEG;IACH,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK;IAI7B;;OAEG;IACH,QAAQ,IAAI,OAAO;YAIL,cAAc;IAsC5B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,GAAG;CAKd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,mBAAmB,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GACxD,WAAW,CAMb"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Watcher for Incremental Index Updates
|
|
3
|
+
*
|
|
4
|
+
* Watches for file changes in the codebase and triggers selective re-indexing.
|
|
5
|
+
* Uses debouncing to avoid excessive re-indexing on rapid changes.
|
|
6
|
+
*/
|
|
7
|
+
import { watch, promises as fs, statSync } from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import { EventEmitter } from "events";
|
|
10
|
+
const DEFAULT_OPTIONS = {
|
|
11
|
+
debounceMs: 2000,
|
|
12
|
+
extensions: ["ts", "tsx", "js", "jsx", "json", "html", "scss", "css"],
|
|
13
|
+
ignorePatterns: [
|
|
14
|
+
"node_modules",
|
|
15
|
+
"dist",
|
|
16
|
+
".git",
|
|
17
|
+
".codebase-index",
|
|
18
|
+
".codebase-index.json",
|
|
19
|
+
".codebase-intelligence.json",
|
|
20
|
+
"*.spec.ts", // Watch tests separately if needed
|
|
21
|
+
"*.test.ts",
|
|
22
|
+
],
|
|
23
|
+
verbose: false,
|
|
24
|
+
};
|
|
25
|
+
export class FileWatcher extends EventEmitter {
|
|
26
|
+
rootPath;
|
|
27
|
+
options;
|
|
28
|
+
watchers = new Map();
|
|
29
|
+
pendingChanges = new Map();
|
|
30
|
+
debounceTimer = null;
|
|
31
|
+
isRunning = false;
|
|
32
|
+
stats = {
|
|
33
|
+
filesWatched: 0,
|
|
34
|
+
changesDetected: 0,
|
|
35
|
+
reindexTriggered: 0,
|
|
36
|
+
};
|
|
37
|
+
constructor(options) {
|
|
38
|
+
super();
|
|
39
|
+
this.rootPath = path.resolve(options.rootPath);
|
|
40
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Start watching the codebase for changes
|
|
44
|
+
*/
|
|
45
|
+
async start() {
|
|
46
|
+
if (this.isRunning) {
|
|
47
|
+
this.log("Watcher already running");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.log(`Starting file watcher on: ${this.rootPath}`);
|
|
51
|
+
this.isRunning = true;
|
|
52
|
+
try {
|
|
53
|
+
await this.watchDirectory(this.rootPath);
|
|
54
|
+
this.log(`Watching ${this.stats.filesWatched} directories`);
|
|
55
|
+
this.emit("started", { directories: this.stats.filesWatched });
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
this.isRunning = false;
|
|
59
|
+
this.emit("error", error);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stop watching for changes
|
|
65
|
+
*/
|
|
66
|
+
stop() {
|
|
67
|
+
if (!this.isRunning)
|
|
68
|
+
return;
|
|
69
|
+
this.log("Stopping file watcher");
|
|
70
|
+
// Close all watchers
|
|
71
|
+
for (const [dir, watcher] of this.watchers) {
|
|
72
|
+
watcher.close();
|
|
73
|
+
}
|
|
74
|
+
this.watchers.clear();
|
|
75
|
+
// Clear pending changes
|
|
76
|
+
if (this.debounceTimer) {
|
|
77
|
+
clearTimeout(this.debounceTimer);
|
|
78
|
+
this.debounceTimer = null;
|
|
79
|
+
}
|
|
80
|
+
this.pendingChanges.clear();
|
|
81
|
+
this.isRunning = false;
|
|
82
|
+
this.emit("stopped");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get current statistics
|
|
86
|
+
*/
|
|
87
|
+
getStats() {
|
|
88
|
+
return { ...this.stats };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if watcher is active
|
|
92
|
+
*/
|
|
93
|
+
isActive() {
|
|
94
|
+
return this.isRunning;
|
|
95
|
+
}
|
|
96
|
+
async watchDirectory(dir) {
|
|
97
|
+
// Skip ignored directories
|
|
98
|
+
const relativePath = path.relative(this.rootPath, dir);
|
|
99
|
+
if (this.shouldIgnore(relativePath)) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
// Watch this directory
|
|
104
|
+
const watcher = watch(dir, { persistent: true }, (eventType, filename) => {
|
|
105
|
+
if (!filename)
|
|
106
|
+
return;
|
|
107
|
+
const filePath = path.join(dir, filename);
|
|
108
|
+
this.handleFileChange(eventType, filePath);
|
|
109
|
+
});
|
|
110
|
+
watcher.on("error", (error) => {
|
|
111
|
+
this.log(`Watcher error on ${dir}: ${error.message}`);
|
|
112
|
+
// Remove broken watcher
|
|
113
|
+
this.watchers.delete(dir);
|
|
114
|
+
});
|
|
115
|
+
this.watchers.set(dir, watcher);
|
|
116
|
+
this.stats.filesWatched++;
|
|
117
|
+
// Recursively watch subdirectories
|
|
118
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
119
|
+
for (const entry of entries) {
|
|
120
|
+
if (entry.isDirectory()) {
|
|
121
|
+
await this.watchDirectory(path.join(dir, entry.name));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
// Directory might not exist or be inaccessible
|
|
127
|
+
this.log(`Could not watch ${dir}: ${error}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
handleFileChange(eventType, filePath) {
|
|
131
|
+
const relativePath = path.relative(this.rootPath, filePath);
|
|
132
|
+
// Skip ignored files
|
|
133
|
+
if (this.shouldIgnore(relativePath)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// Skip if not a watched extension
|
|
137
|
+
const ext = path.extname(filePath).slice(1);
|
|
138
|
+
if (!this.options.extensions.includes(ext)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// Determine change type
|
|
142
|
+
let changeType;
|
|
143
|
+
try {
|
|
144
|
+
statSync(filePath);
|
|
145
|
+
changeType = eventType === "rename" ? "add" : "change";
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
changeType = "delete";
|
|
149
|
+
}
|
|
150
|
+
const event = {
|
|
151
|
+
type: changeType,
|
|
152
|
+
filePath,
|
|
153
|
+
relativePath,
|
|
154
|
+
timestamp: new Date(),
|
|
155
|
+
};
|
|
156
|
+
this.pendingChanges.set(filePath, event);
|
|
157
|
+
this.stats.changesDetected++;
|
|
158
|
+
this.log(`Detected ${changeType}: ${relativePath}`);
|
|
159
|
+
// Debounce the re-index trigger
|
|
160
|
+
this.scheduleFlush();
|
|
161
|
+
}
|
|
162
|
+
scheduleFlush() {
|
|
163
|
+
if (this.debounceTimer) {
|
|
164
|
+
clearTimeout(this.debounceTimer);
|
|
165
|
+
}
|
|
166
|
+
this.debounceTimer = setTimeout(() => {
|
|
167
|
+
this.flushChanges();
|
|
168
|
+
}, this.options.debounceMs);
|
|
169
|
+
}
|
|
170
|
+
flushChanges() {
|
|
171
|
+
if (this.pendingChanges.size === 0)
|
|
172
|
+
return;
|
|
173
|
+
const changes = Array.from(this.pendingChanges.values());
|
|
174
|
+
this.pendingChanges.clear();
|
|
175
|
+
this.stats.reindexTriggered++;
|
|
176
|
+
this.log(`Flushing ${changes.length} changes`);
|
|
177
|
+
this.emit("changes", changes);
|
|
178
|
+
}
|
|
179
|
+
shouldIgnore(relativePath) {
|
|
180
|
+
// Simple pattern matching (not full glob)
|
|
181
|
+
for (const pattern of this.options.ignorePatterns) {
|
|
182
|
+
if (pattern.startsWith("*")) {
|
|
183
|
+
// Extension match: *.spec.ts
|
|
184
|
+
const suffix = pattern.slice(1);
|
|
185
|
+
if (relativePath.endsWith(suffix)) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (relativePath.includes(pattern)) {
|
|
190
|
+
// Directory/path match
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
log(message) {
|
|
197
|
+
if (this.options.verbose) {
|
|
198
|
+
console.error(`[FileWatcher] ${message}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Create and configure a file watcher
|
|
204
|
+
*/
|
|
205
|
+
export function createFileWatcher(rootPath, onChanges, options) {
|
|
206
|
+
const watcher = new FileWatcher({ rootPath, ...options });
|
|
207
|
+
watcher.on("changes", onChanges);
|
|
208
|
+
return watcher;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=file-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/core/file-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Indexer - Orchestrates codebase indexing
|
|
3
|
+
* Scans files, delegates to analyzers, creates embeddings, stores in vector DB
|
|
4
|
+
*/
|
|
5
|
+
import { CodebaseMetadata, IndexingProgress, IndexingStats, CodebaseConfig } from "../types/index.js";
|
|
6
|
+
export interface IndexerOptions {
|
|
7
|
+
rootPath: string;
|
|
8
|
+
config?: Partial<CodebaseConfig>;
|
|
9
|
+
onProgress?: (progress: IndexingProgress) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare class CodebaseIndexer {
|
|
12
|
+
private rootPath;
|
|
13
|
+
private config;
|
|
14
|
+
private progress;
|
|
15
|
+
private onProgressCallback?;
|
|
16
|
+
constructor(options: IndexerOptions);
|
|
17
|
+
private mergeConfig;
|
|
18
|
+
index(): Promise<IndexingStats>;
|
|
19
|
+
private scanFiles;
|
|
20
|
+
private updateProgress;
|
|
21
|
+
detectMetadata(): Promise<CodebaseMetadata>;
|
|
22
|
+
/**
|
|
23
|
+
* Get regex pattern for extracting code snippets based on pattern category and name
|
|
24
|
+
* This maps abstract pattern names to actual code patterns
|
|
25
|
+
*/
|
|
26
|
+
private getSnippetPatternFor;
|
|
27
|
+
getProgress(): IndexingProgress;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/core/indexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,gBAAgB,EAEhB,gBAAgB,EAChB,aAAa,EAEb,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAc3B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACnD;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAuC;gBAEtD,OAAO,EAAE,cAAc;IAgBnC,OAAO,CAAC,WAAW;IA6Db,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;YAqTvB,SAAS;IA0DvB,OAAO,CAAC,cAAc;IAShB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA0EjD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA0B5B,WAAW,IAAI,gBAAgB;CAGhC"}
|