fix: parse arbiter verdict with optional VERDICT: prefix
Codex arbiter sometimes outputs "VERDICT: PROCEED" instead of "PROCEED". The regex now handles optional "VERDICT:" prefix, preventing unknown verdict → false arbiter_escalated.
This commit is contained in:
@@ -81,10 +81,13 @@ function classifyArbiterVerdict(
|
|||||||
const cleaned = summary.replace(/<internal>[\s\S]*?<\/internal>/g, '').trim();
|
const cleaned = summary.replace(/<internal>[\s\S]*?<\/internal>/g, '').trim();
|
||||||
if (!cleaned) return 'unknown';
|
if (!cleaned) return 'unknown';
|
||||||
const firstLine = cleaned.split('\n')[0].trim();
|
const firstLine = cleaned.split('\n')[0].trim();
|
||||||
if (/^\*{0,2}PROCEED\*{0,2}\b/i.test(firstLine)) return 'proceed';
|
// Match verdict keywords with optional prefix like "VERDICT:" and markdown bold
|
||||||
if (/^\*{0,2}REVISE\*{0,2}\b/i.test(firstLine)) return 'revise';
|
const verdictMatch = firstLine.match(
|
||||||
if (/^\*{0,2}RESET\*{0,2}\b/i.test(firstLine)) return 'reset';
|
/\*{0,2}(?:VERDICT\s*[:—-]\s*)?(PROCEED|REVISE|RESET|ESCALATE)\*{0,2}/i,
|
||||||
if (/^\*{0,2}ESCALATE\*{0,2}\b/i.test(firstLine)) return 'escalate';
|
);
|
||||||
|
if (verdictMatch) {
|
||||||
|
return verdictMatch[1].toLowerCase() as ArbiterVerdictResult;
|
||||||
|
}
|
||||||
return 'unknown';
|
return 'unknown';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user