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
@@ -0,0 +1,366 @@
1
+ /**
2
+ * JSDoc Parser Utilities
3
+ * Extracts JSDoc documentation from TypeScript AST nodes
4
+ *
5
+ * Provides comprehensive extraction of JSDoc comments including:
6
+ * - Description
7
+ * - Parameters (@param)
8
+ * - Return values (@returns, @return)
9
+ * - Thrown exceptions (@throws)
10
+ * - Examples (@example)
11
+ * - Other tags (deprecated, since, see, etc.)
12
+ */
13
+ import * as ts from 'typescript';
14
+ /**
15
+ * Extract JSDoc information from a TypeScript node
16
+ * @param node The AST node to extract JSDoc from
17
+ * @param sourceFile The source file containing the node
18
+ * @returns Extracted JSDoc information
19
+ */
20
+ export function extractJSDoc(node, sourceFile) {
21
+ const jsDocInfo = {
22
+ tags: {}
23
+ };
24
+ // Get JSDoc comments attached to the node
25
+ const jsDocComments = getJSDocComments(node);
26
+ if (jsDocComments.length === 0) {
27
+ return jsDocInfo;
28
+ }
29
+ // Process each JSDoc comment
30
+ for (const jsDoc of jsDocComments) {
31
+ // Extract description
32
+ const description = extractDescription(jsDoc);
33
+ if (description && !jsDocInfo.description) {
34
+ jsDocInfo.description = description;
35
+ }
36
+ // Extract tags
37
+ if (jsDoc.tags) {
38
+ for (const tag of jsDoc.tags) {
39
+ processJSDocTag(tag, jsDocInfo);
40
+ }
41
+ }
42
+ }
43
+ return jsDocInfo;
44
+ }
45
+ /**
46
+ * Get JSDoc comments from a node
47
+ */
48
+ function getJSDocComments(node) {
49
+ const jsDocNodes = [];
50
+ // TypeScript provides JSDoc comments through the node
51
+ const jsDocComments = node.jsDoc;
52
+ if (jsDocComments && Array.isArray(jsDocComments)) {
53
+ jsDocNodes.push(...jsDocComments);
54
+ }
55
+ // Alternative method using ts.getJSDocCommentsAndTags
56
+ const commentsAndTags = ts.getJSDocCommentsAndTags(node);
57
+ for (const item of commentsAndTags) {
58
+ if (ts.isJSDoc(item)) {
59
+ jsDocNodes.push(item);
60
+ }
61
+ }
62
+ return jsDocNodes;
63
+ }
64
+ /**
65
+ * Extract description from JSDoc
66
+ */
67
+ function extractDescription(jsDoc) {
68
+ if (jsDoc.comment) {
69
+ if (typeof jsDoc.comment === 'string') {
70
+ return jsDoc.comment.trim();
71
+ }
72
+ else if (Array.isArray(jsDoc.comment)) {
73
+ // Handle NodeArray<JSDocComment>
74
+ return jsDoc.comment.map(c => typeof c === 'string' ? c : c.getText?.() || '').join('').trim();
75
+ }
76
+ }
77
+ return undefined;
78
+ }
79
+ /**
80
+ * Process a JSDoc tag and add information to the JSDocInfo object
81
+ */
82
+ function processJSDocTag(tag, jsDocInfo) {
83
+ const tagName = tag.tagName.text.toLowerCase();
84
+ switch (tagName) {
85
+ case 'param':
86
+ case 'parameter':
87
+ processParamTag(tag, jsDocInfo);
88
+ break;
89
+ case 'returns':
90
+ case 'return':
91
+ processReturnTag(tag, jsDocInfo);
92
+ break;
93
+ case 'throws':
94
+ case 'throw':
95
+ case 'exception':
96
+ processThrowsTag(tag, jsDocInfo);
97
+ break;
98
+ case 'example':
99
+ processExampleTag(tag, jsDocInfo);
100
+ break;
101
+ default:
102
+ // Store other tags generically
103
+ processGenericTag(tag, jsDocInfo);
104
+ break;
105
+ }
106
+ }
107
+ /**
108
+ * Process @param tag
109
+ */
110
+ function processParamTag(tag, jsDocInfo) {
111
+ if (!jsDocInfo.params) {
112
+ jsDocInfo.params = [];
113
+ }
114
+ const param = {
115
+ name: tag.name.getText(),
116
+ optional: tag.isBracketed || false
117
+ };
118
+ // Extract type if available
119
+ if (tag.typeExpression) {
120
+ param.type = tag.typeExpression.type.getText();
121
+ }
122
+ // Extract description
123
+ if (tag.comment) {
124
+ param.description = extractTagComment(tag.comment);
125
+ }
126
+ // Check for default value in description (common pattern: @param {type} [name=default])
127
+ const nameText = tag.name.getText();
128
+ if (nameText.includes('=')) {
129
+ const [name, defaultValue] = nameText.split('=');
130
+ param.name = name.trim();
131
+ param.defaultValue = defaultValue.trim();
132
+ param.optional = true;
133
+ }
134
+ jsDocInfo.params.push(param);
135
+ }
136
+ /**
137
+ * Process @returns tag
138
+ */
139
+ function processReturnTag(tag, jsDocInfo) {
140
+ if (!jsDocInfo.returns) {
141
+ jsDocInfo.returns = {};
142
+ }
143
+ // Extract type if available
144
+ if (tag.typeExpression) {
145
+ jsDocInfo.returns.type = tag.typeExpression.type.getText();
146
+ }
147
+ // Extract description
148
+ if (tag.comment) {
149
+ jsDocInfo.returns.description = extractTagComment(tag.comment);
150
+ }
151
+ }
152
+ /**
153
+ * Process @throws tag
154
+ */
155
+ function processThrowsTag(tag, jsDocInfo) {
156
+ if (!jsDocInfo.throws) {
157
+ jsDocInfo.throws = [];
158
+ }
159
+ const throwsInfo = {};
160
+ // Extract type if available
161
+ if (tag.typeExpression) {
162
+ throwsInfo.type = tag.typeExpression.type.getText();
163
+ }
164
+ // Extract description
165
+ if (tag.comment) {
166
+ throwsInfo.description = extractTagComment(tag.comment);
167
+ }
168
+ jsDocInfo.throws.push(throwsInfo);
169
+ }
170
+ /**
171
+ * Process @example tag
172
+ */
173
+ function processExampleTag(tag, jsDocInfo) {
174
+ if (!jsDocInfo.examples) {
175
+ jsDocInfo.examples = [];
176
+ }
177
+ if (tag.comment) {
178
+ const example = extractTagComment(tag.comment);
179
+ if (example) {
180
+ jsDocInfo.examples.push(example);
181
+ }
182
+ }
183
+ }
184
+ /**
185
+ * Process generic tags (deprecated, since, see, etc.)
186
+ */
187
+ function processGenericTag(tag, jsDocInfo) {
188
+ const tagName = tag.tagName.text.toLowerCase();
189
+ if (!jsDocInfo.tags[tagName]) {
190
+ jsDocInfo.tags[tagName] = [];
191
+ }
192
+ if (tag.comment) {
193
+ const comment = extractTagComment(tag.comment);
194
+ if (comment) {
195
+ jsDocInfo.tags[tagName].push(comment);
196
+ }
197
+ }
198
+ else {
199
+ // Some tags don't have comments (e.g., @deprecated without description)
200
+ jsDocInfo.tags[tagName].push('');
201
+ }
202
+ }
203
+ /**
204
+ * Extract comment text from JSDoc comment
205
+ */
206
+ function extractTagComment(comment) {
207
+ if (typeof comment === 'string') {
208
+ return comment.trim();
209
+ }
210
+ else if (Array.isArray(comment)) {
211
+ return comment.map(c => typeof c === 'string' ? c : c.getText?.() || '').join('').trim();
212
+ }
213
+ return '';
214
+ }
215
+ /**
216
+ * Extract JSDoc for function-like declarations
217
+ * @param node Function declaration, method declaration, or arrow function
218
+ * @param sourceFile The source file containing the node
219
+ * @returns JSDoc information formatted for EnhancedFunctionMetadata
220
+ */
221
+ export function extractFunctionJSDoc(node, sourceFile) {
222
+ const jsDocInfo = extractJSDoc(node, sourceFile);
223
+ // Convert to EnhancedFunctionMetadata format
224
+ const result = {};
225
+ if (jsDocInfo.description) {
226
+ result.description = jsDocInfo.description;
227
+ }
228
+ if (jsDocInfo.examples && jsDocInfo.examples.length > 0) {
229
+ result.examples = jsDocInfo.examples;
230
+ }
231
+ if (jsDocInfo.tags && Object.keys(jsDocInfo.tags).length > 0) {
232
+ result.tags = jsDocInfo.tags;
233
+ }
234
+ return Object.keys(result).length > 0 ? result : undefined;
235
+ }
236
+ /**
237
+ * Extract parameter information including JSDoc
238
+ * @param node Function-like declaration
239
+ * @param sourceFile The source file containing the node
240
+ * @returns Array of parameter information
241
+ */
242
+ export function extractParameters(node, sourceFile) {
243
+ const jsDocInfo = extractJSDoc(node, sourceFile);
244
+ const parameters = [];
245
+ // Extract parameters from the function signature
246
+ for (const param of node.parameters) {
247
+ const paramName = param.name.getText(sourceFile);
248
+ const paramInfo = {
249
+ name: paramName,
250
+ optional: !!param.questionToken || !!param.initializer
251
+ };
252
+ // Get type from TypeScript
253
+ if (param.type) {
254
+ paramInfo.type = param.type.getText(sourceFile);
255
+ }
256
+ // Get default value
257
+ if (param.initializer) {
258
+ paramInfo.defaultValue = param.initializer.getText(sourceFile);
259
+ }
260
+ // Find matching JSDoc param
261
+ const jsDocParam = jsDocInfo.params?.find(p => p.name === paramName);
262
+ if (jsDocParam) {
263
+ if (jsDocParam.description) {
264
+ paramInfo.description = jsDocParam.description;
265
+ }
266
+ // JSDoc type takes precedence if TypeScript type is not available
267
+ if (!paramInfo.type && jsDocParam.type) {
268
+ paramInfo.type = jsDocParam.type;
269
+ }
270
+ if (jsDocParam.defaultValue) {
271
+ paramInfo.defaultValue = jsDocParam.defaultValue;
272
+ }
273
+ }
274
+ parameters.push(paramInfo);
275
+ }
276
+ // Add any JSDoc params that aren't in the signature (e.g., for JavaScript files)
277
+ if (jsDocInfo.params) {
278
+ for (const jsDocParam of jsDocInfo.params) {
279
+ if (!parameters.find(p => p.name === jsDocParam.name)) {
280
+ parameters.push({
281
+ name: jsDocParam.name,
282
+ type: jsDocParam.type,
283
+ description: jsDocParam.description,
284
+ optional: jsDocParam.optional,
285
+ defaultValue: jsDocParam.defaultValue
286
+ });
287
+ }
288
+ }
289
+ }
290
+ return parameters;
291
+ }
292
+ /**
293
+ * Extract return type information including JSDoc
294
+ * @param node Function-like declaration
295
+ * @param sourceFile The source file containing the node
296
+ * @returns Return type string or undefined
297
+ */
298
+ export function extractReturnType(node, sourceFile) {
299
+ // First try to get the TypeScript return type
300
+ if (node.type) {
301
+ return node.type.getText(sourceFile);
302
+ }
303
+ // Fall back to JSDoc return type
304
+ const jsDocInfo = extractJSDoc(node, sourceFile);
305
+ if (jsDocInfo.returns?.type) {
306
+ return jsDocInfo.returns.type;
307
+ }
308
+ return undefined;
309
+ }
310
+ /**
311
+ * Check if a function has JSDoc documentation
312
+ * @param node Function-like declaration
313
+ * @returns True if the function has JSDoc
314
+ */
315
+ export function hasJSDoc(node) {
316
+ const jsDocComments = getJSDocComments(node);
317
+ return jsDocComments.length > 0;
318
+ }
319
+ /**
320
+ * Extract all JSDoc tags from a node
321
+ * @param node The AST node
322
+ * @returns Map of tag names to their values
323
+ */
324
+ export function extractAllJSDocTags(node) {
325
+ const jsDocInfo = extractJSDoc(node, node.getSourceFile());
326
+ const allTags = { ...jsDocInfo.tags };
327
+ // Add structured tags to the result
328
+ if (jsDocInfo.params && jsDocInfo.params.length > 0) {
329
+ allTags.param = jsDocInfo.params.map(p => `${p.name}${p.type ? ` {${p.type}}` : ''}${p.description ? ` - ${p.description}` : ''}`);
330
+ }
331
+ if (jsDocInfo.returns) {
332
+ allTags.returns = [
333
+ `${jsDocInfo.returns.type || ''}${jsDocInfo.returns.description ? ` - ${jsDocInfo.returns.description}` : ''}`.trim()
334
+ ];
335
+ }
336
+ if (jsDocInfo.throws && jsDocInfo.throws.length > 0) {
337
+ allTags.throws = jsDocInfo.throws.map(t => `${t.type || ''}${t.description ? ` - ${t.description}` : ''}`.trim());
338
+ }
339
+ if (jsDocInfo.examples && jsDocInfo.examples.length > 0) {
340
+ allTags.example = jsDocInfo.examples;
341
+ }
342
+ return allTags;
343
+ }
344
+ /**
345
+ * Create a searchable text representation of JSDoc
346
+ * @param jsDoc JSDoc information
347
+ * @returns Searchable text string
348
+ */
349
+ export function createSearchableJSDocText(jsDoc) {
350
+ if (!jsDoc)
351
+ return '';
352
+ const parts = [];
353
+ if (jsDoc.description) {
354
+ parts.push(jsDoc.description);
355
+ }
356
+ if (jsDoc.examples) {
357
+ parts.push(...jsDoc.examples);
358
+ }
359
+ if (jsDoc.tags) {
360
+ for (const [tagName, values] of Object.entries(jsDoc.tags)) {
361
+ parts.push(`@${tagName}`, ...values);
362
+ }
363
+ }
364
+ return parts.join(' ').toLowerCase();
365
+ }
366
+ //# sourceMappingURL=jsDocParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsDocParser.js","sourceRoot":"","sources":["../../src/utils/jsDocParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-auditor-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript/JavaScript code quality auditor with MCP server - Analyze code for SOLID principles, DRY violations, security patterns, and more",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,14 +9,6 @@
9
9
  "code-audit": "./dist/cli.js",
