import { QA_PROVIDER_SECRET_ENV_VARS } from "./providers/env.js" ;
const QA_GATEWAY_DEBUG_SECRET_ENV_VARS = Object.freeze([
...QA_PROVIDER_SECRET_ENV_VARS,
"OPENCLAW_GATEWAY_TOKEN" ,
]);
const QA_GATEWAY_DEBUG_SECRET_VALUE_KEYS = Object.freeze([
"botToken" ,
"driverToken" ,
"sutToken" ,
"leaseToken" ,
]);
export function redactQaGatewayDebugText(text: string) {
let redacted = text;
for (const envVar of QA_GATEWAY_DEBUG_SECRET_ENV_VARS) {
const escapedEnvVar = envVar.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&" );
redacted = redacted.replace(
new RegExp(`\\b(${escapedEnvVar})(\\s*[=:]\\s*)([^\\s"';,]+|" [^"]*" |'[^' ]*')`, "g"),
`$1 $2 <redacted>`,
);
redacted = redacted.replace(
new RegExp(`("${escapedEnvVar}" \\s*:\\s*)"[^" ]*"`, " g"),
`$1 "<redacted>" `,
);
}
for (const key of QA_GATEWAY_DEBUG_SECRET_VALUE_KEYS) {
const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, "\\$&" );
redacted = redacted.replace(
new RegExp(`\\b(${escapedKey})(\\s*[=:]\\s*)([^\\s"';,]+|" [^"]*" |'[^' ]*')`, "gi"),
`$1 $2 <redacted>`,
);
redacted = redacted.replace(
new RegExp(`("${escapedKey}" \\s*:\\s*)"[^" ]*"`, " gi"),
`$1 "<redacted>" `,
);
}
return redacted
.replaceAll(/\bsk-ant-oat01-[A-Za-z0-9 _-]+\b/g, "<redacted>" )
.replaceAll(/\bBearer\s+[^\s"'<>]{8,}/gi, " Bearer <redacted>")
.replaceAll(/([?#&]token=)[^&\s]+/gi, "$1<redacted>" );
}
export function formatQaGatewayLogsForError(logs: string) {
const sanitized = redactQaGatewayDebugText(logs).trim();
return sanitized.length > 0 ? `\nGateway logs:\n${sanitized}` : "" ;
}
Messung V0.5 in Prozent C=100 H=78 G=89
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland