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.
Files changed (43) hide show
  1. package/dist/analyzer.d.ts +19 -0
  2. package/dist/analyzer.d.ts.map +1 -1
  3. package/dist/analyzer.js +95 -1
  4. package/dist/analyzer.js.map +1 -1
  5. package/dist/code-discovery.d.ts.map +1 -1
  6. package/dist/code-discovery.js +39 -2
  7. package/dist/code-discovery.js.map +1 -1
  8. package/dist/docs/INGREDIENTS.md +57 -17
  9. package/dist/file-index.d.ts +123 -0
  10. package/dist/file-index.d.ts.map +1 -0
  11. package/dist/file-index.js +430 -0
  12. package/dist/file-index.js.map +1 -0
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +11 -2
  15. package/dist/server.js.map +1 -1
  16. package/dist/state/phase.d.ts +8 -3
  17. package/dist/state/phase.d.ts.map +1 -1
  18. package/dist/state/phase.js +85 -7
  19. package/dist/state/phase.js.map +1 -1
  20. package/dist/tools/completeness.d.ts.map +1 -1
  21. package/dist/tools/completeness.js +153 -24
  22. package/dist/tools/completeness.js.map +1 -1
  23. package/dist/tools/complexity.d.ts +91 -0
  24. package/dist/tools/complexity.d.ts.map +1 -0
  25. package/dist/tools/complexity.js +583 -0
  26. package/dist/tools/complexity.js.map +1 -0
  27. package/dist/tools/index.d.ts +2 -0
  28. package/dist/tools/index.d.ts.map +1 -1
  29. package/dist/tools/index.js +4 -0
  30. package/dist/tools/index.js.map +1 -1
  31. package/dist/tools/vuln-scan.d.ts +74 -0
  32. package/dist/tools/vuln-scan.d.ts.map +1 -0
  33. package/dist/tools/vuln-scan.js +493 -0
  34. package/dist/tools/vuln-scan.js.map +1 -0
  35. package/dist/tracker.d.ts +22 -0
  36. package/dist/tracker.d.ts.map +1 -1
  37. package/dist/tracker.js +93 -16
  38. package/dist/tracker.js.map +1 -1
  39. package/dist/tui.d.ts.map +1 -1
  40. package/dist/tui.js +44 -32
  41. package/dist/tui.js.map +1 -1
  42. package/docs/INGREDIENTS.md +57 -17
  43. 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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiIpE,wBAAgB,YAAY,IAAI,SAAS,CAgdxC"}
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, } from './tools/index.js';
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: 35, prompts: 20, resources: 5 });
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
@@ -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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"}