10
10
  "code-auditor-mcp": "./dist/mcp-standalone.js"
11
11
  },
12
- "scripts": {
13
- "build": "tsc",
14
- "watch": "tsc --watch",
15
- "dev": "tsx src/cli.ts",
16
- "audit": "node dist/cli.js",
17
- "prepublishOnly": "npm run build",
18
- "test": "echo \"No tests yet\" && exit 0"
19
- },
20
12
  "keywords": [
21
13
  "audit",
22
14
  "code-quality",
@@ -37,12 +29,28 @@
37
29
  },
38
30
  "dependencies": {
39
31
  "@modelcontextprotocol/sdk": "^1.17.1",
32
+ "ajv": "^8.12.0",
40
33
  "chalk": "^5.3.0",
34
+ "chokidar": "^3.5.3",
35
+ "commander": "^12.0.0",
36
+ "cors": "^2.8.5",
37
+ "express": "^4.18.2",
38
+ "express-rate-limit": "^7.1.5",
39
+ "flexsearch": "^0.8.212",
40
+ "inquirer": "^9.2.15",
41
+ "lokijs": "^1.5.12",
42
+ "pino": "^8.16.2",
43
+ "pino-pretty": "^10.2.3",
41
44
  "typescript": "^5.0.0"
42
45
  },
