import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js" ;
function isGenericCompactionCancelledReason(reason: string): boolean {
const normalized = normalizeLowercaseStringOrEmpty(reason);
return normalized === "compaction cancelled" || normalized === "error: compaction cancelled" ;
}
export function resolveCompactionFailureReason(params: {
reason: string;
safeguardCancelReason?: string | null ;
}): string {
if (isGenericCompactionCancelledReason(params.reason) && params.safeguardCancelReason) {
return params.safeguardCancelReason;
}
return params.reason;
}
export function classifyCompactionReason(reason?: string): string {
const text = normalizeLowercaseStringOrEmpty(reason);
if (!text) {
return "unknown" ;
}
if (text.includes("nothing to compact" )) {
return "no_compactable_entries" ;
}
if (text.includes("below threshold" )) {
return "below_threshold" ;
}
if (text.includes("already compacted" )) {
return "already_compacted_recently" ;
}
if (text.includes("still exceeds target" )) {
return "live_context_still_exceeds_target" ;
}
if (text.includes("guard" )) {
return "guard_blocked" ;
}
if (text.includes("summary" )) {
return "summary_failed" ;
}
if (text.includes("timed out" ) || text.includes("timeout" )) {
return "timeout" ;
}
if (
text.includes("400" ) ||
text.includes("401" ) ||
text.includes("403" ) ||
text.includes("429" )
) {
return "provider_error_4xx" ;
}
if (
text.includes("500" ) ||
text.includes("502" ) ||
text.includes("503" ) ||
text.includes("504" )
) {
return "provider_error_5xx" ;
}
return "unknown" ;
}
Messung V0.5 in Prozent C=95 H=95 G=94
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland