Spaces:
Running
Running
| 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); | |