fix(web-probe): reject empty analyze stdout contracts

This commit is contained in:
Codex
2026-07-02 18:36:04 +00:00
parent e2500ba418
commit f37729061d
3 changed files with 65 additions and 9 deletions
+18 -7
View File
@@ -2607,13 +2607,24 @@ function webObserveAnalyzeCollectCommand(options: NodeWebProbeObserveOptions, fi
}
function isWebObserveAnalyzeJsonContract(value: Record<string, unknown>): boolean {
return value.ok === true
|| value.ok === false
|| typeof value.reportJsonPath === "string"
|| typeof value.reportMdPath === "string"
|| typeof value.error === "string"
|| Object.keys(recordValue(value.analyzer)).length > 0
|| Object.keys(recordValue(value.counts)).length > 0;
const hasReportPath = typeof value.reportJsonPath === "string" || typeof value.reportMdPath === "string";
const hasAnalyzer = Object.keys(recordValue(value.analyzer)).length > 0;
const hasFindings = arrayRecordsValue(value.findings).length > 0 || arrayRecordsValue(value.archiveRedFindings).length > 0;
const hasAnalyzeData = hasReportPath
|| hasAnalyzer
|| hasFindings
|| Object.keys(recordValue(value.counts)).length > 0
|| Object.keys(recordValue(value.sampleMetrics)).length > 0
|| Object.keys(recordValue(value.requestRate)).length > 0
|| Object.keys(recordValue(value.requestRateCurve)).length > 0
|| Object.keys(recordValue(value.frontendPerformance)).length > 0
|| Object.keys(recordValue(value.webPerformanceRuntimeDiagnostics)).length > 0
|| Object.keys(recordValue(value.runtimeAlerts)).length > 0
|| Object.keys(recordValue(value.archiveSummary)).length > 0
|| Object.keys(recordValue(value.analysisWindow)).length > 0;
const hasFailureData = typeof value.error === "string" || hasAnalyzer || hasFindings || hasReportPath;
if (value.ok === false) return hasFailureData;
return hasAnalyzeData;
}
function compactWebObserveAnalyzePayloadForRaw(payload: Record<string, unknown>, compactRaw: boolean): Record<string, unknown> {