Spaces:
Running
Running
File size: 1,437 Bytes
249c849 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import fs from "fs";
import path from "path";
type OpenHandsReport = {
summary?: {
p95_latency_ms?: number;
optimize_success_rate?: number;
pattern_hit_rate?: number;
trace_files?: number;
};
};
const reportFile = path.resolve(process.env.BENCH_REPORT_FILE ?? "artifacts/openhands-bench-report.json");
const maxP95 = Number(process.env.BENCH_GATE_MAX_P95_MS ?? "2000");
const minSuccessRate = Number(process.env.BENCH_GATE_MIN_SUCCESS_RATE ?? "0.99");
const minPatternHitRate = Number(process.env.BENCH_GATE_MIN_PATTERN_HIT_RATE ?? "0");
if (!fs.existsSync(reportFile)) {
console.error(`OpenHands bench report not found: ${reportFile}`);
process.exit(1);
}
const parsed = JSON.parse(fs.readFileSync(reportFile, "utf-8")) as OpenHandsReport;
const summary = parsed.summary;
if (!summary) {
console.error("Invalid report: missing summary");
process.exit(1);
}
const passed =
(summary.p95_latency_ms ?? Infinity) <= maxP95 &&
(summary.optimize_success_rate ?? 0) >= minSuccessRate &&
(summary.pattern_hit_rate ?? 0) >= minPatternHitRate;
console.log(
JSON.stringify(
{
gate: {
maxP95,
minSuccessRate,
minPatternHitRate,
actualP95: summary.p95_latency_ms,
actualSuccessRate: summary.optimize_success_rate,
actualPatternHitRate: summary.pattern_hit_rate,
passed,
},
},
null,
2
)
);
if (!passed) process.exit(1);
|