fix: improve sentinel observer evidence
This commit is contained in:
@@ -456,6 +456,10 @@ function hasCommandFailureEvidence(item: Record<string, unknown>): boolean {
|
||||
return stringAtNullable(first, "type") !== null
|
||||
|| stringAtNullable(first, "phase") !== null
|
||||
|| stringAtNullable(first, "status") !== null
|
||||
|| stringAtNullable(first, "failedReason") !== null
|
||||
|| stringAtNullable(first, "failureKind") !== null
|
||||
|| stringAtNullable(first, "message") !== null
|
||||
|| stringAtNullable(first, "artifactRef") !== null
|
||||
|| stringAtNullable(first, "stdoutPreview") !== null
|
||||
|| stringAtNullable(first, "stderrPreview") !== null
|
||||
|| numberAtNullable(first, "exitCode") !== null;
|
||||
@@ -616,11 +620,19 @@ function compactSentinelReportCommandFailure(value: unknown): Record<string, unk
|
||||
type: stringAtNullable(item, "type"),
|
||||
phase: stringAtNullable(item, "phase"),
|
||||
status: stringAtNullable(item, "status"),
|
||||
resultOk: item.resultOk === true ? true : item.resultOk === false ? false : null,
|
||||
failureKind: reportText(item.failureKind, 160),
|
||||
failedReason: reportText(item.failedReason, 240),
|
||||
message: reportText(item.message, 240),
|
||||
exitCode: numberAtNullable(item, "exitCode"),
|
||||
timedOut: item.timedOut === true ? true : item.timedOut === false ? false : null,
|
||||
stdoutPreview: reportText(item.stdoutPreview, 160),
|
||||
stderrPreview: reportText(item.stderrPreview, 160),
|
||||
artifactBucket: stringAtNullable(item, "artifactBucket"),
|
||||
artifactRef: stringAtNullable(item, "artifactRef"),
|
||||
failedAt: stringAtNullable(item, "failedAt"),
|
||||
completedAt: stringAtNullable(item, "completedAt"),
|
||||
abandonedAt: stringAtNullable(item, "abandonedAt"),
|
||||
valuesRedacted: true,
|
||||
};
|
||||
}
|
||||
@@ -645,7 +657,7 @@ function readSentinelReportArtifactSummary(state: SentinelCicdState, body: Recor
|
||||
"const sha=(buf)=>buf?`sha256:${crypto.createHash('sha256').update(buf).digest('hex')}`:null;",
|
||||
"const rec=(v)=>v&&typeof v==='object'&&!Array.isArray(v)?v:{}; const arr=(v)=>Array.isArray(v)?v:[]; const clip=(v,n=180)=>v==null?null:String(v).slice(0,n);",
|
||||
"const compactRootCauseSignals=(value)=>{const v=rec(value); const keys=['sessionListReadCount','traceEventsReadCount','webPerformanceBeaconFailureCount','eventSourceFailureCount','requestFailedCount','httpErrorCount','consoleAlertCount','requestfailedTop','httpStatusTop']; const out={}; for(const key of keys){if(v[key]!=null)out[key]=Array.isArray(v[key])?v[key].slice(0,8):v[key];} if(Object.keys(out).length===0)return null; out.valuesRedacted=true; return out;};",
|
||||
"const compactCommandFailure=(value)=>{const v=rec(value); if(Object.keys(v).length===0)return null; return {commandId:clip(v.commandId,80),type:clip(v.type,48),phase:clip(v.phase,80),status:clip(v.status,80),exitCode:Number.isFinite(Number(v.exitCode))?Number(v.exitCode):null,timedOut:v.timedOut===true?true:v.timedOut===false?false:null,stdoutPreview:clip(v.stdoutPreview,160),stderrPreview:clip(v.stderrPreview,160),artifactRef:clip(v.artifactRef,160),valuesRedacted:true};};",
|
||||
"const compactCommandFailure=(value)=>{const v=rec(value); if(Object.keys(v).length===0)return null; return {commandId:clip(v.commandId,80),type:clip(v.type,48),phase:clip(v.phase,80),status:clip(v.status,80),resultOk:v.resultOk===true?true:v.resultOk===false?false:null,failureKind:clip(v.failureKind,160),failedReason:clip(v.failedReason,240),message:clip(v.message,240),exitCode:Number.isFinite(Number(v.exitCode))?Number(v.exitCode):null,timedOut:v.timedOut===true?true:v.timedOut===false?false:null,stdoutPreview:clip(v.stdoutPreview,160),stderrPreview:clip(v.stderrPreview,160),artifactBucket:clip(v.artifactBucket,48),artifactRef:clip(v.artifactRef,160),failedAt:clip(v.failedAt,48),completedAt:clip(v.completedAt,48),abandonedAt:clip(v.abandonedAt,48),valuesRedacted:true};};",
|
||||
"const sleep=(ms)=>{try{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,ms)}catch{}};",
|
||||
"let jsonBuf=read(reportPath); let report=null; let reportParseError=null; const deadline=Date.now()+waitMs;",
|
||||
"while(true){ if(jsonBuf){try{report=JSON.parse(jsonBuf.toString('utf8')); break}catch(err){reportParseError=String(err&&err.message?err.message:err)}} if(Date.now()>=deadline)break; sleep(Math.min(500, Math.max(50, deadline-Date.now()))); jsonBuf=read(reportPath); }",
|
||||
|
||||
Reference in New Issue
Block a user