43
46
  "devDependencies": {
47
+ "@types/cors": "^2.8.17",
48
+ "@types/express": "^4.17.21",
49
+ "@types/inquirer": "^9.0.7",
50
+ "@types/lokijs": "^1.5.14",
44
51
  "@types/node": "^20.0.0",
45
- "tsx": "^4.0.0"
52
+ "tsx": "^4.0.0",
53
+ "vitest": "^1.0.0"
46
54
  },
47
55
  "files": [
48
56
  "dist/**/*",
@@ -58,5 +66,17 @@
58
66
  "bugs": {
59
67
  "url": "https://github.com/code-auditor/code-auditor/issues"
60
68
  },
61
- "homepage": "https://github.com/code-auditor/code-auditor#readme"
69
+ "homepage": "https://github.com/code-auditor/code-auditor#readme",
70
+ "scripts": {
71
+ "build": "tsc",
72
+ "watch": "tsc --watch",
73
+ "dev": "tsx src/cli.ts",
74
+ "dev:server": "tsx --watch src/cli.ts start --rest-api",
75
+ "audit": "node dist/cli.js",
76
+ "start": "node dist/mcp-standalone.js",
77
+ "start:rest": "node dist/cli.js start --rest-api",
78
+ "generate": "node dist/cli.js generate-config",
79
+ "test": "vitest",
80
+ "test:watch": "vitest watch"
81
+ }
62
82
  }