midas-mcp 5.43.2 → 5.43.11
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/dist/analyzer.d.ts +19 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +95 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/code-discovery.d.ts.map +1 -1
- package/dist/code-discovery.js +39 -2
- package/dist/code-discovery.js.map +1 -1
- package/dist/docs/INGREDIENTS.md +57 -17
- package/dist/file-index.d.ts +123 -0
- package/dist/file-index.d.ts.map +1 -0
- package/dist/file-index.js +430 -0
- package/dist/file-index.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -2
- package/dist/server.js.map +1 -1
- package/dist/state/phase.d.ts +8 -3
- package/dist/state/phase.d.ts.map +1 -1
- package/dist/state/phase.js +85 -7
- package/dist/state/phase.js.map +1 -1
- package/dist/tools/completeness.d.ts.map +1 -1
- package/dist/tools/completeness.js +153 -24
- package/dist/tools/completeness.js.map +1 -1
- package/dist/tools/complexity.d.ts +91 -0
- package/dist/tools/complexity.d.ts.map +1 -0
- package/dist/tools/complexity.js +583 -0
- package/dist/tools/complexity.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/vuln-scan.d.ts +74 -0
- package/dist/tools/vuln-scan.d.ts.map +1 -0
- package/dist/tools/vuln-scan.js +493 -0
- package/dist/tools/vuln-scan.js.map +1 -0
- package/dist/tracker.d.ts +22 -0
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +93 -16
- package/dist/tracker.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +44 -32
- package/dist/tui.js.map +1 -1
- package/docs/INGREDIENTS.md +57 -17
- package/package.json +1 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight File Index
|
|
3
|
+
*
|
|
4
|
+
* Persists file metadata to speed up code discovery:
|
|
5
|
+
* - File hashes for change detection
|
|
6
|
+
* - Basic symbol extraction (functions, classes, exports)
|
|
7
|
+
* - Relevance scores from previous analyses
|
|
8
|
+
*
|
|
9
|
+
* This is NOT a full embedding/vector index - just fast metadata caching.
|
|
10
|
+
*/
|
|
11
|
+
export interface FileMetadata {
|
|
12
|
+
hash: string;
|
|
13
|
+
size: number;
|
|
14
|
+
mtime: number;
|
|
15
|
+
lastIndexed: number;
|
|
16
|
+
symbols: string[];
|
|
17
|
+
imports: string[];
|
|
18
|
+
relevanceScore?: number;
|
|
19
|
+
reasons?: string[];
|
|
20
|
+
lineCount?: number;
|
|
21
|
+
tokenEstimate?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface FileIndex {
|
|
24
|
+
version: number;
|
|
25
|
+
projectPath: string;
|
|
26
|
+
lastFullScan: number;
|
|
27
|
+
files: Record<string, FileMetadata>;
|
|
28
|
+
totalFiles: number;
|
|
29
|
+
totalSymbols: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Load the file index from disk
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadIndex(projectPath: string): FileIndex;
|
|
35
|
+
/**
|
|
36
|
+
* Save the file index to disk
|
|
37
|
+
*/
|
|
38
|
+
export declare function saveIndex(projectPath: string, index: FileIndex): void;
|
|
39
|
+
/**
|
|
40
|
+
* Compute a fast hash of file content
|
|
41
|
+
*/
|
|
42
|
+
export declare function hashFile(filePath: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a file has changed since last index
|
|
45
|
+
*
|
|
46
|
+
* @param filePath - Can be absolute or relative path
|
|
47
|
+
* @param index - The file index to check against
|
|
48
|
+
* @param relativePath - Optional relative path for lookup (if filePath is absolute)
|
|
49
|
+
*/
|
|
50
|
+
export declare function hasFileChanged(filePath: string, index: FileIndex, relativePath?: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get list of changed files since last index
|
|
53
|
+
*
|
|
54
|
+
* @param files - Array of relative paths
|
|
55
|
+
* @param projectPath - Project root path
|
|
56
|
+
*/
|
|
57
|
+
export declare function getChangedFiles(files: string[], projectPath: string): {
|
|
58
|
+
changed: string[];
|
|
59
|
+
unchanged: string[];
|
|
60
|
+
stats: {
|
|
61
|
+
cached: number;
|
|
62
|
+
needsUpdate: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Extract basic symbols from file content
|
|
67
|
+
* This is a lightweight regex-based extraction, not full AST parsing
|
|
68
|
+
*/
|
|
69
|
+
export declare function extractSymbols(content: string, extension: string): {
|
|
70
|
+
symbols: string[];
|
|
71
|
+
imports: string[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Index a single file
|
|
75
|
+
*/
|
|
76
|
+
export declare function indexFile(filePath: string, projectPath: string, options?: {
|
|
77
|
+
forceReindex?: boolean;
|
|
78
|
+
}): FileMetadata | null;
|
|
79
|
+
/**
|
|
80
|
+
* Update index for a list of files
|
|
81
|
+
*/
|
|
82
|
+
export declare function updateIndex(files: string[], projectPath: string, options?: {
|
|
83
|
+
force?: boolean;
|
|
84
|
+
}): {
|
|
85
|
+
updated: number;
|
|
86
|
+
cached: number;
|
|
87
|
+
failed: number;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Get cached metadata for a file
|
|
91
|
+
*/
|
|
92
|
+
export declare function getCachedMetadata(filePath: string, projectPath: string): FileMetadata | null;
|
|
93
|
+
/**
|
|
94
|
+
* Update relevance scores for files (from analyzer results)
|
|
95
|
+
*/
|
|
96
|
+
export declare function updateRelevanceScores(scores: Record<string, {
|
|
97
|
+
score: number;
|
|
98
|
+
reasons: string[];
|
|
99
|
+
}>, projectPath: string): void;
|
|
100
|
+
/**
|
|
101
|
+
* Clean up stale entries from the index
|
|
102
|
+
*/
|
|
103
|
+
export declare function cleanupIndex(projectPath: string): {
|
|
104
|
+
removed: number;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Get index statistics
|
|
108
|
+
*/
|
|
109
|
+
export declare function getIndexStats(projectPath: string): {
|
|
110
|
+
indexed: number;
|
|
111
|
+
symbols: number;
|
|
112
|
+
lastScan: number;
|
|
113
|
+
staleCount: number;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Search symbols across indexed files
|
|
117
|
+
*/
|
|
118
|
+
export declare function searchSymbols(query: string, projectPath: string, limit?: number): Array<{
|
|
119
|
+
file: string;
|
|
120
|
+
symbol: string;
|
|
121
|
+
score: number;
|
|
122
|
+
}>;
|
|
123
|
+
//# sourceMappingURL=file-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-index.d.ts","sourceRoot":"","sources":["../src/file-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight File Index
|
|
3
|
+
*
|
|
4
|
+
* Persists file metadata to speed up code discovery:
|
|
5
|
+
* - File hashes for change detection
|
|
6
|
+
* - Basic symbol extraction (functions, classes, exports)
|
|
7
|
+
* - Relevance scores from previous analyses
|
|
8
|
+
*
|
|
9
|
+
* This is NOT a full embedding/vector index - just fast metadata caching.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync, statSync, mkdirSync } from 'fs';
|
|
12
|
+
import { createHash } from 'crypto';
|
|
13
|
+
import writeFileAtomic from 'write-file-atomic';
|
|
14
|
+
import { join, extname } from 'path';
|
|
15
|
+
import { sanitizePath } from './security.js';
|
|
16
|
+
import { logger } from './logger.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// CONSTANTS
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const INDEX_VERSION = 1;
|
|
21
|
+
const MIDAS_DIR = '.midas';
|
|
22
|
+
const INDEX_FILE = 'file-index.json';
|
|
23
|
+
// How long before we consider a file entry stale (7 days)
|
|
24
|
+
const STALE_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000;
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// INDEX OPERATIONS
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* Get the path to the index file
|
|
30
|
+
*/
|
|
31
|
+
function getIndexPath(projectPath) {
|
|
32
|
+
return join(projectPath, MIDAS_DIR, INDEX_FILE);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load the file index from disk
|
|
36
|
+
*/
|
|
37
|
+
export function loadIndex(projectPath) {
|
|
38
|
+
const safePath = sanitizePath(projectPath);
|
|
39
|
+
const indexPath = getIndexPath(safePath);
|
|
40
|
+
if (!existsSync(indexPath)) {
|
|
41
|
+
return createEmptyIndex(safePath);
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const data = JSON.parse(readFileSync(indexPath, 'utf-8'));
|
|
45
|
+
// Version check - if outdated, return fresh index
|
|
46
|
+
if (data.version !== INDEX_VERSION) {
|
|
47
|
+
logger.info('File index version mismatch, rebuilding');
|
|
48
|
+
return createEmptyIndex(safePath);
|
|
49
|
+
}
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
logger.warn('Failed to load file index, starting fresh', { error });
|
|
54
|
+
return createEmptyIndex(safePath);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Save the file index to disk
|
|
59
|
+
*/
|
|
60
|
+
export function saveIndex(projectPath, index) {
|
|
61
|
+
const safePath = sanitizePath(projectPath);
|
|
62
|
+
const indexPath = getIndexPath(safePath);
|
|
63
|
+
const dir = join(safePath, MIDAS_DIR);
|
|
64
|
+
if (!existsSync(dir)) {
|
|
65
|
+
mkdirSync(dir, { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
// Update stats before saving
|
|
69
|
+
index.totalFiles = Object.keys(index.files).length;
|
|
70
|
+
index.totalSymbols = Object.values(index.files)
|
|
71
|
+
.reduce((sum, f) => sum + (f.symbols?.length || 0), 0);
|
|
72
|
+
writeFileAtomic.sync(indexPath, JSON.stringify(index, null, 2));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
logger.warn('Failed to save file index', { error });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create an empty index
|
|
80
|
+
*/
|
|
81
|
+
function createEmptyIndex(projectPath) {
|
|
82
|
+
return {
|
|
83
|
+
version: INDEX_VERSION,
|
|
84
|
+
projectPath,
|
|
85
|
+
lastFullScan: 0,
|
|
86
|
+
files: {},
|
|
87
|
+
totalFiles: 0,
|
|
88
|
+
totalSymbols: 0,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// FILE OPERATIONS
|
|
93
|
+
// ============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Compute a fast hash of file content
|
|
96
|
+
*/
|
|
97
|
+
export function hashFile(filePath) {
|
|
98
|
+
try {
|
|
99
|
+
const content = readFileSync(filePath);
|
|
100
|
+
return createHash('md5').update(content).digest('hex').slice(0, 12);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return '';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if a file has changed since last index
|
|
108
|
+
*
|
|
109
|
+
* @param filePath - Can be absolute or relative path
|
|
110
|
+
* @param index - The file index to check against
|
|
111
|
+
* @param relativePath - Optional relative path for lookup (if filePath is absolute)
|
|
112
|
+
*/
|
|
113
|
+
export function hasFileChanged(filePath, index, relativePath) {
|
|
114
|
+
// Use relativePath for lookup if provided, otherwise use filePath directly
|
|
115
|
+
const lookupPath = relativePath || filePath;
|
|
116
|
+
const metadata = index.files[lookupPath];
|
|
117
|
+
if (!metadata)
|
|
118
|
+
return true;
|
|
119
|
+
try {
|
|
120
|
+
const stats = statSync(filePath);
|
|
121
|
+
// Quick check: size first (cheapest)
|
|
122
|
+
if (stats.size !== metadata.size)
|
|
123
|
+
return true;
|
|
124
|
+
// Check hash directly (most reliable)
|
|
125
|
+
// mtime can be unreliable across systems
|
|
126
|
+
const currentHash = hashFile(filePath);
|
|
127
|
+
return currentHash !== metadata.hash;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get list of changed files since last index
|
|
135
|
+
*
|
|
136
|
+
* @param files - Array of relative paths
|
|
137
|
+
* @param projectPath - Project root path
|
|
138
|
+
*/
|
|
139
|
+
export function getChangedFiles(files, projectPath) {
|
|
140
|
+
const safePath = sanitizePath(projectPath);
|
|
141
|
+
const index = loadIndex(safePath);
|
|
142
|
+
const changed = [];
|
|
143
|
+
const unchanged = [];
|
|
144
|
+
for (const file of files) {
|
|
145
|
+
const fullPath = join(safePath, file);
|
|
146
|
+
// Pass both absolute path (for stat) and relative path (for index lookup)
|
|
147
|
+
if (hasFileChanged(fullPath, index, file)) {
|
|
148
|
+
changed.push(file);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
unchanged.push(file);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
changed,
|
|
156
|
+
unchanged,
|
|
157
|
+
stats: {
|
|
158
|
+
cached: unchanged.length,
|
|
159
|
+
needsUpdate: changed.length,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// SYMBOL EXTRACTION
|
|
165
|
+
// ============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Extract basic symbols from file content
|
|
168
|
+
* This is a lightweight regex-based extraction, not full AST parsing
|
|
169
|
+
*/
|
|
170
|
+
export function extractSymbols(content, extension) {
|
|
171
|
+
const symbols = [];
|
|
172
|
+
const imports = [];
|
|
173
|
+
// TypeScript/JavaScript
|
|
174
|
+
if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(extension)) {
|
|
175
|
+
// Functions: function name(, const name = function, const name = (
|
|
176
|
+
const funcRegex = /(?:function\s+(\w+)|(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s+)?(?:function|\([^)]*\)\s*=>))/g;
|
|
177
|
+
let match;
|
|
178
|
+
while ((match = funcRegex.exec(content)) !== null) {
|
|
179
|
+
symbols.push(match[1] || match[2]);
|
|
180
|
+
}
|
|
181
|
+
// Classes: class Name
|
|
182
|
+
const classRegex = /class\s+(\w+)/g;
|
|
183
|
+
while ((match = classRegex.exec(content)) !== null) {
|
|
184
|
+
symbols.push(match[1]);
|
|
185
|
+
}
|
|
186
|
+
// Exports: export { name }, export const name, export function name
|
|
187
|
+
const exportRegex = /export\s+(?:(?:const|let|var|function|class|interface|type)\s+(\w+)|{\s*([^}]+)\s*})/g;
|
|
188
|
+
while ((match = exportRegex.exec(content)) !== null) {
|
|
189
|
+
if (match[1]) {
|
|
190
|
+
symbols.push(match[1]);
|
|
191
|
+
}
|
|
192
|
+
else if (match[2]) {
|
|
193
|
+
match[2].split(',').forEach(s => {
|
|
194
|
+
const name = s.trim().split(/\s+as\s+/)[0].trim();
|
|
195
|
+
if (name && /^\w+$/.test(name))
|
|
196
|
+
symbols.push(name);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Imports: import ... from 'path'
|
|
201
|
+
const importRegex = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
|
|
202
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
203
|
+
imports.push(match[1]);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Python
|
|
207
|
+
else if (['.py', '.pyw', '.pyi'].includes(extension)) {
|
|
208
|
+
// Functions: def name(
|
|
209
|
+
const defRegex = /def\s+(\w+)\s*\(/g;
|
|
210
|
+
let match;
|
|
211
|
+
while ((match = defRegex.exec(content)) !== null) {
|
|
212
|
+
symbols.push(match[1]);
|
|
213
|
+
}
|
|
214
|
+
// Classes: class Name
|
|
215
|
+
const classRegex = /class\s+(\w+)/g;
|
|
216
|
+
while ((match = classRegex.exec(content)) !== null) {
|
|
217
|
+
symbols.push(match[1]);
|
|
218
|
+
}
|
|
219
|
+
// Imports: from x import, import x
|
|
220
|
+
const importRegex = /(?:from\s+(\S+)\s+import|import\s+(\S+))/g;
|
|
221
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
222
|
+
imports.push(match[1] || match[2]);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Rust
|
|
226
|
+
else if (extension === '.rs') {
|
|
227
|
+
// Functions: fn name(, pub fn name(
|
|
228
|
+
const fnRegex = /(?:pub\s+)?fn\s+(\w+)/g;
|
|
229
|
+
let match;
|
|
230
|
+
while ((match = fnRegex.exec(content)) !== null) {
|
|
231
|
+
symbols.push(match[1]);
|
|
232
|
+
}
|
|
233
|
+
// Structs and enums
|
|
234
|
+
const structRegex = /(?:pub\s+)?(?:struct|enum)\s+(\w+)/g;
|
|
235
|
+
while ((match = structRegex.exec(content)) !== null) {
|
|
236
|
+
symbols.push(match[1]);
|
|
237
|
+
}
|
|
238
|
+
// Use statements
|
|
239
|
+
const useRegex = /use\s+([^;{]+)/g;
|
|
240
|
+
while ((match = useRegex.exec(content)) !== null) {
|
|
241
|
+
imports.push(match[1].trim());
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Go
|
|
245
|
+
else if (extension === '.go') {
|
|
246
|
+
// Functions: func name(, func (receiver) name(
|
|
247
|
+
const funcRegex = /func\s+(?:\([^)]*\)\s+)?(\w+)/g;
|
|
248
|
+
let match;
|
|
249
|
+
while ((match = funcRegex.exec(content)) !== null) {
|
|
250
|
+
symbols.push(match[1]);
|
|
251
|
+
}
|
|
252
|
+
// Types: type Name struct/interface
|
|
253
|
+
const typeRegex = /type\s+(\w+)\s+(?:struct|interface)/g;
|
|
254
|
+
while ((match = typeRegex.exec(content)) !== null) {
|
|
255
|
+
symbols.push(match[1]);
|
|
256
|
+
}
|
|
257
|
+
// Imports
|
|
258
|
+
const importRegex = /import\s+(?:"([^"]+)"|[\s\S]*?"([^"]+)")/g;
|
|
259
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
260
|
+
imports.push(match[1] || match[2]);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Deduplicate
|
|
264
|
+
return {
|
|
265
|
+
symbols: [...new Set(symbols)],
|
|
266
|
+
imports: [...new Set(imports)],
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Index a single file
|
|
271
|
+
*/
|
|
272
|
+
export function indexFile(filePath, projectPath, options = {}) {
|
|
273
|
+
const safePath = sanitizePath(projectPath);
|
|
274
|
+
const fullPath = join(safePath, filePath);
|
|
275
|
+
if (!existsSync(fullPath))
|
|
276
|
+
return null;
|
|
277
|
+
try {
|
|
278
|
+
const stats = statSync(fullPath);
|
|
279
|
+
const content = readFileSync(fullPath, 'utf-8');
|
|
280
|
+
const extension = extname(filePath).toLowerCase();
|
|
281
|
+
const { symbols, imports } = extractSymbols(content, extension);
|
|
282
|
+
const metadata = {
|
|
283
|
+
hash: hashFile(fullPath),
|
|
284
|
+
size: stats.size,
|
|
285
|
+
mtime: stats.mtimeMs,
|
|
286
|
+
lastIndexed: Date.now(),
|
|
287
|
+
symbols,
|
|
288
|
+
imports,
|
|
289
|
+
lineCount: content.split('\n').length,
|
|
290
|
+
};
|
|
291
|
+
return metadata;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
logger.warn(`Failed to index file: ${filePath}`, { error });
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Update index for a list of files
|
|
300
|
+
*/
|
|
301
|
+
export function updateIndex(files, projectPath, options = {}) {
|
|
302
|
+
const safePath = sanitizePath(projectPath);
|
|
303
|
+
const index = loadIndex(safePath);
|
|
304
|
+
let updated = 0;
|
|
305
|
+
let cached = 0;
|
|
306
|
+
let failed = 0;
|
|
307
|
+
for (const file of files) {
|
|
308
|
+
const fullPath = join(safePath, file);
|
|
309
|
+
// Skip if unchanged and not forcing
|
|
310
|
+
// Pass both absolute path (for stat) and relative path (for index lookup)
|
|
311
|
+
if (!options.force && !hasFileChanged(fullPath, index, file)) {
|
|
312
|
+
cached++;
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
const metadata = indexFile(file, safePath, { forceReindex: options.force });
|
|
316
|
+
if (metadata) {
|
|
317
|
+
index.files[file] = metadata;
|
|
318
|
+
updated++;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
failed++;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Update timestamp
|
|
325
|
+
index.lastFullScan = Date.now();
|
|
326
|
+
// Save if anything changed
|
|
327
|
+
if (updated > 0) {
|
|
328
|
+
saveIndex(safePath, index);
|
|
329
|
+
}
|
|
330
|
+
return { updated, cached, failed };
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Get cached metadata for a file
|
|
334
|
+
*/
|
|
335
|
+
export function getCachedMetadata(filePath, projectPath) {
|
|
336
|
+
const safePath = sanitizePath(projectPath);
|
|
337
|
+
const index = loadIndex(safePath);
|
|
338
|
+
return index.files[filePath] || null;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Update relevance scores for files (from analyzer results)
|
|
342
|
+
*/
|
|
343
|
+
export function updateRelevanceScores(scores, projectPath) {
|
|
344
|
+
const safePath = sanitizePath(projectPath);
|
|
345
|
+
const index = loadIndex(safePath);
|
|
346
|
+
for (const [file, { score, reasons }] of Object.entries(scores)) {
|
|
347
|
+
if (index.files[file]) {
|
|
348
|
+
index.files[file].relevanceScore = score;
|
|
349
|
+
index.files[file].reasons = reasons;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
saveIndex(safePath, index);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Clean up stale entries from the index
|
|
356
|
+
*/
|
|
357
|
+
export function cleanupIndex(projectPath) {
|
|
358
|
+
const safePath = sanitizePath(projectPath);
|
|
359
|
+
const index = loadIndex(safePath);
|
|
360
|
+
const now = Date.now();
|
|
361
|
+
let removed = 0;
|
|
362
|
+
for (const [file, metadata] of Object.entries(index.files)) {
|
|
363
|
+
const fullPath = join(safePath, file);
|
|
364
|
+
// Remove if file no longer exists
|
|
365
|
+
if (!existsSync(fullPath)) {
|
|
366
|
+
delete index.files[file];
|
|
367
|
+
removed++;
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
// Remove if entry is stale
|
|
371
|
+
if (now - metadata.lastIndexed > STALE_THRESHOLD_MS) {
|
|
372
|
+
delete index.files[file];
|
|
373
|
+
removed++;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (removed > 0) {
|
|
377
|
+
saveIndex(safePath, index);
|
|
378
|
+
}
|
|
379
|
+
return { removed };
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Get index statistics
|
|
383
|
+
*/
|
|
384
|
+
export function getIndexStats(projectPath) {
|
|
385
|
+
const safePath = sanitizePath(projectPath);
|
|
386
|
+
const index = loadIndex(safePath);
|
|
387
|
+
const now = Date.now();
|
|
388
|
+
const staleCount = Object.values(index.files)
|
|
389
|
+
.filter(f => now - f.lastIndexed > STALE_THRESHOLD_MS).length;
|
|
390
|
+
return {
|
|
391
|
+
indexed: index.totalFiles,
|
|
392
|
+
symbols: index.totalSymbols,
|
|
393
|
+
lastScan: index.lastFullScan,
|
|
394
|
+
staleCount,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Search symbols across indexed files
|
|
399
|
+
*/
|
|
400
|
+
export function searchSymbols(query, projectPath, limit = 20) {
|
|
401
|
+
const safePath = sanitizePath(projectPath);
|
|
402
|
+
const index = loadIndex(safePath);
|
|
403
|
+
const queryLower = query.toLowerCase();
|
|
404
|
+
const results = [];
|
|
405
|
+
for (const [file, metadata] of Object.entries(index.files)) {
|
|
406
|
+
for (const symbol of metadata.symbols) {
|
|
407
|
+
const symbolLower = symbol.toLowerCase();
|
|
408
|
+
// Exact match
|
|
409
|
+
if (symbolLower === queryLower) {
|
|
410
|
+
results.push({ file, symbol, score: 100 });
|
|
411
|
+
}
|
|
412
|
+
// Starts with query
|
|
413
|
+
else if (symbolLower.startsWith(queryLower)) {
|
|
414
|
+
results.push({ file, symbol, score: 80 });
|
|
415
|
+
}
|
|
416
|
+
// Contains query
|
|
417
|
+
else if (symbolLower.includes(queryLower)) {
|
|
418
|
+
results.push({ file, symbol, score: 60 });
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// Sort by score, then alphabetically
|
|
423
|
+
results.sort((a, b) => {
|
|
424
|
+
if (a.score !== b.score)
|
|
425
|
+
return b.score - a.score;
|
|
426
|
+
return a.symbol.localeCompare(b.symbol);
|
|
427
|
+
});
|
|
428
|
+
return results.slice(0, limit);
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=file-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-index.js","sourceRoot":"","sources":["../src/file-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoCrC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,YAAY,CAAC,WAAmB;IACvC,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,kDAAkD;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,KAAgB;IAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC;QACH,6BAA6B;QAC7B,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACnD,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;aAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzD,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,WAAW;QACX,YAAY,EAAE,CAAC;QACf,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,KAAgB,EAChB,YAAqB;IAErB,2EAA2E;IAC3E,MAAM,UAAU,GAAG,YAAY,IAAI,QAAQ,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEjC,qCAAqC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAE9C,sCAAsC;QACtC,yCAAyC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,WAAW,KAAK,QAAQ,CAAC,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,0EAA0E;QAC1E,IAAI,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS;QACT,KAAK,EAAE;YACL,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW,EAAE,OAAO,CAAC,MAAM;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,SAAiB;IAI/D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,wBAAwB;IACxB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvE,mEAAmE;QACnE,MAAM,SAAS,GAAG,gGAAgG,CAAC;QACnH,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC;QACpC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,oEAAoE;QACpE,MAAM,WAAW,GAAG,uFAAuF,CAAC;QAC5G,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAClD,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,yCAAyC,CAAC;QAC9D,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,SAAS;SACJ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACrC,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC;QACpC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,2CAA2C,CAAC;QAChE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO;SACF,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QAC7B,oCAAoC;QACpC,MAAM,OAAO,GAAG,wBAAwB,CAAC;QACzC,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,qCAAqC,CAAC;QAC1D,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,KAAK;SACA,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QAC7B,+CAA+C;QAC/C,MAAM,SAAS,GAAG,gCAAgC,CAAC;QACnD,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,oCAAoC;QACpC,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,UAAU;QACV,MAAM,WAAW,GAAG,2CAA2C,CAAC;QAChE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,cAAc;IACd,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,WAAmB,EACnB,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,OAAO;YACP,OAAO;YACP,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;SACtC,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,yBAAyB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAAe,EACf,WAAmB,EACnB,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtC,oCAAoC;QACpC,0EAA0E;QAC1E,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,2BAA2B;IAC3B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA4D,EAC5D,WAAmB;IAEnB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC;YACzC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtC,kCAAkC;QAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,2BAA2B;QAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAM/C,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,GAAG,kBAAkB,CAAC,CAAC,MAAM,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,OAAO,EAAE,KAAK,CAAC,YAAY;QAC3B,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,WAAmB,EACnB,QAAgB,EAAE;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,MAAM,OAAO,GAA2D,EAAE,CAAC;IAE3E,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAEzC,cAAc;YACd,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,oBAAoB;iBACf,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,iBAAiB;iBACZ,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAClD,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyIpE,wBAAgB,YAAY,IAAI,SAAS,CAuexC"}
|
package/dist/server.js
CHANGED
|
@@ -23,7 +23,11 @@ detectProjectType, detectProjectTypeSchema, checkScopeCreep, checkScopeCreepSche
|
|
|
23
23
|
// Preflight - before-you-ship requirements
|
|
24
24
|
preflightCheck, preflightCheckSchema, preflightUpdate, preflightUpdateSchema,
|
|
25
25
|
// Gameplan progress tracking
|
|
26
|
-
analyzeGameplanTool, analyzeGameplanSchema, getGameplanProgressTool, getProgressSchema,
|
|
26
|
+
analyzeGameplanTool, analyzeGameplanSchema, getGameplanProgressTool, getProgressSchema,
|
|
27
|
+
// Code complexity and simplification
|
|
28
|
+
analyzeComplexity, complexitySchema, analyzeSimplify, simplifySchema,
|
|
29
|
+
// Vulnerability scanning
|
|
30
|
+
vulnScan, vulnScanSchema, } from './tools/index.js';
|
|
27
31
|
import { registerAllPrompts } from './prompts/index.js';
|
|
28
32
|
import { registerAllResources } from './resources/index.js';
|
|
29
33
|
import { logger } from './logger.js';
|
|
@@ -155,13 +159,18 @@ export function createServer() {
|
|
|
155
159
|
// Gameplan progress tracking
|
|
156
160
|
server.tool('midas_gameplan_analyze', 'Analyze gameplan progress. Parses tasks from gameplan.md, cross-references with code, detects what is implemented vs missing.', analyzeGameplanSchema.shape, wrapTool('midas_gameplan_analyze', analyzeGameplanTool));
|
|
157
161
|
server.tool('midas_gameplan_progress', 'Get quick gameplan progress summary. Shows documented vs actual progress percentage.', getProgressSchema.shape, wrapTool('midas_gameplan_progress', getGameplanProgressTool));
|
|
162
|
+
// Code complexity and simplification
|
|
163
|
+
server.tool('midas_complexity', 'Analyze code complexity across the project. Returns cyclomatic complexity, nesting depth, function length metrics. Identifies hotspots that need refactoring.', complexitySchema.shape, wrapTool('midas_complexity', analyzeComplexity));
|
|
164
|
+
server.tool('midas_simplify', 'Analyze code for simplification opportunities. Detects deep nesting, long functions, duplication, dead code. Returns prioritized suggestions.', simplifySchema.shape, wrapTool('midas_simplify', analyzeSimplify));
|
|
165
|
+
// Vulnerability scanning
|
|
166
|
+
server.tool('midas_vuln_scan', 'Scan codebase for security vulnerabilities. Detects: hardcoded secrets, SQL injection, command injection, XSS, slopsquatting (AI-hallucinated packages). Returns prioritized fixes.', vulnScanSchema.shape, wrapTool('midas_vuln_scan', vulnScan));
|
|
158
167
|
// Register prompts
|
|
159
168
|
registerAllPrompts(server);
|
|
160
169
|
logger.debug('Registered prompts');
|
|
161
170
|
// Register resources
|
|
162
171
|
registerAllResources(server);
|
|
163
172
|
logger.debug('Registered resources');
|
|
164
|
-
logger.info('Midas MCP server ready', { tools:
|
|
173
|
+
logger.info('Midas MCP server ready', { tools: 37, prompts: 20, resources: 5 });
|
|
165
174
|
return server;
|
|
166
175
|
}
|
|
167
176
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|