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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +474 -0
  3. package/dist/adapters/claudeCodeCLI.d.ts +19 -0
  4. package/dist/adapters/claudeCodeCLI.d.ts.map +1 -0
  5. package/dist/adapters/claudeCodeCLI.js +106 -0
  6. package/dist/adapters/claudeCodeCLI.js.map +1 -0
  7. package/dist/adapters/copilotCLI.d.ts +19 -0
  8. package/dist/adapters/copilotCLI.d.ts.map +1 -0
  9. package/dist/adapters/copilotCLI.js +104 -0
  10. package/dist/adapters/copilotCLI.js.map +1 -0
  11. package/dist/config/defaultScenarios.d.ts +6 -0
  12. package/dist/config/defaultScenarios.d.ts.map +1 -0
  13. package/dist/config/defaultScenarios.js +209 -0
  14. package/dist/config/defaultScenarios.js.map +1 -0
  15. package/dist/config/loader.d.ts +13 -0
  16. package/dist/config/loader.d.ts.map +1 -0
  17. package/dist/config/loader.js +153 -0
  18. package/dist/config/loader.js.map +1 -0
  19. package/dist/evaluator.d.ts +45 -0
  20. package/dist/evaluator.d.ts.map +1 -0
  21. package/dist/evaluator.js +226 -0
  22. package/dist/evaluator.js.map +1 -0
  23. package/dist/index.d.ts +13 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +38 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/runner.d.ts +6 -0
  28. package/dist/runner.d.ts.map +1 -0
  29. package/dist/runner.js +233 -0
  30. package/dist/runner.js.map +1 -0
  31. package/dist/types.d.ts +354 -0
  32. package/dist/types.d.ts.map +1 -0
  33. package/dist/types.js +6 -0
  34. package/dist/types.js.map +1 -0
  35. package/dist/utils/baselineManager.d.ts +53 -0
  36. package/dist/utils/baselineManager.d.ts.map +1 -0
  37. package/dist/utils/baselineManager.js +220 -0
  38. package/dist/utils/baselineManager.js.map +1 -0
  39. package/dist/utils/gitUtils.d.ts +39 -0
  40. package/dist/utils/gitUtils.d.ts.map +1 -0
  41. package/dist/utils/gitUtils.js +121 -0
  42. package/dist/utils/gitUtils.js.map +1 -0
  43. package/dist/utils/githubAuth.d.ts +22 -0
  44. package/dist/utils/githubAuth.d.ts.map +1 -0
  45. package/dist/utils/githubAuth.js +79 -0
  46. package/dist/utils/githubAuth.js.map +1 -0
  47. package/dist/utils/workspaceUtils.d.ts +32 -0
  48. package/dist/utils/workspaceUtils.d.ts.map +1 -0
  49. package/dist/utils/workspaceUtils.js +121 -0
  50. package/dist/utils/workspaceUtils.js.map +1 -0
  51. package/dist/validators/eslintValidator.d.ts +22 -0
  52. package/dist/validators/eslintValidator.d.ts.map +1 -0
  53. package/dist/validators/eslintValidator.js +217 -0
  54. package/dist/validators/eslintValidator.js.map +1 -0
  55. package/dist/validators/llmJudge.d.ts +28 -0
  56. package/dist/validators/llmJudge.d.ts.map +1 -0
  57. package/dist/validators/llmJudge.js +241 -0
  58. package/dist/validators/llmJudge.js.map +1 -0
  59. package/dist/validators/patternValidator.d.ts +27 -0
  60. package/dist/validators/patternValidator.d.ts.map +1 -0
  61. package/dist/validators/patternValidator.js +233 -0
  62. package/dist/validators/patternValidator.js.map +1 -0
  63. 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":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAE7B,4DAAiF;AAEjF,MAAa,gBAAgB;IAI3B,YAAY,aAAsB;QAHlB,SAAI,GAAG,SAAkB,CAAC;QAIxC,IAAI,CAAC,aAAa,GAAG,IAAA,qCAAoB,EAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,KAAwB,EACxB,QAAsB;QAEtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QAEtD,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC;gBACT,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,SAAS;aACzB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAElE,qBAAqB;QACrB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEzC,2BAA2B;gBAC3B,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;wBACjD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,4BAA4B,OAAO,CAAC,MAAM,EAAE;gCACrD,IAAI,EAAE,YAAY;gCAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gCAC3B,OAAO,EAAE,aAAa,KAAK,CAAC,IAAI,GAAG;6BACpC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;wBAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC3B,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,+BAA+B,OAAO,CAAC,MAAM,EAAE;gCACxD,IAAI,EAAE,YAAY;gCAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;6BAC5B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,KAAK,MAAM,aAAa,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;wBACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;4BAC/D,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,2BAA2B,aAAa,EAAE;gCACnD,IAAI,EAAE,YAAY;gCAClB,IAAI,EAAE,QAAQ,EAAE,IAAI;gCACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gCAC3B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS;6BAC3D,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,yBAAyB;gBACzB,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;oBAC7B,KAAK,MAAM,aAAa,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;wBACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BACrC,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,8BAA8B,aAAa,EAAE;gCACtD,IAAI,EAAE,YAAY;gCAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;6BAC5B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,qCAAqC;gBACrC,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC;oBACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC;wBACzD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC3B,UAAU,CAAC,IAAI,CAAC;gCACd,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,gCAAgC,OAAO,CAAC,MAAM,EAAE;gCACzD,IAAI,EAAE,YAAY;gCAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gCAC3B,OAAO,EAAE,eAAe,QAAQ,GAAG;6BACpC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,oCAAoC;gBACpC,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;oBACtC,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC7C,QAAQ,CAAC,wBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC/B,CACF,CAAC;oBACF,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,yCAAyC,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACnH,QAAQ,EAAE,QAAQ,CAAC,QAAQ;yBAC5B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,CAAC;oBACR,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,SAAS;oBACxB,KAAK,EAAE,uBAAuB,QAAQ,KAAK,KAAK,EAAE;iBACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE9C,OAAO;YACL,MAAM;YACN,KAAK;YACL,UAAU;YACV,aAAa,EAAE,SAAS;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,IAAY,EACZ,OAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,OAAO,GAA0C,EAAE,CAAC;QAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,IAAY,EACZ,UAAkB;QAElB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,OAAO;oBACL,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,UAAuB;QAC5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,GAAG;SACX,CAAC;QAEF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC/C,OAAO,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,gDAAgD;QAChD,oDAAoD;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAhOD,4CAgOC"}
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
+ }