codehere 0.1.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/ARCHITECTURE.md +240 -0
- package/CHANGELOG.md +44 -0
- package/CONTRIBUTING.md +171 -0
- package/LICENSE +22 -0
- package/README.md +203 -0
- package/dist/ast-parser.d.ts +55 -0
- package/dist/ast-parser.d.ts.map +1 -0
- package/dist/ast-parser.js +331 -0
- package/dist/ast-parser.js.map +1 -0
- package/dist/benchmark.d.ts +39 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +195 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/cache.d.ts +45 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +182 -0
- package/dist/cache.js.map +1 -0
- package/dist/chat.d.ts +4 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +132 -0
- package/dist/chat.js.map +1 -0
- package/dist/code-analysis.d.ts +50 -0
- package/dist/code-analysis.d.ts.map +1 -0
- package/dist/code-analysis.js +327 -0
- package/dist/code-analysis.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +187 -0
- package/dist/context.js.map +1 -0
- package/dist/docs.d.ts +21 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +147 -0
- package/dist/docs.js.map +1 -0
- package/dist/edit.d.ts +38 -0
- package/dist/edit.d.ts.map +1 -0
- package/dist/edit.js +594 -0
- package/dist/edit.js.map +1 -0
- package/dist/embed.d.ts +18 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/embed.js +479 -0
- package/dist/embed.js.map +1 -0
- package/dist/error-handler.d.ts +76 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +213 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/formatter.d.ts +25 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +148 -0
- package/dist/formatter.js.map +1 -0
- package/dist/git.d.ts +55 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +198 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +964 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligent-retrieval.d.ts +41 -0
- package/dist/intelligent-retrieval.d.ts.map +1 -0
- package/dist/intelligent-retrieval.js +265 -0
- package/dist/intelligent-retrieval.js.map +1 -0
- package/dist/iterative-refinement.d.ts +31 -0
- package/dist/iterative-refinement.d.ts.map +1 -0
- package/dist/iterative-refinement.js +172 -0
- package/dist/iterative-refinement.js.map +1 -0
- package/dist/learning.d.ts +69 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +233 -0
- package/dist/learning.js.map +1 -0
- package/dist/log.d.ts +4 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +31 -0
- package/dist/log.js.map +1 -0
- package/dist/migrate.d.ts +33 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +133 -0
- package/dist/migrate.js.map +1 -0
- package/dist/monitoring.d.ts +75 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +248 -0
- package/dist/monitoring.js.map +1 -0
- package/dist/parallel-processor.d.ts +43 -0
- package/dist/parallel-processor.d.ts.map +1 -0
- package/dist/parallel-processor.js +308 -0
- package/dist/parallel-processor.js.map +1 -0
- package/dist/planner.d.ts +47 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +198 -0
- package/dist/planner.js.map +1 -0
- package/dist/policy.d.ts +3 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +26 -0
- package/dist/policy.js.map +1 -0
- package/dist/query-optimizer.d.ts +32 -0
- package/dist/query-optimizer.d.ts.map +1 -0
- package/dist/query-optimizer.js +205 -0
- package/dist/query-optimizer.js.map +1 -0
- package/dist/refactor.d.ts +27 -0
- package/dist/refactor.d.ts.map +1 -0
- package/dist/refactor.js +118 -0
- package/dist/refactor.js.map +1 -0
- package/dist/review.d.ts +31 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +206 -0
- package/dist/review.js.map +1 -0
- package/dist/scaffold.d.ts +14 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +85 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/search.d.ts +19 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +198 -0
- package/dist/search.js.map +1 -0
- package/dist/session.d.ts +17 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +301 -0
- package/dist/session.js.map +1 -0
- package/dist/task-verification.d.ts +39 -0
- package/dist/task-verification.d.ts.map +1 -0
- package/dist/task-verification.js +336 -0
- package/dist/task-verification.js.map +1 -0
- package/dist/test_cohere.d.ts +2 -0
- package/dist/test_cohere.d.ts.map +1 -0
- package/dist/test_cohere.js +68 -0
- package/dist/test_cohere.js.map +1 -0
- package/dist/test_env.d.ts +2 -0
- package/dist/test_env.d.ts.map +1 -0
- package/dist/test_env.js +24 -0
- package/dist/test_env.js.map +1 -0
- package/dist/test_retrieval.d.ts +2 -0
- package/dist/test_retrieval.d.ts.map +1 -0
- package/dist/test_retrieval.js +84 -0
- package/dist/test_retrieval.js.map +1 -0
- package/dist/testgen.d.ts +24 -0
- package/dist/testgen.d.ts.map +1 -0
- package/dist/testgen.js +167 -0
- package/dist/testgen.js.map +1 -0
- package/dist/token-optimizer.d.ts +20 -0
- package/dist/token-optimizer.d.ts.map +1 -0
- package/dist/token-optimizer.js +277 -0
- package/dist/token-optimizer.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +54 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +295 -0
- package/dist/ui.js.map +1 -0
- package/dist/verify_db.d.ts +2 -0
- package/dist/verify_db.d.ts.map +1 -0
- package/dist/verify_db.js +52 -0
- package/dist/verify_db.js.map +1 -0
- package/package.json +71 -0
- package/templates/next-page/app/layout.tsx +19 -0
- package/templates/next-page/app/page.tsx +10 -0
- package/templates/next-page/package.json +22 -0
- package/templates/node-api/index.js +57 -0
- package/templates/node-api/package.json +13 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Analysis Engine
|
|
3
|
+
* Call graph, dependency graph, symbol resolution, import resolution
|
|
4
|
+
*/
|
|
5
|
+
import { parseFile, buildCallGraph, findCallers, findCallees } from './ast-parser.js';
|
|
6
|
+
import { readFileSync, existsSync, readdirSync } from 'fs';
|
|
7
|
+
import { join, dirname, extname, resolve } from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Analyze entire codebase
|
|
10
|
+
*/
|
|
11
|
+
export async function analyzeCodebase(baseDir, entryFiles) {
|
|
12
|
+
const files = new Map();
|
|
13
|
+
const dependencyGraph = new Map();
|
|
14
|
+
const callGraph = new Map();
|
|
15
|
+
const symbols = new Map();
|
|
16
|
+
// Find all TypeScript/JavaScript files
|
|
17
|
+
const codeFiles = findCodeFiles(baseDir);
|
|
18
|
+
// Parse all files
|
|
19
|
+
for (const filepath of codeFiles) {
|
|
20
|
+
const analysis = parseFile(filepath);
|
|
21
|
+
if (analysis) {
|
|
22
|
+
files.set(filepath, analysis);
|
|
23
|
+
// Index symbols
|
|
24
|
+
for (const symbol of analysis.symbols) {
|
|
25
|
+
symbols.set(symbol.name, {
|
|
26
|
+
filepath,
|
|
27
|
+
line: symbol.line,
|
|
28
|
+
kind: symbol.kind,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Build dependency graph
|
|
34
|
+
for (const [filepath, analysis] of files.entries()) {
|
|
35
|
+
const resolvedDeps = analysis.imports
|
|
36
|
+
.map(imp => resolveImport(imp, filepath, baseDir, files))
|
|
37
|
+
.filter((dep) => dep !== null);
|
|
38
|
+
const dependents = Array.from(files.entries())
|
|
39
|
+
.filter(([_, a]) => a.imports.some(imp => resolveImport(imp, filepath, baseDir, files) === filepath))
|
|
40
|
+
.map(([fp]) => fp);
|
|
41
|
+
dependencyGraph.set(filepath, {
|
|
42
|
+
filepath,
|
|
43
|
+
dependencies: resolvedDeps,
|
|
44
|
+
dependents,
|
|
45
|
+
depth: 0, // Will be calculated
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Calculate dependency depths
|
|
49
|
+
const entryPoints = entryFiles || findEntryPoints(files, dependencyGraph);
|
|
50
|
+
calculateDepths(dependencyGraph, entryPoints);
|
|
51
|
+
// Build call graph
|
|
52
|
+
const astCallGraph = buildCallGraph(Array.from(files.values()));
|
|
53
|
+
for (const [symbolName, calls] of astCallGraph.entries()) {
|
|
54
|
+
const symbol = symbols.get(symbolName);
|
|
55
|
+
if (!symbol)
|
|
56
|
+
continue;
|
|
57
|
+
const calledBy = findCallers(symbolName, astCallGraph);
|
|
58
|
+
const callees = findCallees(symbolName, astCallGraph);
|
|
59
|
+
callGraph.set(symbolName, {
|
|
60
|
+
symbol: symbolName,
|
|
61
|
+
filepath: symbol.filepath,
|
|
62
|
+
calls: callees,
|
|
63
|
+
calledBy,
|
|
64
|
+
depth: 0, // Will be calculated
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// Calculate call depths
|
|
68
|
+
calculateCallDepths(callGraph, entryPoints, symbols);
|
|
69
|
+
return {
|
|
70
|
+
files,
|
|
71
|
+
dependencyGraph,
|
|
72
|
+
callGraph,
|
|
73
|
+
entryPoints,
|
|
74
|
+
symbols,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Find all code files in directory
|
|
79
|
+
*/
|
|
80
|
+
function findCodeFiles(dir) {
|
|
81
|
+
const files = [];
|
|
82
|
+
try {
|
|
83
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
84
|
+
for (const entry of entries) {
|
|
85
|
+
const fullPath = join(dir, entry.name);
|
|
86
|
+
// Skip node_modules, .git, etc.
|
|
87
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules') {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (entry.isDirectory()) {
|
|
91
|
+
files.push(...findCodeFiles(fullPath));
|
|
92
|
+
}
|
|
93
|
+
else if (entry.isFile()) {
|
|
94
|
+
const ext = extname(entry.name).toLowerCase();
|
|
95
|
+
if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
|
|
96
|
+
files.push(fullPath);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Skip directories we can't read
|
|
103
|
+
}
|
|
104
|
+
return files;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve import to actual file path
|
|
108
|
+
* FIXED: Better resolution for node_modules, aliases, and relative paths
|
|
109
|
+
*/
|
|
110
|
+
function resolveImport(importPath, fromFile, baseDir, files) {
|
|
111
|
+
// Handle node_modules imports (check package.json for resolution)
|
|
112
|
+
if (!importPath.startsWith('.') && !importPath.startsWith('/')) {
|
|
113
|
+
// Try to resolve from node_modules
|
|
114
|
+
const nodeModulesPath = join(baseDir, 'node_modules', importPath);
|
|
115
|
+
const extensions = ['.ts', '.tsx', '.js', '.jsx', ''];
|
|
116
|
+
for (const ext of extensions) {
|
|
117
|
+
const withExt = nodeModulesPath + ext;
|
|
118
|
+
if (existsSync(withExt)) {
|
|
119
|
+
return withExt;
|
|
120
|
+
}
|
|
121
|
+
// Try package.json main field
|
|
122
|
+
const packageJsonPath = join(nodeModulesPath, 'package.json');
|
|
123
|
+
if (existsSync(packageJsonPath)) {
|
|
124
|
+
try {
|
|
125
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
126
|
+
const mainFile = packageJson.main || packageJson.module || 'index.js';
|
|
127
|
+
const mainPath = join(nodeModulesPath, mainFile);
|
|
128
|
+
if (existsSync(mainPath)) {
|
|
129
|
+
return mainPath;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Skip invalid package.json
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Try index files
|
|
137
|
+
const indexFile = join(nodeModulesPath, `index${ext}`);
|
|
138
|
+
if (existsSync(indexFile)) {
|
|
139
|
+
return indexFile;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return null; // External dependency, not in our codebase
|
|
143
|
+
}
|
|
144
|
+
const fromDir = dirname(fromFile);
|
|
145
|
+
let resolved;
|
|
146
|
+
try {
|
|
147
|
+
resolved = resolve(fromDir, importPath);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
// Try with extensions
|
|
153
|
+
const extensions = ['.ts', '.tsx', '.js', '.jsx', ''];
|
|
154
|
+
for (const ext of extensions) {
|
|
155
|
+
const withExt = resolved + ext;
|
|
156
|
+
if (files.has(withExt) || existsSync(withExt)) {
|
|
157
|
+
return withExt;
|
|
158
|
+
}
|
|
159
|
+
// Try index files
|
|
160
|
+
const indexFile = join(resolved, `index${ext}`);
|
|
161
|
+
if (files.has(indexFile) || existsSync(indexFile)) {
|
|
162
|
+
return indexFile;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Try resolving from baseDir (for absolute imports from project root)
|
|
166
|
+
try {
|
|
167
|
+
const fromBase = resolve(baseDir, importPath);
|
|
168
|
+
for (const ext of extensions) {
|
|
169
|
+
const withExt = fromBase + ext;
|
|
170
|
+
if (files.has(withExt) || existsSync(withExt)) {
|
|
171
|
+
return withExt;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Ignore
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Find entry points (main files, index files)
|
|
182
|
+
*/
|
|
183
|
+
function findEntryPoints(files, dependencyGraph) {
|
|
184
|
+
const entryPoints = [];
|
|
185
|
+
// Files with no dependencies (or only external dependencies)
|
|
186
|
+
for (const [filepath, graph] of dependencyGraph.entries()) {
|
|
187
|
+
if (graph.dependencies.length === 0) {
|
|
188
|
+
entryPoints.push(filepath);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Index files
|
|
192
|
+
for (const filepath of files.keys()) {
|
|
193
|
+
if (filepath.endsWith('index.ts') || filepath.endsWith('index.js') ||
|
|
194
|
+
filepath.endsWith('main.ts') || filepath.endsWith('main.js') ||
|
|
195
|
+
filepath.endsWith('app.ts') || filepath.endsWith('app.js')) {
|
|
196
|
+
if (!entryPoints.includes(filepath)) {
|
|
197
|
+
entryPoints.push(filepath);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return entryPoints.length > 0 ? entryPoints : Array.from(files.keys()).slice(0, 1);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Calculate dependency depths from entry points
|
|
205
|
+
*/
|
|
206
|
+
function calculateDepths(dependencyGraph, entryPoints) {
|
|
207
|
+
const visited = new Set();
|
|
208
|
+
const queue = entryPoints.map(ep => ({ filepath: ep, depth: 0 }));
|
|
209
|
+
while (queue.length > 0) {
|
|
210
|
+
const { filepath, depth } = queue.shift();
|
|
211
|
+
if (visited.has(filepath))
|
|
212
|
+
continue;
|
|
213
|
+
visited.add(filepath);
|
|
214
|
+
const graph = dependencyGraph.get(filepath);
|
|
215
|
+
if (!graph)
|
|
216
|
+
continue;
|
|
217
|
+
graph.depth = depth;
|
|
218
|
+
// Add dependents to queue
|
|
219
|
+
for (const dependent of graph.dependents) {
|
|
220
|
+
if (!visited.has(dependent)) {
|
|
221
|
+
queue.push({ filepath: dependent, depth: depth + 1 });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Calculate call depths from entry points
|
|
228
|
+
*/
|
|
229
|
+
function calculateCallDepths(callGraph, entryPoints, symbols) {
|
|
230
|
+
// Find entry symbols (exported from entry files)
|
|
231
|
+
const entrySymbols = [];
|
|
232
|
+
for (const entryFile of entryPoints) {
|
|
233
|
+
for (const [symbolName, symbol] of symbols.entries()) {
|
|
234
|
+
if (symbol.filepath === entryFile) {
|
|
235
|
+
entrySymbols.push(symbolName);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const visited = new Set();
|
|
240
|
+
const queue = entrySymbols.map(s => ({ symbol: s, depth: 0 }));
|
|
241
|
+
while (queue.length > 0) {
|
|
242
|
+
const { symbol, depth } = queue.shift();
|
|
243
|
+
if (visited.has(symbol))
|
|
244
|
+
continue;
|
|
245
|
+
visited.add(symbol);
|
|
246
|
+
const node = callGraph.get(symbol);
|
|
247
|
+
if (!node)
|
|
248
|
+
continue;
|
|
249
|
+
node.depth = depth;
|
|
250
|
+
// Add callees to queue
|
|
251
|
+
for (const callee of node.calls) {
|
|
252
|
+
if (!visited.has(callee)) {
|
|
253
|
+
queue.push({ symbol: callee, depth: depth + 1 });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Find all files that depend on a given file
|
|
260
|
+
*/
|
|
261
|
+
export function findDependents(filepath, dependencyGraph) {
|
|
262
|
+
const graph = dependencyGraph.get(filepath);
|
|
263
|
+
if (!graph)
|
|
264
|
+
return [];
|
|
265
|
+
const allDependents = new Set(graph.dependents);
|
|
266
|
+
// Recursively find dependents of dependents
|
|
267
|
+
for (const dependent of graph.dependents) {
|
|
268
|
+
const depDependents = findDependents(dependent, dependencyGraph);
|
|
269
|
+
depDependents.forEach(d => allDependents.add(d));
|
|
270
|
+
}
|
|
271
|
+
return Array.from(allDependents);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Find all files that a given file depends on
|
|
275
|
+
*/
|
|
276
|
+
export function findDependencies(filepath, dependencyGraph) {
|
|
277
|
+
const graph = dependencyGraph.get(filepath);
|
|
278
|
+
if (!graph)
|
|
279
|
+
return [];
|
|
280
|
+
const allDependencies = new Set(graph.dependencies);
|
|
281
|
+
// Recursively find dependencies of dependencies
|
|
282
|
+
for (const dep of graph.dependencies) {
|
|
283
|
+
const depDeps = findDependencies(dep, dependencyGraph);
|
|
284
|
+
depDeps.forEach(d => allDependencies.add(d));
|
|
285
|
+
}
|
|
286
|
+
return Array.from(allDependencies);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get impact of changing a file (what breaks)
|
|
290
|
+
*/
|
|
291
|
+
export function getChangeImpact(filepath, codebaseAnalysis) {
|
|
292
|
+
const dependents = findDependents(filepath, codebaseAnalysis.dependencyGraph);
|
|
293
|
+
const fileAnalysis = codebaseAnalysis.files.get(filepath);
|
|
294
|
+
if (!fileAnalysis) {
|
|
295
|
+
return {
|
|
296
|
+
affectedFiles: [],
|
|
297
|
+
affectedSymbols: [],
|
|
298
|
+
riskLevel: 'low',
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
const affectedSymbols = [];
|
|
302
|
+
// Find all symbols that use symbols from this file
|
|
303
|
+
for (const symbol of fileAnalysis.symbols) {
|
|
304
|
+
if (symbol.isExported) {
|
|
305
|
+
// Find all usages of this symbol
|
|
306
|
+
for (const [otherFilepath, otherAnalysis] of codebaseAnalysis.files.entries()) {
|
|
307
|
+
if (otherFilepath === filepath)
|
|
308
|
+
continue;
|
|
309
|
+
const usesSymbol = otherAnalysis.relationships.some(rel => rel.to === symbol.name || rel.from === symbol.name);
|
|
310
|
+
if (usesSymbol) {
|
|
311
|
+
affectedSymbols.push(symbol.name);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const riskLevel = dependents.length > 10 || affectedSymbols.length > 5
|
|
317
|
+
? 'high'
|
|
318
|
+
: dependents.length > 3 || affectedSymbols.length > 2
|
|
319
|
+
? 'medium'
|
|
320
|
+
: 'low';
|
|
321
|
+
return {
|
|
322
|
+
affectedFiles: dependents,
|
|
323
|
+
affectedSymbols: [...new Set(affectedSymbols)],
|
|
324
|
+
riskLevel,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=code-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-analysis.js","sourceRoot":"","sources":["../src/code-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Context Understanding System
|
|
3
|
+
* Senior-level codebase comprehension with file relationships
|
|
4
|
+
*/
|
|
5
|
+
import type { SearchResult } from './types.js';
|
|
6
|
+
export interface FileRelationship {
|
|
7
|
+
filepath: string;
|
|
8
|
+
imports: string[];
|
|
9
|
+
exports: string[];
|
|
10
|
+
dependencies: string[];
|
|
11
|
+
dependents: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface EnhancedContext {
|
|
14
|
+
primaryChunks: SearchResult[];
|
|
15
|
+
relatedChunks: SearchResult[];
|
|
16
|
+
fileRelationships: Map<string, FileRelationship>;
|
|
17
|
+
dependencyGraph: Map<string, string[]>;
|
|
18
|
+
totalChunks: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extract imports/exports from code
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractImports(content: string, filepath: string): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Extract exports from code
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractExports(content: string, filepath: string): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Build file relationship map
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildFileRelationships(filepaths: string[], baseDir: string): Promise<Map<string, FileRelationship>>;
|
|
32
|
+
/**
|
|
33
|
+
* Get enhanced context with file relationships
|
|
34
|
+
*/
|
|
35
|
+
export declare function getEnhancedContext(query: string, options?: {
|
|
36
|
+
primaryChunks?: number;
|
|
37
|
+
relatedChunks?: number;
|
|
38
|
+
includeRelationships?: boolean;
|
|
39
|
+
}): Promise<EnhancedContext>;
|
|
40
|
+
/**
|
|
41
|
+
* Format context for display
|
|
42
|
+
*/
|
|
43
|
+
export declare function formatContext(context: EnhancedContext): string;
|
|
44
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB1E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CA6CxC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC3B,GACL,OAAO,CAAC,eAAe,CAAC,CAuE1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAkB9D"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Context Understanding System
|
|
3
|
+
* Senior-level codebase comprehension with file relationships
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join, dirname, extname } from 'path';
|
|
7
|
+
import { searchSimilar } from './search.js';
|
|
8
|
+
/**
|
|
9
|
+
* Extract imports/exports from code
|
|
10
|
+
*/
|
|
11
|
+
export function extractImports(content, filepath) {
|
|
12
|
+
const imports = [];
|
|
13
|
+
const lines = content.split('\n');
|
|
14
|
+
const ext = extname(filepath).toLowerCase();
|
|
15
|
+
// TypeScript/JavaScript imports
|
|
16
|
+
if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
|
|
17
|
+
for (const line of lines) {
|
|
18
|
+
// ES6 imports
|
|
19
|
+
const es6Match = line.match(/import\s+(?:.*\s+from\s+)?['"]([^'"]+)['"]/);
|
|
20
|
+
if (es6Match) {
|
|
21
|
+
imports.push(es6Match[1]);
|
|
22
|
+
}
|
|
23
|
+
// CommonJS requires
|
|
24
|
+
const requireMatch = line.match(/require\(['"]([^'"]+)['"]\)/);
|
|
25
|
+
if (requireMatch) {
|
|
26
|
+
imports.push(requireMatch[1]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Python imports
|
|
31
|
+
if (ext === '.py') {
|
|
32
|
+
for (const line of lines) {
|
|
33
|
+
const importMatch = line.match(/^(?:from\s+(\S+)\s+)?import\s+(\S+)/);
|
|
34
|
+
if (importMatch) {
|
|
35
|
+
imports.push(importMatch[1] || importMatch[2]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return imports;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract exports from code
|
|
43
|
+
*/
|
|
44
|
+
export function extractExports(content, filepath) {
|
|
45
|
+
const exports = [];
|
|
46
|
+
const lines = content.split('\n');
|
|
47
|
+
const ext = extname(filepath).toLowerCase();
|
|
48
|
+
// TypeScript/JavaScript exports
|
|
49
|
+
if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
|
|
50
|
+
for (const line of lines) {
|
|
51
|
+
// Named exports
|
|
52
|
+
const namedExport = line.match(/export\s+(?:const|function|class|interface|type|enum)\s+(\w+)/);
|
|
53
|
+
if (namedExport) {
|
|
54
|
+
exports.push(namedExport[1]);
|
|
55
|
+
}
|
|
56
|
+
// Default export
|
|
57
|
+
if (line.includes('export default')) {
|
|
58
|
+
exports.push('default');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return exports;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build file relationship map
|
|
66
|
+
*/
|
|
67
|
+
export async function buildFileRelationships(filepaths, baseDir) {
|
|
68
|
+
const relationships = new Map();
|
|
69
|
+
for (const filepath of filepaths) {
|
|
70
|
+
const fullPath = join(baseDir, filepath);
|
|
71
|
+
if (!existsSync(fullPath)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const content = readFileSync(fullPath, 'utf-8');
|
|
76
|
+
const imports = extractImports(content, filepath);
|
|
77
|
+
const exports = extractExports(content, filepath);
|
|
78
|
+
relationships.set(filepath, {
|
|
79
|
+
filepath,
|
|
80
|
+
imports,
|
|
81
|
+
exports,
|
|
82
|
+
dependencies: [],
|
|
83
|
+
dependents: [],
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Skip files that can't be read
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Build dependency graph
|
|
92
|
+
for (const [filepath, relationship] of relationships.entries()) {
|
|
93
|
+
for (const imp of relationship.imports) {
|
|
94
|
+
// Try to resolve import to actual file
|
|
95
|
+
// This is simplified - real implementation would resolve module paths
|
|
96
|
+
for (const [otherPath, otherRel] of relationships.entries()) {
|
|
97
|
+
if (otherPath !== filepath && (otherPath.includes(imp) || imp.includes(otherPath))) {
|
|
98
|
+
relationship.dependencies.push(otherPath);
|
|
99
|
+
if (!otherRel.dependents.includes(filepath)) {
|
|
100
|
+
otherRel.dependents.push(filepath);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return relationships;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get enhanced context with file relationships
|
|
110
|
+
*/
|
|
111
|
+
export async function getEnhancedContext(query, options = {}) {
|
|
112
|
+
const { primaryChunks = 15, relatedChunks = 5, includeRelationships = true, } = options;
|
|
113
|
+
// Get primary search results
|
|
114
|
+
const primaryResults = await searchSimilar(query, primaryChunks);
|
|
115
|
+
// Get unique filepaths
|
|
116
|
+
const filepaths = [...new Set(primaryResults.map(r => r.filepath))];
|
|
117
|
+
// Build file relationships if requested
|
|
118
|
+
let fileRelationships = new Map();
|
|
119
|
+
let dependencyGraph = new Map();
|
|
120
|
+
if (includeRelationships && filepaths.length > 0) {
|
|
121
|
+
// Get base directory from first file
|
|
122
|
+
const baseDir = dirname(filepaths[0]);
|
|
123
|
+
fileRelationships = await buildFileRelationships(filepaths, baseDir);
|
|
124
|
+
// Build dependency graph
|
|
125
|
+
for (const [filepath, relationship] of fileRelationships.entries()) {
|
|
126
|
+
dependencyGraph.set(filepath, relationship.dependencies);
|
|
127
|
+
}
|
|
128
|
+
// Get related chunks from dependent files
|
|
129
|
+
const dependentFiles = new Set();
|
|
130
|
+
for (const relationship of fileRelationships.values()) {
|
|
131
|
+
relationship.dependents.forEach(dep => dependentFiles.add(dep));
|
|
132
|
+
}
|
|
133
|
+
// Search for related chunks in dependent files
|
|
134
|
+
const relatedQueries = Array.from(dependentFiles).slice(0, 3);
|
|
135
|
+
const relatedResults = [];
|
|
136
|
+
for (const relatedQuery of relatedQueries) {
|
|
137
|
+
const results = await searchSimilar(relatedQuery, Math.ceil(relatedChunks / relatedQueries.length));
|
|
138
|
+
relatedResults.push(...results);
|
|
139
|
+
}
|
|
140
|
+
// Combine and deduplicate
|
|
141
|
+
const allChunks = [...primaryResults, ...relatedResults];
|
|
142
|
+
const seen = new Set();
|
|
143
|
+
const uniqueChunks = allChunks.filter(chunk => {
|
|
144
|
+
const key = `${chunk.filepath}:${chunk.content.substring(0, 50)}`;
|
|
145
|
+
if (seen.has(key)) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
seen.add(key);
|
|
149
|
+
return true;
|
|
150
|
+
});
|
|
151
|
+
return {
|
|
152
|
+
primaryChunks: primaryResults,
|
|
153
|
+
relatedChunks: uniqueChunks.slice(primaryChunks),
|
|
154
|
+
fileRelationships,
|
|
155
|
+
dependencyGraph,
|
|
156
|
+
totalChunks: uniqueChunks.length,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
primaryChunks: primaryResults,
|
|
161
|
+
relatedChunks: [],
|
|
162
|
+
fileRelationships,
|
|
163
|
+
dependencyGraph,
|
|
164
|
+
totalChunks: primaryResults.length,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Format context for display
|
|
169
|
+
*/
|
|
170
|
+
export function formatContext(context) {
|
|
171
|
+
let output = `Found ${context.totalChunks} relevant chunks from ${context.primaryChunks.length} primary files.\n\n`;
|
|
172
|
+
if (context.fileRelationships.size > 0) {
|
|
173
|
+
output += 'File Relationships:\n';
|
|
174
|
+
for (const [filepath, relationship] of context.fileRelationships.entries()) {
|
|
175
|
+
output += ` ${filepath}:\n`;
|
|
176
|
+
if (relationship.dependencies.length > 0) {
|
|
177
|
+
output += ` Dependencies: ${relationship.dependencies.join(', ')}\n`;
|
|
178
|
+
}
|
|
179
|
+
if (relationship.dependents.length > 0) {
|
|
180
|
+
output += ` Dependents: ${relationship.dependents.join(', ')}\n`;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
output += '\n';
|
|
184
|
+
}
|
|
185
|
+
return output;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/docs.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation Generator
|
|
3
|
+
* Auto-generate and maintain documentation
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate documentation for a file
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateFileDocs(filepath: string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Generate README for a project
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateREADME(files?: string[]): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Update existing documentation
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateDocs(filepath: string): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Save documentation to file
|
|
19
|
+
*/
|
|
20
|
+
export declare function saveDocs(filepath: string, content: string): void;
|
|
21
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CxE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CtE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ClE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAUhE"}
|