fix(reasoning): preserve mixed plaintext and drop incompatible state (#10949, #10959) (#10961)

Validated on the combined batch board + this branch: 231/231 across chatcore-translation-paths, reasoning-cache, strip-reasoning-blobs, and both Responses translator suites. Pre-merge: propagated the #11110/#11129 summary:[] defaults into five assertions here (each commented with its PR) — without it this branch red against the tip, and as a bonus the merge drains the 4 reasoning reds that were live on the tip from those merges. Plaintext now wins over a coexisting opaque companion; opaque-only drops cleanly for plaintext targets; combos keep explicit Skip. Fixes #10949 and #10959. Thank you @jackjinke!
This commit is contained in:
Ke Jin
2026-08-23 09:58:58 +08:00
committed by GitHub
parent c018bb41a7
commit 9689dcef9f
14 changed files with 233 additions and 144 deletions

View File

@@ -3896,15 +3896,6 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
)}
</option>
</select>
{config.reasoningTransportFallback !== "skip" && (
<p className="text-[10px] text-amber-600 dark:text-amber-300 mt-1">
{getI18nOrFallback(
t,
"reasoningTransportFallbackDropWarning",
"May lose continuation context or cause tool-call continuations to fail."
)}
</p>
)}
</div>
<div>
<FieldLabelWithHelp

View File

@@ -1851,7 +1851,7 @@ async function handleSingleModelChat(
modelPinned: runtimeOptions?.modelPinned ?? false,
routingComboId: runtimeOptions?.routingComboId ?? null,
sessionAffinityKey: runtimeOptions.sessionAffinityKey ?? null,
reasoningTransportFallback: runtimeOptions.reasoningTransportFallback ?? "skip",
reasoningTransportFallback: runtimeOptions.reasoningTransportFallback ?? "drop",
managedLease: runtimeOptions.managedLease ?? null,
},
runtimeOptions

View File

@@ -422,7 +422,7 @@ export async function executeChatWithBreaker({
conversationId = null,
modelPinned = false,
routingComboId = null,
reasoningTransportFallback = "skip",
reasoningTransportFallback = "drop",
sessionAffinityKey = null,
managedLease = null,
}: ExecuteChatWithBreakerOptions): Promise<ExecuteChatWithBreakerResult> {