From 1fd4087995afb596fcb6121e94bd9055c017a75b Mon Sep 17 00:00:00 2001 From: backryun Date: Thu, 6 Aug 2026 10:30:22 +0900 Subject: [PATCH] fix(types): preserve thinking signature recovery failure (#9114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Validated in local merge-train (devbox-vm-06-dev002) @ combined-tip (FAST gates: typecheck/complexity/cognitive/changelog/vitest — only pre-existing audit.test.ts flake). Evidence: /home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/merge-train-20260805-222248-suite.log --- .../maintenance/8484-thinking-signature-recovery-types.md | 1 + open-sse/handlers/chatCore/thinkingSignatureRecovery.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 changelog.d/maintenance/8484-thinking-signature-recovery-types.md diff --git a/changelog.d/maintenance/8484-thinking-signature-recovery-types.md b/changelog.d/maintenance/8484-thinking-signature-recovery-types.md new file mode 100644 index 0000000000..94c32a5b6e --- /dev/null +++ b/changelog.d/maintenance/8484-thinking-signature-recovery-types.md @@ -0,0 +1 @@ +- **fix(types):** preserved the known first-failure record while reading Anthropic thinking-signature recovery details so TypeScript 7 keeps the retry result union narrow ([#8484](https://github.com/diegosouzapw/OmniRoute/issues/8484)) diff --git a/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts b/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts index b0f080bd77..ab4fb1d931 100644 --- a/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts +++ b/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts @@ -69,7 +69,9 @@ export async function recoverAnthropicThinkingSignature(args: { return args.execute(requestBody); }, getError: async (result) => { - if (result === firstFailure) return { status: result.status, message: result.message }; + if (result === firstFailure) { + return { status: firstFailure.status, message: firstFailure.message }; + } if (result.response.ok) return null; const details = await args.parseError(result.response.clone()); return { status: details.statusCode, message: details.message };