@corbat-tech/coding-standards-mcp 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -26
- package/dist/analysis/code-analyzer.d.ts +44 -0
- package/dist/analysis/code-analyzer.d.ts.map +1 -0
- package/dist/analysis/code-analyzer.js +528 -0
- package/dist/analysis/code-analyzer.js.map +1 -0
- package/dist/tools/definitions.d.ts +40 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +68 -10
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers/get-context.d.ts.map +1 -1
- package/dist/tools/handlers/get-context.js +115 -0
- package/dist/tools/handlers/get-context.js.map +1 -1
- package/dist/tools/handlers/index.d.ts +1 -0
- package/dist/tools/handlers/index.d.ts.map +1 -1
- package/dist/tools/handlers/index.js +1 -0
- package/dist/tools/handlers/index.js.map +1 -1
- package/dist/tools/handlers/validate.d.ts +4 -1
- package/dist/tools/handlers/validate.d.ts.map +1 -1
- package/dist/tools/handlers/validate.js +37 -42
- package/dist/tools/handlers/validate.js.map +1 -1
- package/dist/tools/handlers/verify.d.ts +38 -0
- package/dist/tools/handlers/verify.d.ts.map +1 -0
- package/dist/tools/handlers/verify.js +172 -0
- package/dist/tools/handlers/verify.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -2
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { analyzeCode } from '../../analysis/code-analyzer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Schema for verify tool input.
|
|
5
|
+
*/
|
|
6
|
+
export const VerifySchema = z.object({
|
|
7
|
+
code: z.string().describe('All generated implementation code'),
|
|
8
|
+
tests: z.string().optional().describe('All test code'),
|
|
9
|
+
interfaces: z.string().optional().describe('All interfaces/types'),
|
|
10
|
+
task_type: z.enum(['feature', 'bugfix', 'refactor', 'test', 'security', 'performance']).optional(),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Handler for the verify tool.
|
|
14
|
+
*
|
|
15
|
+
* This is the "gate" that LLMs must pass before presenting code to the user.
|
|
16
|
+
* It analyzes all generated code and returns PASS/FAIL with specific feedback.
|
|
17
|
+
*
|
|
18
|
+
* Key principles:
|
|
19
|
+
* - Tests are REQUIRED (TDD compliance)
|
|
20
|
+
* - Interfaces are strongly recommended (DI)
|
|
21
|
+
* - Critical issues block passing
|
|
22
|
+
* - Clear feedback on what to fix
|
|
23
|
+
*/
|
|
24
|
+
export async function handleVerify(args) {
|
|
25
|
+
const { code, tests, interfaces } = VerifySchema.parse(args);
|
|
26
|
+
// Combine all code for comprehensive analysis
|
|
27
|
+
const allCodeParts = [];
|
|
28
|
+
if (interfaces) {
|
|
29
|
+
allCodeParts.push('// === INTERFACES ===', interfaces);
|
|
30
|
+
}
|
|
31
|
+
if (tests) {
|
|
32
|
+
allCodeParts.push('// === TESTS ===', tests);
|
|
33
|
+
}
|
|
34
|
+
allCodeParts.push('// === IMPLEMENTATION ===', code);
|
|
35
|
+
const allCode = allCodeParts.join('\n\n');
|
|
36
|
+
// Run analysis
|
|
37
|
+
const analysis = analyzeCode(allCode);
|
|
38
|
+
// Additional verification checks beyond the analyzer
|
|
39
|
+
const verificationResults = runVerificationChecks(code, tests, interfaces, analysis);
|
|
40
|
+
// Build response
|
|
41
|
+
const lines = [];
|
|
42
|
+
if (verificationResults.passed) {
|
|
43
|
+
lines.push('# VERIFICATION PASSED', '');
|
|
44
|
+
lines.push(`**Score: ${analysis.score}/100**`, '');
|
|
45
|
+
lines.push('');
|
|
46
|
+
lines.push('The code meets quality standards and is ready to present to the user.', '');
|
|
47
|
+
// Show any optional improvements
|
|
48
|
+
if (verificationResults.warnings.length > 0) {
|
|
49
|
+
lines.push('---', '', '## Optional Improvements', '');
|
|
50
|
+
for (const warning of verificationResults.warnings.slice(0, 5)) {
|
|
51
|
+
lines.push(`- ${warning}`);
|
|
52
|
+
}
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
// Summary of what was verified
|
|
56
|
+
lines.push('---', '', '## Verification Summary', '');
|
|
57
|
+
lines.push(`- Tests provided: ${tests ? 'Yes' : 'No'}`);
|
|
58
|
+
lines.push(`- Interfaces provided: ${interfaces ? 'Yes' : 'No'}`);
|
|
59
|
+
lines.push(`- Critical issues: ${analysis.issues.filter((i) => i.type === 'CRITICAL').length}`);
|
|
60
|
+
lines.push(`- Warnings: ${analysis.issues.filter((i) => i.type === 'WARNING').length}`);
|
|
61
|
+
lines.push(`- Test count: ${analysis.metrics.testCount}`);
|
|
62
|
+
lines.push(`- Interface count: ${analysis.metrics.interfaceCount}`);
|
|
63
|
+
lines.push('');
|
|
64
|
+
lines.push('---', '');
|
|
65
|
+
lines.push('**You may now present this code to the user.**');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
lines.push('# VERIFICATION FAILED', '');
|
|
69
|
+
lines.push(`**Score: ${analysis.score}/100**`, '');
|
|
70
|
+
lines.push('');
|
|
71
|
+
lines.push('The code does not meet quality standards. Fix the issues below and verify again.', '');
|
|
72
|
+
// Show failures (blocking issues)
|
|
73
|
+
lines.push('---', '', '## Issues to Fix (Blocking)', '');
|
|
74
|
+
for (const failure of verificationResults.failures) {
|
|
75
|
+
lines.push(`- ${failure}`);
|
|
76
|
+
}
|
|
77
|
+
lines.push('');
|
|
78
|
+
// Show warnings
|
|
79
|
+
if (verificationResults.warnings.length > 0) {
|
|
80
|
+
lines.push('---', '', '## Warnings (Should Fix)', '');
|
|
81
|
+
for (const warning of verificationResults.warnings.slice(0, 8)) {
|
|
82
|
+
lines.push(`- ${warning}`);
|
|
83
|
+
}
|
|
84
|
+
lines.push('');
|
|
85
|
+
}
|
|
86
|
+
// Analysis issues
|
|
87
|
+
const criticals = analysis.issues.filter((i) => i.type === 'CRITICAL');
|
|
88
|
+
if (criticals.length > 0) {
|
|
89
|
+
lines.push('---', '', '## Critical Code Issues', '');
|
|
90
|
+
for (const issue of criticals) {
|
|
91
|
+
lines.push(`- **Line ${issue.line || '?'}:** ${issue.message}`);
|
|
92
|
+
if (issue.suggestion) {
|
|
93
|
+
lines.push(` - Fix: ${issue.suggestion}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
lines.push('');
|
|
97
|
+
}
|
|
98
|
+
lines.push('---', '');
|
|
99
|
+
lines.push('**Fix these issues and call `verify` again before presenting code to user.**');
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
103
|
+
isError: !verificationResults.passed,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run additional verification checks beyond the code analyzer.
|
|
108
|
+
*/
|
|
109
|
+
function runVerificationChecks(code, tests, interfaces, analysis) {
|
|
110
|
+
const failures = [];
|
|
111
|
+
const warnings = [];
|
|
112
|
+
// Check 1: Tests MUST be provided (TDD requirement)
|
|
113
|
+
if (!tests || tests.trim().length === 0) {
|
|
114
|
+
failures.push('No tests provided - TDD requires tests before/with implementation');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Check test count
|
|
118
|
+
const testCount = analysis.metrics.testCount;
|
|
119
|
+
if (testCount === 0) {
|
|
120
|
+
failures.push('Test code provided but no test cases detected (missing @Test, it(), test(), etc.)');
|
|
121
|
+
}
|
|
122
|
+
else if (testCount < 2) {
|
|
123
|
+
warnings.push(`Only ${testCount} test(s) found - consider adding more for better coverage`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Check 2: Interfaces strongly recommended for DI
|
|
127
|
+
const hasClasses = /class\s+\w+/.test(code);
|
|
128
|
+
if (hasClasses) {
|
|
129
|
+
if (!interfaces || interfaces.trim().length === 0) {
|
|
130
|
+
// Check if interfaces are in the main code instead
|
|
131
|
+
const hasInlineInterfaces = /interface\s+\w+/.test(code);
|
|
132
|
+
if (!hasInlineInterfaces) {
|
|
133
|
+
warnings.push('No interfaces provided - consider adding for dependency injection');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Check 3: No critical issues from analysis
|
|
138
|
+
const criticalCount = analysis.issues.filter((i) => i.type === 'CRITICAL').length;
|
|
139
|
+
if (criticalCount > 0) {
|
|
140
|
+
failures.push(`${criticalCount} critical code issue(s) detected - see details below`);
|
|
141
|
+
}
|
|
142
|
+
// Check 4: Score threshold
|
|
143
|
+
if (analysis.score < 50) {
|
|
144
|
+
failures.push(`Quality score too low (${analysis.score}/100) - must be at least 50`);
|
|
145
|
+
}
|
|
146
|
+
else if (analysis.score < 70) {
|
|
147
|
+
warnings.push(`Quality score is ${analysis.score}/100 - consider improvements to reach 70+`);
|
|
148
|
+
}
|
|
149
|
+
// Check 5: Too many warnings
|
|
150
|
+
const warningCount = analysis.issues.filter((i) => i.type === 'WARNING').length;
|
|
151
|
+
if (warningCount > 10) {
|
|
152
|
+
warnings.push(`High number of warnings (${warningCount}) - consider addressing some`);
|
|
153
|
+
}
|
|
154
|
+
// Check 6: Method/class size
|
|
155
|
+
if (analysis.metrics.maxMethodLines > 30) {
|
|
156
|
+
warnings.push(`Longest method is ${analysis.metrics.maxMethodLines} lines - consider refactoring`);
|
|
157
|
+
}
|
|
158
|
+
if (analysis.metrics.maxClassLines > 300) {
|
|
159
|
+
warnings.push(`Longest class is ${analysis.metrics.maxClassLines} lines - consider splitting`);
|
|
160
|
+
}
|
|
161
|
+
// Check 7: Look for common issues in the code
|
|
162
|
+
if (/throw\s+new\s+Error\s*\(/.test(code) && !/class\s+\w*Error/.test(code)) {
|
|
163
|
+
warnings.push('Generic Error thrown without custom error classes defined');
|
|
164
|
+
}
|
|
165
|
+
if (/any\s*[;,)>]/.test(code)) {
|
|
166
|
+
warnings.push('TypeScript "any" type usage detected - consider specific types');
|
|
167
|
+
}
|
|
168
|
+
// Determine if passed
|
|
169
|
+
const passed = failures.length === 0;
|
|
170
|
+
return { passed, failures, warnings };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/tools/handlers/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,cAAc,cAAc,CAAC;AAE7B;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6DhF"}
|
package/dist/tools/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { logger } from '../logger.js';
|
|
10
10
|
import { recordError, recordToolCall } from '../metrics.js';
|
|
11
|
-
import { handleGetContext, handleHealth, handleInit, handleProfiles, handleSearch, handleValidate, } from './handlers/index.js';
|
|
11
|
+
import { handleGetContext, handleHealth, handleInit, handleProfiles, handleSearch, handleValidate, handleVerify, } from './handlers/index.js';
|
|
12
12
|
// Re-export definitions and schemas
|
|
13
13
|
export { tools } from './definitions.js';
|
|
14
14
|
export * from './schemas.js';
|
|
@@ -29,6 +29,9 @@ export async function handleToolCall(name, args) {
|
|
|
29
29
|
case 'validate':
|
|
30
30
|
result = await handleValidate(args);
|
|
31
31
|
break;
|
|
32
|
+
case 'verify':
|
|
33
|
+
result = await handleVerify(args);
|
|
34
|
+
break;
|
|
32
35
|
case 'search':
|
|
33
36
|
result = await handleSearch(args);
|
|
34
37
|
break;
|
|
@@ -47,7 +50,7 @@ export async function handleToolCall(name, args) {
|
|
|
47
50
|
content: [
|
|
48
51
|
{
|
|
49
52
|
type: 'text',
|
|
50
|
-
text: `Unknown tool: ${name}. Available: get_context, validate, search, profiles, health, init`,
|
|
53
|
+
text: `Unknown tool: ${name}. Available: get_context, validate, verify, search, profiles, health, init`,
|
|
51
54
|
},
|
|
52
55
|
],
|
|
53
56
|
isError: true,
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B,oCAAoC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,cAAc,cAAc,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAgB,CAAC;IAElC,iBAAiB;IACjB,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,IAAI,MAA6E,CAAC;QAElF,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,aAAa;gBAChB,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM;YACR;gBACE,WAAW,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iBAAiB,IAAI,4EAA4E;yBACxG;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@corbat-tech/coding-standards-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "AI coding standards that apply themselves - MCP server that enforces production-grade code",
|
|
5
5
|
"mcpName": "io.github.corbat-tech/coding-standards",
|
|
6
6
|
"type": "module",
|