mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
fix: honor Codex reasoning suffix aliases (#2335)
Integrated into release/v3.8.0 — fixes issue #2331: Codex model suffix aliases now correctly override client-injected reasoning defaults
This commit is contained in:
@@ -1388,15 +1388,13 @@ export class CodexExecutor extends BaseExecutor {
|
||||
const fallbackReasoningEffort = allowConnectionReasoningDefaults
|
||||
? requestDefaults.reasoningEffort || "medium"
|
||||
: undefined;
|
||||
// Issue #2331: model suffix aliases (for example gpt-5.5-xhigh) represent an
|
||||
// explicit model selection, so they must override client-injected defaults such
|
||||
// as OpenCode's automatic reasoning.effort=medium for GPT-5-family requests.
|
||||
const rawEffort =
|
||||
explicitReasoning || requestReasoningEffort || modelEffort || fallbackReasoningEffort;
|
||||
modelEffort || explicitReasoning || requestReasoningEffort || fallbackReasoningEffort;
|
||||
|
||||
if (explicitReasoning) {
|
||||
body.reasoning = {
|
||||
...(reasoningRecord || {}),
|
||||
effort: clampEffort(cleanModel, explicitReasoning),
|
||||
};
|
||||
} else if (rawEffort) {
|
||||
if (rawEffort) {
|
||||
body.reasoning = {
|
||||
...(reasoningRecord || {}),
|
||||
effort: clampEffort(cleanModel, rawEffort),
|
||||
|
||||
@@ -317,6 +317,25 @@ test("CodexExecutor preserves native responses payloads for Codex passthrough",
|
||||
assert.ok(!("_nativeCodexPassthrough" in transformed));
|
||||
});
|
||||
|
||||
test("CodexExecutor gives model reasoning suffix precedence over client defaults", () => {
|
||||
const executor = new CodexExecutor();
|
||||
const transformed = executor.transformRequest(
|
||||
"gpt-5.5-xhigh",
|
||||
{
|
||||
model: "gpt-5.5-xhigh",
|
||||
input: [],
|
||||
reasoning: { effort: "medium", summary: "auto" },
|
||||
reasoning_effort: "low",
|
||||
},
|
||||
true,
|
||||
{}
|
||||
);
|
||||
|
||||
assert.equal(transformed.model, "gpt-5.5");
|
||||
assert.deepEqual(transformed.reasoning, { effort: "xhigh", summary: "auto" });
|
||||
assert.equal(transformed.reasoning_effort, undefined);
|
||||
});
|
||||
|
||||
test("CodexExecutor strips streaming fields for compact passthrough", () => {
|
||||
const executor = new CodexExecutor();
|
||||
const transformed = executor.transformRequest(
|
||||
|
||||
Reference in New Issue
Block a user