coding-agent-benchmarks 0.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.
- package/LICENSE +21 -0
- package/README.md +474 -0
- package/dist/adapters/claudeCodeCLI.d.ts +19 -0
- package/dist/adapters/claudeCodeCLI.d.ts.map +1 -0
- package/dist/adapters/claudeCodeCLI.js +106 -0
- package/dist/adapters/claudeCodeCLI.js.map +1 -0
- package/dist/adapters/copilotCLI.d.ts +19 -0
- package/dist/adapters/copilotCLI.d.ts.map +1 -0
- package/dist/adapters/copilotCLI.js +104 -0
- package/dist/adapters/copilotCLI.js.map +1 -0
- package/dist/config/defaultScenarios.d.ts +6 -0
- package/dist/config/defaultScenarios.d.ts.map +1 -0
- package/dist/config/defaultScenarios.js +209 -0
- package/dist/config/defaultScenarios.js.map +1 -0
- package/dist/config/loader.d.ts +13 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +153 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/evaluator.d.ts +45 -0
- package/dist/evaluator.d.ts.map +1 -0
- package/dist/evaluator.js +226 -0
- package/dist/evaluator.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/runner.d.ts +6 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +233 -0
- package/dist/runner.js.map +1 -0
- package/dist/types.d.ts +354 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/baselineManager.d.ts +53 -0
- package/dist/utils/baselineManager.d.ts.map +1 -0
- package/dist/utils/baselineManager.js +220 -0
- package/dist/utils/baselineManager.js.map +1 -0
- package/dist/utils/gitUtils.d.ts +39 -0
- package/dist/utils/gitUtils.d.ts.map +1 -0
- package/dist/utils/gitUtils.js +121 -0
- package/dist/utils/gitUtils.js.map +1 -0
- package/dist/utils/githubAuth.d.ts +22 -0
- package/dist/utils/githubAuth.d.ts.map +1 -0
- package/dist/utils/githubAuth.js +79 -0
- package/dist/utils/githubAuth.js.map +1 -0
- package/dist/utils/workspaceUtils.d.ts +32 -0
- package/dist/utils/workspaceUtils.d.ts.map +1 -0
- package/dist/utils/workspaceUtils.js +121 -0
- package/dist/utils/workspaceUtils.js.map +1 -0
- package/dist/validators/eslintValidator.d.ts +22 -0
- package/dist/validators/eslintValidator.d.ts.map +1 -0
- package/dist/validators/eslintValidator.js +217 -0
- package/dist/validators/eslintValidator.js.map +1 -0
- package/dist/validators/llmJudge.d.ts +28 -0
- package/dist/validators/llmJudge.d.ts.map +1 -0
- package/dist/validators/llmJudge.js +241 -0
- package/dist/validators/llmJudge.js.map +1 -0
- package/dist/validators/patternValidator.d.ts +27 -0
- package/dist/validators/patternValidator.d.ts.map +1 -0
- package/dist/validators/patternValidator.js +233 -0
- package/dist/validators/patternValidator.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pattern-based code validator
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.PatternValidator = void 0;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const workspaceUtils_1 = require("../utils/workspaceUtils");
|
|
43
|
+
class PatternValidator {
|
|
44
|
+
constructor(workspaceRoot) {
|
|
45
|
+
this.type = 'pattern';
|
|
46
|
+
this.workspaceRoot = (0, workspaceUtils_1.resolveWorkspaceRoot)(workspaceRoot);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate generated code against pattern rules
|
|
50
|
+
*/
|
|
51
|
+
async validate(files, scenario) {
|
|
52
|
+
const patterns = scenario.validationStrategy.patterns;
|
|
53
|
+
// If no pattern validation configured, skip
|
|
54
|
+
if (!patterns) {
|
|
55
|
+
return {
|
|
56
|
+
passed: true,
|
|
57
|
+
score: -1,
|
|
58
|
+
violations: [],
|
|
59
|
+
validatorType: 'pattern',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const violations = [];
|
|
63
|
+
const absolutePaths = (0, workspaceUtils_1.resolveFilePaths)(this.workspaceRoot, files);
|
|
64
|
+
// Validate each file
|
|
65
|
+
for (const filePath of absolutePaths) {
|
|
66
|
+
if (!fs.existsSync(filePath)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
71
|
+
const relativePath = path.relative(this.workspaceRoot, filePath);
|
|
72
|
+
const fileName = path.basename(filePath);
|
|
73
|
+
// Check forbidden patterns
|
|
74
|
+
if (patterns.forbiddenPatterns) {
|
|
75
|
+
for (const pattern of patterns.forbiddenPatterns) {
|
|
76
|
+
const matches = this.findPatternMatches(content, pattern);
|
|
77
|
+
for (const match of matches) {
|
|
78
|
+
violations.push({
|
|
79
|
+
type: 'pattern',
|
|
80
|
+
message: `Forbidden pattern found: ${pattern.source}`,
|
|
81
|
+
file: relativePath,
|
|
82
|
+
line: match.line,
|
|
83
|
+
severity: scenario.severity,
|
|
84
|
+
details: `Matched: "${match.text}"`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Check required patterns
|
|
90
|
+
if (patterns.requiredPatterns) {
|
|
91
|
+
for (const pattern of patterns.requiredPatterns) {
|
|
92
|
+
if (!pattern.test(content)) {
|
|
93
|
+
violations.push({
|
|
94
|
+
type: 'pattern',
|
|
95
|
+
message: `Required pattern not found: ${pattern.source}`,
|
|
96
|
+
file: relativePath,
|
|
97
|
+
severity: scenario.severity,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Check forbidden imports
|
|
103
|
+
if (patterns.forbiddenImports) {
|
|
104
|
+
for (const importPattern of patterns.forbiddenImports) {
|
|
105
|
+
if (content.includes(importPattern)) {
|
|
106
|
+
const lineInfo = this.findLineWithText(content, importPattern);
|
|
107
|
+
violations.push({
|
|
108
|
+
type: 'pattern',
|
|
109
|
+
message: `Forbidden import found: ${importPattern}`,
|
|
110
|
+
file: relativePath,
|
|
111
|
+
line: lineInfo?.line,
|
|
112
|
+
severity: scenario.severity,
|
|
113
|
+
details: lineInfo ? `Line: "${lineInfo.text}"` : undefined,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Check required imports
|
|
119
|
+
if (patterns.requiredImports) {
|
|
120
|
+
for (const importPattern of patterns.requiredImports) {
|
|
121
|
+
if (!content.includes(importPattern)) {
|
|
122
|
+
violations.push({
|
|
123
|
+
type: 'pattern',
|
|
124
|
+
message: `Required import not found: ${importPattern}`,
|
|
125
|
+
file: relativePath,
|
|
126
|
+
severity: scenario.severity,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Check forbidden file name patterns
|
|
132
|
+
if (patterns.forbiddenFileNamePatterns) {
|
|
133
|
+
for (const pattern of patterns.forbiddenFileNamePatterns) {
|
|
134
|
+
if (pattern.test(fileName)) {
|
|
135
|
+
violations.push({
|
|
136
|
+
type: 'pattern',
|
|
137
|
+
message: `Forbidden file name pattern: ${pattern.source}`,
|
|
138
|
+
file: relativePath,
|
|
139
|
+
severity: scenario.severity,
|
|
140
|
+
details: `File name: "${fileName}"`,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Check required file name patterns
|
|
146
|
+
if (patterns.requiredFileNamePatterns) {
|
|
147
|
+
const hasRequiredFile = absolutePaths.some(p => patterns.requiredFileNamePatterns.some(pattern => pattern.test(path.basename(p))));
|
|
148
|
+
if (!hasRequiredFile) {
|
|
149
|
+
violations.push({
|
|
150
|
+
type: 'pattern',
|
|
151
|
+
message: `Required file name pattern not found: ${patterns.requiredFileNamePatterns.map(p => p.source).join(', ')}`,
|
|
152
|
+
severity: scenario.severity,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
return {
|
|
159
|
+
passed: false,
|
|
160
|
+
score: 0,
|
|
161
|
+
violations: [],
|
|
162
|
+
validatorType: 'pattern',
|
|
163
|
+
error: `Failed to read file ${filePath}: ${error}`,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Calculate score based on violations
|
|
168
|
+
const passed = violations.length === 0;
|
|
169
|
+
const score = this.calculateScore(violations);
|
|
170
|
+
return {
|
|
171
|
+
passed,
|
|
172
|
+
score,
|
|
173
|
+
violations,
|
|
174
|
+
validatorType: 'pattern',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Find all matches of a pattern in text with line numbers
|
|
179
|
+
*/
|
|
180
|
+
findPatternMatches(text, pattern) {
|
|
181
|
+
const lines = text.split('\n');
|
|
182
|
+
const matches = [];
|
|
183
|
+
for (let i = 0; i < lines.length; i++) {
|
|
184
|
+
const line = lines[i];
|
|
185
|
+
if (pattern.test(line)) {
|
|
186
|
+
matches.push({
|
|
187
|
+
line: i + 1,
|
|
188
|
+
text: line.trim(),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return matches;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Find the line number containing specific text
|
|
196
|
+
*/
|
|
197
|
+
findLineWithText(text, searchText) {
|
|
198
|
+
const lines = text.split('\n');
|
|
199
|
+
for (let i = 0; i < lines.length; i++) {
|
|
200
|
+
if (lines[i].includes(searchText)) {
|
|
201
|
+
return {
|
|
202
|
+
line: i + 1,
|
|
203
|
+
text: lines[i].trim(),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Calculate score based on number and severity of violations
|
|
211
|
+
* Critical violations have more weight than minor ones
|
|
212
|
+
*/
|
|
213
|
+
calculateScore(violations) {
|
|
214
|
+
if (violations.length === 0) {
|
|
215
|
+
return 1.0;
|
|
216
|
+
}
|
|
217
|
+
// Weight violations by severity
|
|
218
|
+
const weights = {
|
|
219
|
+
critical: 1.0,
|
|
220
|
+
major: 0.7,
|
|
221
|
+
minor: 0.3,
|
|
222
|
+
};
|
|
223
|
+
const totalWeight = violations.reduce((sum, v) => {
|
|
224
|
+
return sum + weights[v.severity];
|
|
225
|
+
}, 0);
|
|
226
|
+
// Score decreases with more weighted violations
|
|
227
|
+
// Using exponential decay: score = e^(-totalWeight)
|
|
228
|
+
const score = Math.exp(-totalWeight);
|
|
229
|
+
return Math.max(0, Math.min(1, score));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.PatternValidator = PatternValidator;
|
|
233
|
+
//# sourceMappingURL=patternValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternValidator.js","sourceRoot":"","sources":["../../src/validators/patternValidator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "coding-agent-benchmarks",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Open-source framework for evaluating coding agents (GitHub Copilot CLI, Claude Code, etc.) against coding standards and best practices",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"coding-agent-benchmarks": "dist/runner.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsx src/runner.ts",
|
|
13
|
+
"prepublishOnly": "npm run build",
|
|
14
|
+
"test": "echo \"Tests not implemented yet\" && exit 0"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"coding-agent",
|
|
18
|
+
"benchmark",
|
|
19
|
+
"evaluation",
|
|
20
|
+
"copilot",
|
|
21
|
+
"claude-code",
|
|
22
|
+
"ai",
|
|
23
|
+
"testing",
|
|
24
|
+
"code-quality"
|
|
25
|
+
],
|
|
26
|
+
"author": "chiltepin",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/chiltepin/coding-agent-benchmarks"
|
|
31
|
+
},
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE"
|
|
39
|
+
],
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"commander": "^13.1.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^25.0.9",
|
|
45
|
+
"eslint": "^9.39.2",
|
|
46
|
+
"prettier": "^3.8.0",
|
|
47
|
+
"tsx": "^4.21.0",
|
|
48
|
+
"typescript": "^5.9.3"
|
|
49
|
+
}
|
|
50
|
+
}
|