@oddessentials/odd-ai-reviewers 1.12.0 → 1.13.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/dist/cli/commands/benchmark.d.ts +14 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +86 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/local-review.d.ts.map +1 -1
- package/dist/cli/commands/local-review.js +370 -357
- package/dist/cli/commands/local-review.js.map +1 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +3 -0
- package/dist/diff.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -82
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
export interface BenchmarkCommandOptions {
|
|
3
|
+
fixtures: string;
|
|
4
|
+
output?: string;
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface BenchmarkCommandIO {
|
|
8
|
+
log: (message: string) => void;
|
|
9
|
+
error: (message: string) => void;
|
|
10
|
+
readFile: typeof readFileSync;
|
|
11
|
+
writeFile: typeof writeFileSync;
|
|
12
|
+
}
|
|
13
|
+
export declare function runBenchmarkCommand(options: BenchmarkCommandOptions, io?: BenchmarkCommandIO): Promise<number>;
|
|
14
|
+
//# sourceMappingURL=benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAIjD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,OAAO,YAAY,CAAC;IAC9B,SAAS,EAAE,OAAO,aAAa,CAAC;CACjC;AASD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,uBAAuB,EAChC,EAAE,GAAE,kBAA8B,GACjC,OAAO,CAAC,MAAM,CAAC,CAyFjB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { computeReport, scoreScenario } from '../../benchmark/scoring.js';
|
|
3
|
+
import { getUnsupportedScenarioReason, runScenario } from '../../benchmark/adapter.js';
|
|
4
|
+
const defaultIO = {
|
|
5
|
+
log: (message) => console.log(message),
|
|
6
|
+
error: (message) => console.error(message),
|
|
7
|
+
readFile: readFileSync,
|
|
8
|
+
writeFile: writeFileSync,
|
|
9
|
+
};
|
|
10
|
+
export async function runBenchmarkCommand(options, io = defaultIO) {
|
|
11
|
+
try {
|
|
12
|
+
const data = JSON.parse(io.readFile(options.fixtures, 'utf-8'));
|
|
13
|
+
const benchmarkScenarios = data.scenarios;
|
|
14
|
+
if (benchmarkScenarios.length === 0) {
|
|
15
|
+
throw new Error('Fixture file contains no scenarios');
|
|
16
|
+
}
|
|
17
|
+
io.log(`[benchmark] Running ${benchmarkScenarios.length} scenarios...`);
|
|
18
|
+
const results = [];
|
|
19
|
+
let skippedCount = 0;
|
|
20
|
+
for (const scenario of benchmarkScenarios) {
|
|
21
|
+
const unsupportedReason = getUnsupportedScenarioReason(scenario);
|
|
22
|
+
if (unsupportedReason) {
|
|
23
|
+
skippedCount++;
|
|
24
|
+
if (options.verbose) {
|
|
25
|
+
io.log(` [SKIP] ${scenario.id}: ${unsupportedReason}`);
|
|
26
|
+
}
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const findings = await runScenario(scenario);
|
|
30
|
+
const result = scoreScenario(scenario, findings);
|
|
31
|
+
results.push(result);
|
|
32
|
+
if (options.verbose) {
|
|
33
|
+
io.log(` [${result.passed ? 'PASS' : 'FAIL'}] ${scenario.id}: ${scenario.description}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (results.length === 0 && skippedCount > 0) {
|
|
37
|
+
throw new Error('All benchmark scenarios were skipped as unsupported by the deterministic benchmark adapter');
|
|
38
|
+
}
|
|
39
|
+
const report = computeReport(results);
|
|
40
|
+
const reportJson = JSON.stringify(report, null, 2);
|
|
41
|
+
if (options.output) {
|
|
42
|
+
io.writeFile(options.output, reportJson);
|
|
43
|
+
io.log(`[benchmark] Report written to ${options.output}`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
io.log(reportJson);
|
|
47
|
+
}
|
|
48
|
+
const suppression = (report.pool1.suppressionRate * 100).toFixed(1);
|
|
49
|
+
const recall = (report.pool2.recall * 100).toFixed(1);
|
|
50
|
+
const precision = (report.pool2.precision * 100).toFixed(1);
|
|
51
|
+
if (skippedCount > 0) {
|
|
52
|
+
io.log(`\n[benchmark] ${results.length} scored, ${skippedCount} skipped (unsupported patterns)`);
|
|
53
|
+
}
|
|
54
|
+
io.log(`\n[benchmark] Pool 1 (FP): suppression=${suppression}%`);
|
|
55
|
+
io.log(`[benchmark] Pool 2 (TP): recall=${recall}%, precision=${precision}%`);
|
|
56
|
+
const patternEScenarios = report.scenarios.filter((scenario) => scenario.pattern === 'E');
|
|
57
|
+
const patternEPassed = patternEScenarios.filter((scenario) => scenario.passed).length;
|
|
58
|
+
const patternERate = patternEScenarios.length > 0 ? patternEPassed / patternEScenarios.length : 1;
|
|
59
|
+
io.log(`[benchmark] SC-007: Pattern E self-contradiction=${(patternERate * 100).toFixed(1)}%`);
|
|
60
|
+
const suppressionGate = report.pool1.suppressionRate >= 0.85;
|
|
61
|
+
const recallGate = report.pool2.recall === 1.0;
|
|
62
|
+
const precisionGate = report.pool2.precision >= 0.7;
|
|
63
|
+
const fprGate = report.pool1.fpRate <= 0.25;
|
|
64
|
+
const selfContradictionGate = patternERate >= 0.8;
|
|
65
|
+
if (!suppressionGate)
|
|
66
|
+
io.log('[benchmark] FAIL: SC-001 suppression rate < 85%');
|
|
67
|
+
if (!recallGate)
|
|
68
|
+
io.log('[benchmark] FAIL: SC-002 TP recall < 100%');
|
|
69
|
+
if (!precisionGate)
|
|
70
|
+
io.log('[benchmark] FAIL: SC-003 TP precision < 70%');
|
|
71
|
+
if (!fprGate)
|
|
72
|
+
io.log('[benchmark] FAIL: SC-004 FP rate > 25%');
|
|
73
|
+
if (!selfContradictionGate) {
|
|
74
|
+
io.log(`[benchmark] FAIL: SC-007 Pattern E self-contradiction filter ${(patternERate * 100).toFixed(1)}% < 80%`);
|
|
75
|
+
}
|
|
76
|
+
return suppressionGate && recallGate && precisionGate && fprGate && selfContradictionGate
|
|
77
|
+
? 0
|
|
78
|
+
: 1;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
82
|
+
io.error(`[benchmark] Fatal error: ${msg}`);
|
|
83
|
+
return 2;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=benchmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../../src/cli/commands/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-review.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/local-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAoB,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAmB,MAAM,0BAA0B,CAAC;AAKxF,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EAGxB,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAUhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"local-review.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/local-review.ts"],"names":[],"mappings":"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"}
|