fix(executors): wire glm and cliproxyapi into the 400 reasoning-effort recovery - #14915
Merged
diegosouzapw merged 1 commit intoSep 28, 2026
Conversation
…overy Both override execute() without calling super.execute(), so the reactive clamp-and-retry that diegosouzapw#14774 extracted never ran for them. An upstream 400 naming the accepted reasoning_effort enum now clamps and retries once. glm only on the openai transport; the anthropic transport does not send the field. cliproxyapi reuses its wire serializer so the in-memory tool maps stay off the wire. ninerouter, gitlab, and nlpcloud are left unwired. ninerouter returns before any fetch when its local supervisor is down, and the other two never send reasoning_effort. Related to diegosouzapw#14629. Signed-off-by: Minxi Hou <houminxi@gmail.com>
diegosouzapw
merged commit Sep 28, 2026
9bb5c57
into
diegosouzapw:release/v3.8.51
10 of 16 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
BaseExecutor.execute()carries a reactive 400 clamp-and-retry for a rejectedreasoning_effort. Executors that overrideexecute()without callingsuper.execute()never reach it. #14774 wiredcommandCodeand extracted the shared helper. This PR wires the two remaining executors that actually forward an OpenAI-shaped body carryingreasoning_effort.glm.tscalls the helper insideexecuteTransport, and only on theopenaitransport. Theanthropictransport does not send the field, and the existing transport fallback (isRetryableGlmFallbackStatus) is untouched.cliproxyapi.tscalls the helper after its own fetch. The retry reuses the same serializer that drops_toolNameMapand_namespaceToolIdentityMap, so those in-memory maps stay off the wire.Three executors listed in #14774's Remaining section are left unwired, on purpose:
ninerouter.tsreturns 503 before any fetch when its local supervisor is not running, which is the test environment. The wiring cannot be exercised there.gitlab.tsandnlpcloud.tsnever referencereasoning_effort. Their upstream bodies are not OpenAI-shaped, so the helper would be dead code.Related to #14629. #14629 stays open.
Test plan
tests/unit/issue-14629-remaining-executors-400-recovery.test.ts(2): glm and cliproxyapi each clampreasoning_effort: "none"to"low"and retry once on a 400 that names the accepted enumissue-14629-commandcode-400-recovery-unreachablestill passesupstream/release/v3.8.51