code-auditor-mcp 1.0.0 → 1.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.
Files changed (113) hide show
  1. package/README.md +72 -2
  2. package/dist/api/index.d.ts +1 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +3 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/cli.d.ts +1 -1
  7. package/dist/cli.js +229 -22
  8. package/dist/cli.js.map +1 -1
  9. package/dist/codeIndexDb.d.ts +150 -0
  10. package/dist/codeIndexDb.d.ts.map +1 -0
  11. package/dist/codeIndexDb.js +847 -0
  12. package/dist/codeIndexDb.js.map +1 -0
  13. package/dist/codeIndexService.d.ts +66 -0
  14. package/dist/codeIndexService.d.ts.map +1 -0
  15. package/dist/codeIndexService.js +201 -0
  16. package/dist/codeIndexService.js.map +1 -0
  17. package/dist/config/configLoader.d.ts.map +1 -1
  18. package/dist/config/configLoader.js +17 -1
  19. package/dist/config/configLoader.js.map +1 -1
  20. package/dist/config/defaults.d.ts +9 -0
  21. package/dist/config/defaults.d.ts.map +1 -1
  22. package/dist/config/defaults.js +9 -0
  23. package/dist/config/defaults.js.map +1 -1
  24. package/dist/constants.d.ts +8 -0
  25. package/dist/constants.d.ts.map +1 -0
  26. package/dist/constants.js +14 -0
  27. package/dist/constants.js.map +1 -0
  28. package/dist/functionScanner.d.ts +30 -0
  29. package/dist/functionScanner.d.ts.map +1 -0
  30. package/dist/functionScanner.js +264 -0
  31. package/dist/functionScanner.js.map +1 -0
  32. package/dist/generators/AWSQConfigGenerator.d.ts +8 -0
  33. package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -0
  34. package/dist/generators/AWSQConfigGenerator.js +33 -0
  35. package/dist/generators/AWSQConfigGenerator.js.map +1 -0
  36. package/dist/generators/AiderConfigGenerator.d.ts +8 -0
  37. package/dist/generators/AiderConfigGenerator.d.ts.map +1 -0
  38. package/dist/generators/AiderConfigGenerator.js +23 -0
  39. package/dist/generators/AiderConfigGenerator.js.map +1 -0
  40. package/dist/generators/BaseConfigGenerator.d.ts +51 -0
  41. package/dist/generators/BaseConfigGenerator.d.ts.map +1 -0
  42. package/dist/generators/BaseConfigGenerator.js +67 -0
  43. package/dist/generators/BaseConfigGenerator.js.map +1 -0
  44. package/dist/generators/ClaudeConfigGenerator.d.ts +14 -0
  45. package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -0
  46. package/dist/generators/ClaudeConfigGenerator.js +70 -0
  47. package/dist/generators/ClaudeConfigGenerator.js.map +1 -0
  48. package/dist/generators/ClineConfigGenerator.d.ts +9 -0
  49. package/dist/generators/ClineConfigGenerator.d.ts.map +1 -0
  50. package/dist/generators/ClineConfigGenerator.js +26 -0
  51. package/dist/generators/ClineConfigGenerator.js.map +1 -0
  52. package/dist/generators/CodeiumConfigGenerator.d.ts +8 -0
  53. package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -0
  54. package/dist/generators/CodeiumConfigGenerator.js +30 -0
  55. package/dist/generators/CodeiumConfigGenerator.js.map +1 -0
  56. package/dist/generators/ConfigGeneratorFactory.d.ts +35 -0
  57. package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -0
  58. package/dist/generators/ConfigGeneratorFactory.js +77 -0
  59. package/dist/generators/ConfigGeneratorFactory.js.map +1 -0
  60. package/dist/generators/ContinueConfigGenerator.d.ts +12 -0
  61. package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -0
  62. package/dist/generators/ContinueConfigGenerator.js +99 -0
  63. package/dist/generators/ContinueConfigGenerator.js.map +1 -0
  64. package/dist/generators/CopilotConfigGenerator.d.ts +12 -0
  65. package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -0
  66. package/dist/generators/CopilotConfigGenerator.js +77 -0
  67. package/dist/generators/CopilotConfigGenerator.js.map +1 -0
  68. package/dist/generators/CursorConfigGenerator.d.ts +12 -0
  69. package/dist/generators/CursorConfigGenerator.d.ts.map +1 -0
  70. package/dist/generators/CursorConfigGenerator.js +80 -0
  71. package/dist/generators/CursorConfigGenerator.js.map +1 -0
  72. package/dist/generators/JetBrainsConfigGenerator.d.ts +8 -0
  73. package/dist/generators/JetBrainsConfigGenerator.d.ts.map +1 -0
  74. package/dist/generators/JetBrainsConfigGenerator.js +36 -0
  75. package/dist/generators/JetBrainsConfigGenerator.js.map +1 -0
  76. package/dist/generators/VSCodeConfigGenerator.d.ts +8 -0
  77. package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -0
  78. package/dist/generators/VSCodeConfigGenerator.js +29 -0
  79. package/dist/generators/VSCodeConfigGenerator.js.map +1 -0
  80. package/dist/generators/index.d.ts +13 -0
  81. package/dist/generators/index.d.ts.map +1 -0
  82. package/dist/generators/index.js +14 -0
  83. package/dist/generators/index.js.map +1 -0
  84. package/dist/mcp-standalone.js +0 -0
  85. package/dist/mcp.js +483 -2
  86. package/dist/mcp.js.map +1 -1
  87. package/dist/search/QueryParser.d.ts +60 -0
  88. package/dist/search/QueryParser.d.ts.map +1 -0
  89. package/dist/search/QueryParser.js +330 -0
  90. package/dist/search/QueryParser.js.map +1 -0
  91. package/dist/search/index.d.ts +7 -0
  92. package/dist/search/index.d.ts.map +1 -0
  93. package/dist/search/index.js +6 -0
  94. package/dist/search/index.js.map +1 -0
  95. package/dist/test-multi-strategy-search.d.ts +3 -0
  96. package/dist/test-multi-strategy-search.d.ts.map +1 -0
  97. package/dist/test-multi-strategy-search.js +170 -0
  98. package/dist/test-multi-strategy-search.js.map +1 -0
  99. package/dist/types.d.ts +136 -0
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/ui/InteractivePrompts.d.ts +37 -0
  102. package/dist/ui/InteractivePrompts.d.ts.map +1 -0
  103. package/dist/ui/InteractivePrompts.js +147 -0
  104. package/dist/ui/InteractivePrompts.js.map +1 -0
  105. package/dist/ui/index.d.ts +2 -0
  106. package/dist/ui/index.d.ts.map +1 -0
  107. package/dist/ui/index.js +3 -0
  108. package/dist/ui/index.js.map +1 -0
  109. package/dist/utils/jsDocParser.d.ts +84 -0
  110. package/dist/utils/jsDocParser.d.ts.map +1 -0
  111. package/dist/utils/jsDocParser.js +366 -0
  112. package/dist/utils/jsDocParser.js.map +1 -0
  113. package/package.json +31 -11
