fix(confidence-engine): sanitize reasoning error responses

This commit is contained in:
2026-09-10 11:39:13 +01:00
parent b9d49ff277
commit 2cb2d556fd
11 changed files with 304 additions and 44 deletions
+19 -3
View File
@@ -26,7 +26,7 @@ async function post(request) {
if (!result.success) {
return Response.json(
{ ...result, reconstruction: result.reconstruction || null },
{ error: "Reasoning request could not be completed." },
{ status: Number(result.statusCode) || 500 },
);
}
@@ -42,9 +42,25 @@ async function post(request) {
promptVersion: result.promptVersion,
});
} catch (e) {
if (e.code === "PROVIDER_UNAVAILABLE") {
return Response.json(
{ error: "Reasoning service is temporarily unavailable." },
{ status: 503 },
);
}
const validationFailed = e?.validationFailed || e?.code === "VALIDATION_FAILED";
if (validationFailed) {
return Response.json(
{ success: false, error: "Reasoning request could not be completed." },
{ status: Number(e.statusCode) || 500 },
);
}
const statusCode = Number(e.statusCode) || 500;
return Response.json(
{ error: e.message || "Unknown server error", responseDurationMs: 0 },
{ status: 500 },
{ error: "Reasoning request could not be completed." },
{ status: statusCode },
);
}
}
+3 -1
View File
@@ -55,7 +55,9 @@ async function post(request) {
{
success: false,
stage: error.statusCode === 400 ? "request_validation" : "provider",
error: error.message ?? "Overview synthesis failed",
error: error.statusCode === 400
? "Invalid overview request"
: "Reasoning request could not be completed.",
},
{ status: error.statusCode }
);
+2 -8
View File
@@ -48,14 +48,8 @@ async function post(request) {
return Response.json(
{
success: false,
error: diagnostics.error,
validationErrors: result.validationErrors,
diagnostics: result.diagnostics,
analysisErrors: result.analysisErrors,
validationIssues: result.validationIssues,
providerApiPath: result.providerApiPath,
providerExecution: result.providerExecution,
rawResponse: result.rawResponse ?? undefined,
error: status === 400 ? diagnostics.error : "Reasoning request could not be completed.",
...(status === 400 ? { validationErrors: result.validationErrors } : {}),
},
{ status },
);
+3 -1
View File
@@ -57,7 +57,9 @@ async function post(request) {
{
success: false,
stage: error.statusCode === 400 ? "request_validation" : "provider",
error: error.message ?? "Synthesis failed",
error: error.statusCode === 400
? "Invalid synthesis request"
: "Reasoning request could not be completed.",
},
{ status: error.statusCode }
);
@@ -154,7 +154,7 @@ async function post(request) {
);
}
return Response.json(
{ error: e.message || "Unknown server error" },
{ error: "Reasoning request could not be completed." },
{ status: 500 },
);
}