package/dist/mcp.js CHANGED
@@ -1,11 +1,23 @@
1
1
  #!/usr/bin/env node
2
+ // MCP servers use stdio: stdout for protocol messages, stderr for logging
3
+ // All log messages must go to stderr to avoid interfering with MCP protocol
4
+ import chalk from 'chalk';
5
+ console.error(chalk.blue('[INFO]'), 'Loading modules...');
2
6
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
8
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
9
+ console.error(chalk.blue('[INFO]'), 'MCP SDK loaded');
5
10
  import { createAuditRunner } from './auditRunner.js';
11
+ console.error(chalk.blue('[INFO]'), 'Audit runner loaded');
12
+ import { registerFunctions, searchFunctions, getIndexStats, findDefinition, clearIndex, syncFileIndex } from './codeIndexService.js';
13
+ import { scanFunctionsInFile, scanFunctionsInDirectory } from './functionScanner.js';
14
+ import { ConfigGeneratorFactory } from './generators/ConfigGeneratorFactory.js';
15
+ import { DEFAULT_SERVER_URL } from './constants.js';
16
+ console.error(chalk.blue('[INFO]'), 'Code index service loaded');
6
17
  import path from 'node:path';
7
18
  import fs from 'node:fs/promises';
8
- import chalk from 'chalk';
19
+ import { CodeIndexDB } from './codeIndexDB.js';
20
+ console.error(chalk.blue('[INFO]'), 'All modules loaded successfully');
9
21
  const tools = [
10
22
  {
11
23
  name: 'audit_run',
@@ -79,8 +91,200 @@ const tools = [
79
91
  description: 'List all available code analyzers and their capabilities',
80
92
  parameters: [],
81
93
  },
94
+ {
95
+ name: 'register_functions',
96
+ description: 'Register functions with metadata for code indexing',
97
+ parameters: [
98
+ {
99
+ name: 'functions',
100
+ type: 'array',
101
+ required: true,
102
+ description: 'Array of function objects with metadata',
103
+ },
104
+ {
105
+ name: 'overwrite',
106
+ type: 'boolean',
107
+ required: false,
108
+ description: 'Whether to overwrite existing entries',
109
+ default: false,
110
+ },
111
+ ],
112
+ },
113
+ {
114
+ name: 'search_functions',
115
+ description: 'Search registered functions by various criteria',
116
+ parameters: [
117
+ {
118
+ name: 'query',
119
+ type: 'string',
120
+ required: true,
121
+ description: 'Search query (supports full-text search)',
122
+ },
123
+ {
124
+ name: 'filters',
125
+ type: 'object',
126
+ required: false,
127
+ description: 'Optional filters (language, filePath, dependencies)',
128
+ },
129
+ {
130
+ name: 'limit',
131
+ type: 'number',
132
+ required: false,
133
+ description: 'Maximum results to return',
134
+ default: 50,
135
+ },
136
+ {
137
+ name: 'offset',
138
+ type: 'number',
139
+ required: false,
140
+ description: 'Offset for pagination',
141
+ default: 0,
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ name: 'index_functions',
147
+ description: 'Index functions from TypeScript/JavaScript files',
148
+ parameters: [
149
+ {
150
+ name: 'path',
151
+ type: 'string',
152
+ required: true,
153
+ description: 'File or directory path to index',
154
+ },
155
+ {
156
+ name: 'recursive',
157
+ type: 'boolean',
158
+ required: false,
159
+ description: 'Recursively index directories',
160
+ default: true,
161
+ },
162
+ {
163
+ name: 'fileTypes',
164
+ type: 'array',
165
+ required: false,
166
+ description: 'File extensions to process',
167
+ default: ['.ts', '.tsx', '.js', '.jsx'],
168
+ },
169
+ ],
170
+ },
171
+ {
172
+ name: 'find_definition',
173
+ description: 'Find the definition of a specific function',
174
+ parameters: [
175
+ {
176
+ name: 'name',
177
+ type: 'string',
178
+ required: true,
179
+ description: 'Function name to search for',
180
+ },
181
+ {
182
+ name: 'filePath',
183
+ type: 'string',
184
+ required: false,
185
+ description: 'Optional file path to narrow search',
186
+ },
187
+ ],
188
+ },
189
+ {
190
+ name: 'get_index_stats',
191
+ description: 'Get statistics about the code index',
192
+ parameters: [],
193
+ },
194
+ {
195
+ name: 'clear_index',
196
+ description: 'Clear all indexed functions',
197
+ parameters: [
198
+ {
199
+ name: 'confirm',
200
+ type: 'boolean',
201
+ required: false,
202
+ description: 'Confirm clearing the index',
203
+ default: false,
204
+ },
205
+ ],
206
+ },
207
+ {
208
+ name: 'generate_ai_configs',
209
+ description: 'Generate configuration files for AI coding assistants',
210
+ parameters: [
211
+ {
212
+ name: 'tools',
213
+ type: 'array',
214
+ required: true,
215
+ description: 'AI tools to generate configs for (cursor, continue, copilot, claude, etc.)',
216
+ },
217
+ {
218
+ name: 'serverUrl',
219
+ type: 'string',
220
+ required: false,
221
+ description: 'MCP server URL',
222
+ default: DEFAULT_SERVER_URL,
223
+ },
224
+ {
225
+ name: 'outputDir',
226
+ type: 'string',
227
+ required: false,
228
+ description: 'Output directory for configuration files',
229
+ default: '.',
230
+ },
231
+ {
232
+ name: 'overwrite',
233
+ type: 'boolean',
234
+ required: false,
235
+ description: 'Overwrite existing files',
236
+ default: false,
237
+ },
238
+ ],
239
+ },
240
+ {
241
+ name: 'list_ai_tools',
242
+ description: 'List all supported AI tools for configuration generation',
243
+ parameters: [],
244
+ },
245
+ {
246
+ name: 'get_ai_tool_info',
247
+ description: 'Get detailed information about a specific AI tool',
248
+ parameters: [
249
+ {
250
+ name: 'tool',
251
+ type: 'string',
252
+ required: true,
253
+ description: 'AI tool name (cursor, continue, copilot, etc.)',
254
+ },
255
+ ],
256
+ },
257
+ {
258
+ name: 'validate_ai_config',
259
+ description: 'Validate a generated AI tool configuration',
260
+ parameters: [
261
+ {
262
+ name: 'tool',
263
+ type: 'string',
264
+ required: true,
265
+ description: 'AI tool name',
266
+ },
267
+ {
268
+ name: 'config',
269
+ type: 'object',
270
+ required: true,
271
+ description: 'Configuration object to validate',
272
+ },
273
+ ],
274
+ },
275
+ {
276
+ name: 'bulk_cleanup',
277
+ description: 'Remove index entries for deleted files',
278
+ parameters: [],
279
+ },
280
+ {
281
+ name: 'deep_sync',
282
+ description: 'Deep synchronize all indexed files to update signatures and remove stale entries',
283
+ parameters: [],
284
+ },
82
285
  ];
83
286
  async function startMcpServer() {
287
+ console.error(chalk.blue('[INFO]'), 'Starting Code Auditor MCP Server...');
84
288
  const server = new Server({
85
289
  name: 'code-auditor',
86
290
  version: '0.1.0',
@@ -89,8 +293,11 @@ async function startMcpServer() {
89
293
  tools: {},
90
294
  },
91
295
  });
296
+ console.error(chalk.blue('[INFO]'), 'Server instance created');
92
297
  // Handle tool listing
298
+ console.error(chalk.blue('[INFO]'), 'Setting up request handlers...');
93
299
  server.setRequestHandler(ListToolsRequestSchema, async () => {
300
+ console.error(chalk.blue('[DEBUG]'), 'Handling ListTools request');
94
301
  return {
95
302
  tools: tools.map(tool => ({
96
303
  name: tool.name,
@@ -111,9 +318,11 @@ async function startMcpServer() {
111
318
  })),
112
319
  };
113
320
  });
321
+ console.error(chalk.blue('[INFO]'), `Registered ${tools.length} tools`);
114
322
  // Handle tool execution
115
323
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
116
324
  const { name, arguments: args } = request.params;
325
+ console.error(chalk.blue('[DEBUG]'), `Handling CallTool request for: ${name}`);
117
326
  try {
118
327
  let result;
119
328
  switch (name) {
@@ -258,6 +467,263 @@ async function startMcpServer() {
258
467
  };
259
468
  break;
260
469
  }
470
+ case 'register_functions': {
471
+ const functions = args.functions;
472
+ const overwrite = args.overwrite || false;
473
+ if (!Array.isArray(functions)) {
474
+ throw new Error('functions must be an array');
475
+ }
476
+ result = await registerFunctions(functions, { overwrite });
477
+ break;
478
+ }
479
+ case 'search_functions': {
480
+ const query = args.query;
481
+ const filters = args.filters;
482
+ const limit = args.limit || 50;
483
+ const offset = args.offset || 0;
484
+ // Allow empty query to return all results
485
+ if (query !== undefined && typeof query !== 'string') {
486
+ throw new Error('query must be a string');
487
+ }
488
+ result = await searchFunctions({
489
+ query,
490
+ filters,
491
+ limit,
492
+ offset
493
+ });
494
+ break;
495
+ }
496
+ case 'index_functions': {
497
+ const targetPath = path.resolve(args.path);
498
+ const recursive = args.recursive !== false;
499
+ const fileTypes = args.fileTypes || ['.ts', '.tsx', '.js', '.jsx'];
500
+ const stats = await fs.stat(targetPath);
501
+ if (stats.isFile()) {
502
+ // For single files, use sync to handle additions/updates/removals
503
+ const functions = await scanFunctionsInFile(targetPath);
504
+ const syncResult = await syncFileIndex(targetPath, functions);
505
+ result = {
506
+ success: true,
507
+ registered: syncResult.added + syncResult.updated,
508
+ failed: 0,
509
+ path: targetPath,
510
+ totalScanned: functions.length,
511
+ syncStats: syncResult
512
+ };
513
+ }
514
+ else {
515
+ // For directories, use regular registration (could be improved later)
516
+ const functions = await scanFunctionsInDirectory(targetPath, { recursive, fileTypes });
517
+ const registerResult = await registerFunctions(functions);
518
+ result = {
519
+ ...registerResult,
520
+ path: targetPath,
521
+ totalScanned: functions.length,
522
+ };
523
+ }
524
+ break;
525
+ }
526
+ case 'find_definition': {
527
+ const name = args.name;
528
+ const filePath = args.filePath;
529
+ if (!name || typeof name !== 'string') {
530
+ throw new Error('name must be a non-empty string');
531
+ }
532
+ const definition = await findDefinition(name, filePath);
533
+ result = definition || { error: 'Function not found' };
534
+ break;
535
+ }
536
+ case 'get_index_stats': {
537
+ result = await getIndexStats();
538
+ break;
539
+ }
540
+ case 'clear_index': {
541
+ const confirm = args.confirm;
542
+ if (!confirm) {
543
+ throw new Error('Please set confirm: true to clear the index');
544
+ }
545
+ await clearIndex();
546
+ result = { message: 'Index cleared successfully' };
547
+ break;
548
+ }
549
+ case 'generate_ai_configs': {
550
+ const tools = args.tools;
551
+ const serverUrl = args.serverUrl || DEFAULT_SERVER_URL;
552
+ const outputDir = args.outputDir || '.';
553
+ const overwrite = args.overwrite || false;
554
+ if (!Array.isArray(tools) || tools.length === 0) {
555
+ throw new Error('tools parameter must be a non-empty array');
556
+ }
557
+ const factory = new ConfigGeneratorFactory(serverUrl);
558
+ const generatedFiles = [];
559
+ const errors = [];
560
+ for (const tool of tools) {
561
+ try {
562
+ const generator = factory.createGenerator(tool);
563
+ if (!generator) {
564
+ errors.push(`Unknown tool: ${tool}`);
565
+ continue;
566
+ }
567
+ const config = generator.generateConfig();
568
+ const outputPath = path.resolve(outputDir, config.filename);
569
+ // Check if file exists
570
+ let fileExists = false;
571
+ try {
572
+ await fs.access(outputPath);
573
+ fileExists = true;
574
+ }
575
+ catch {
576
+ // File doesn't exist
577
+ }
578
+ if (fileExists && !overwrite) {
579
+ errors.push(`File already exists: ${config.filename} (use overwrite: true to replace)`);
580
+ continue;
581
+ }
582
+ // Ensure directory exists
583
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
584
+ // Write main config file
585
+ await fs.writeFile(outputPath, config.content);
586
+ generatedFiles.push(config.filename);
587
+ // Write additional files if any
588
+ if (config.additionalFiles) {
589
+ for (const additionalFile of config.additionalFiles) {
590
+ const additionalPath = path.resolve(outputDir, additionalFile.filename);
591
+ await fs.mkdir(path.dirname(additionalPath), { recursive: true });
592
+ await fs.writeFile(additionalPath, additionalFile.content);
593
+ generatedFiles.push(additionalFile.filename);
594
+ }
595
+ }
596
+ }
597
+ catch (error) {
598
+ errors.push(`Failed to generate config for ${tool}: ${error instanceof Error ? error.message : 'Unknown error'}`);
599
+ }
600
+ }
601
+ result = {
602
+ success: errors.length === 0,
603
+ generatedFiles,
604
+ errors: errors.length > 0 ? errors : undefined,
605
+ totalRequested: tools.length,
606
+ totalGenerated: generatedFiles.length
607
+ };
608
+ break;
609
+ }
610
+ case 'list_ai_tools': {
611
+ const factory = new ConfigGeneratorFactory();
612
+ const toolInfo = factory.getToolInfo();
613
+ result = {
614
+ tools: toolInfo,
615
+ totalCount: toolInfo.length,
616
+ categories: {
617
+ native_mcp: toolInfo.filter(t => !t.requiresAuth).map(t => t.name),
618
+ api_based: toolInfo.filter(t => t.requiresAuth).map(t => t.name)
619
+ }
620
+ };
621
+ break;
622
+ }
623
+ case 'get_ai_tool_info': {
624
+ const toolName = args.tool;
625
+ if (!toolName) {
626
+ throw new Error('tool parameter is required');
627
+ }
628
+ const factory = new ConfigGeneratorFactory();
629
+ const generator = factory.createGenerator(toolName);
630
+ if (!generator) {
631
+ throw new Error(`Unknown tool: ${toolName}`);
632
+ }
633
+ const config = generator.generateConfig();
634
+ result = {
635
+ name: toolName,
636
+ displayName: generator.getToolName(),
637
+ requiresAuth: generator.requiresAuth(),
638
+ defaultApiKey: generator.getDefaultApiKey(),
639
+ configFilename: generator.getFilename(),
640
+ instructions: generator.getInstructions(),
641
+ sampleConfig: JSON.parse(config.content)
642
+ };
643
+ break;
644
+ }
645
+ case 'validate_ai_config': {
646
+ const toolName = args.tool;
647
+ const config = args.config;
648
+ if (!toolName) {
649
+ throw new Error('tool parameter is required');
650
+ }
651
+ if (!config) {
652
+ throw new Error('config parameter is required');
653
+ }
654
+ const factory = new ConfigGeneratorFactory();
655
+ const generator = factory.createGenerator(toolName);
656
+ if (!generator) {
657
+ throw new Error(`Unknown tool: ${toolName}`);
658
+ }
659
+ // Generate reference config to compare structure
660
+ const referenceConfig = generator.generateConfig();
661
+ const reference = JSON.parse(referenceConfig.content);
662
+ // Basic validation - check if main structure matches
663
+ const errors = [];
664
+ const validateObject = (ref, actual, path = '') => {
665
+ for (const key in ref) {
666
+ const currentPath = path ? `${path}.${key}` : key;
667
+ if (!(key in actual)) {
668
+ errors.push(`Missing required field: ${currentPath}`);
669
+ }
670
+ else if (typeof ref[key] === 'object' && ref[key] !== null && !Array.isArray(ref[key])) {
671
+ if (typeof actual[key] === 'object' && actual[key] !== null) {
672
+ validateObject(ref[key], actual[key], currentPath);
673
+ }
674
+ else {
675
+ errors.push(`Field ${currentPath} should be an object`);
676
+ }
677
+ }
678
+ }
679
+ };
680
+ validateObject(reference, config);
681
+ result = {
682
+ valid: errors.length === 0,
683
+ tool: toolName,
684
+ errors: errors.length > 0 ? errors : undefined,
685
+ warnings: [] // Could add warnings for extra fields, deprecated settings, etc.
686
+ };
687
+ break;
688
+ }
689
+ case 'bulk_cleanup': {
690
+ const db = CodeIndexDB.getInstance();
691
+ await db.initialize();
692
+ const cleanupResult = await db.bulkCleanup();
693
+ result = {
694
+ success: true,
695
+ scannedFiles: cleanupResult.scannedCount,
696
+ removedEntries: cleanupResult.removedCount,
697
+ removedFiles: cleanupResult.removedFiles,
698
+ errors: cleanupResult.errors,
699
+ message: `Cleaned up ${cleanupResult.removedCount} entries from ${cleanupResult.removedFiles.length} deleted files`
700
+ };
701
+ break;
702
+ }
703
+ case 'deep_sync': {
704
+ const db = CodeIndexDB.getInstance();
705
+ await db.initialize();
706
+ // Progress tracking
707
+ const progressUpdates = [];
708
+ const syncResult = await db.deepSync((progress) => {
709
+ progressUpdates.push({
710
+ current: progress.current,
711
+ total: progress.total,
712
+ file: progress.file,
713
+ percentage: Math.round((progress.current / progress.total) * 100)
714
+ });
715
+ });
716
+ result = {
717
+ success: true,
718
+ syncedFiles: syncResult.syncedFiles,
719
+ addedFunctions: syncResult.addedFunctions,
720
+ updatedFunctions: syncResult.updatedFunctions,
721
+ removedFunctions: syncResult.removedFunctions,
722
+ errors: syncResult.errors,
723
+ message: `Synced ${syncResult.syncedFiles} files: ${syncResult.addedFunctions} added, ${syncResult.updatedFunctions} updated, ${syncResult.removedFunctions} removed`
724
+ };
725
+ break;
726
+ }
261
727
  default:
262
728
  throw new Error(`Unknown tool: ${name}`);
263
729
  }
@@ -285,7 +751,9 @@ async function startMcpServer() {
285
751
  };
286
752
  }
287
753
  });
754
+ console.error(chalk.blue('[INFO]'), 'Request handlers configured');
288
755
  const transport = new StdioServerTransport();
756
+ console.error(chalk.blue('[INFO]'), 'Creating stdio transport...');
289
757
  await server.connect(transport);
290
758
  console.error(chalk.green('✓ Code Auditor MCP Server started'));
291
759
  console.error(chalk.gray('Listening on stdio...'));
@@ -332,9 +800,22 @@ function getHealthRecommendation(score, result) {
332
800
  }
333
801
  return 'Code health needs attention - run detailed audit';
334
802
  }
803
+ // Error handlers
804
+ process.on('uncaughtException', (error) => {
805
+ console.error(chalk.red('[ERROR]'), 'Uncaught exception:', error);
806
+ console.error(chalk.red('[ERROR]'), 'Stack:', error.stack);
807
+ process.exit(1);
808
+ });
809
+ process.on('unhandledRejection', (reason, promise) => {
810
+ console.error(chalk.red('[ERROR]'), 'Unhandled rejection at:', promise);
811
+ console.error(chalk.red('[ERROR]'), 'Reason:', reason);
812
+ process.exit(1);
813
+ });
335
814
  // Start server
815
+ console.error(chalk.blue('[INFO]'), 'Initializing server...');
336
816
  startMcpServer().catch(error => {
337
- console.error(chalk.red('Failed to start MCP server:'), error);
817
+ console.error(chalk.red('[ERROR]'), 'Failed to start MCP server:', error);
818
+ console.error(chalk.red('[ERROR]'), 'Stack:', error.stack);
338
819
  process.exit(1);
339
820
  });
340
821
  //# sourceMappingURL=mcp.js.map
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { ParsedQuery } from '../types';
2
+ /**
3
+ * QueryParser - Parses search queries into structured format with tokenization and synonym expansion
4
+ *
5
+ * Supports:
6
+ * - Multi-word queries with intelligent tokenization
7
+ * - Exact phrase matching with quotes
8
+ * - Excluded terms with minus operator
9
+ * - Special operators (type:, param:, return:, etc.)
10
+ * - Synonym expansion for common programming terms
11
+ * - Fuzzy search and stemming flags
12
+ */
13
+ export declare class QueryParser {
14
+ private static readonly SYNONYMS;
15
+ private static readonly OPERATORS;
16
+ /**
17
+ * Parse a search query string into a structured ParsedQuery object
18
+ * @param query The raw search query string
19
+ * @returns ParsedQuery object with extracted terms, filters, and options
20
+ */
21
+ parse(query: string): ParsedQuery;
22
+ /**
23
+ * Extract quoted phrases from the query
24
+ * @param query The query string
25
+ * @returns Array of phrase objects with original and cleaned value
26
+ */
27
+ private extractPhrases;
28
+ /**
29
+ * Extract operators and their values from the query
30
+ * @param query The query string
31
+ * @returns Object with operators map and cleaned query
32
+ */
33
+ private extractOperators;
34
+ /**
35
+ * Apply operator filters to the parsed query
36
+ * @param operators Map of operators and values
37
+ * @param parsedQuery The parsed query object to update
38
+ */
39
+ private applyOperatorFilters;
40
+ /**
41
+ * Tokenize a string into individual words
42
+ * @param text The text to tokenize
43
+ * @returns Array of tokens
44
+ */
45
+ private tokenize;
46
+ /**
47
+ * Get synonyms for a given term
48
+ * @param term The term to find synonyms for
49
+ * @returns Array of synonyms (not including the original term)
50
+ */
51
+ getSynonyms(term: string): string[];
52
+ /**
53
+ * Expand a query with synonyms (utility method)
54
+ * @param query The original query
55
+ * @returns Expanded query with synonyms
56
+ */
57
+ expandQuery(query: string): string;
58
+ }
59
+ export declare const queryParser: QueryParser;
60
+ //# sourceMappingURL=QueryParser.d.ts.map