From d16eccf109b524778ceb896f79ccb3881bc61a9b Mon Sep 17 00:00:00 2001 From: Dotta Date: Mon, 12 Oct 2026 16:56:02 -0500 Subject: [PATCH] fix(runner): preserve native Codex reasoning effort Keep selected and saved effort in the existing native builder while excluding Codex effort from other providers. Update the existing builder contract and regression controls. Co-Authored-By: Paperclip --- packages/adapters/codex-local/src/ui/build-config.test.ts | 7 ++++++- packages/adapters/codex-local/src/ui/build-config.ts | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/adapters/codex-local/src/ui/build-config.test.ts b/packages/adapters/codex-local/src/ui/build-config.test.ts index 82db065ae3c..019f635a35b 100644 --- a/packages/adapters/codex-local/src/ui/build-config.test.ts +++ b/packages/adapters/codex-local/src/ui/build-config.test.ts @@ -118,6 +118,11 @@ describe("buildCodexLocalConfig", () => { }); describe("buildPaperclipRunnerConfig", () => { + it.each(["", "max"])("preserves or overrides saved native Codex reasoning effort (%s)", thinkingEffort => { + const values = makeValues({ thinkingEffort, adapterSchemaValues: { provider: "codex", modelReasoningEffort: "high" } }); + expect(buildPaperclipRunnerConfig(values).modelReasoningEffort).toBe(thinkingEffort || "high"); + expect(buildPaperclipRunnerConfig({ ...values, adapterSchemaValues: { provider: "acpx", acpxAgent: "claude", modelReasoningEffort: "high" } })).not.toHaveProperty("modelReasoningEffort"); + }); it.each([undefined, false, true])("preserves Dot attachment consent in create/import forms: %s", value => { const config = buildPaperclipRunnerConfig(makeValues({ adapterType: "paperclip_runner", adapterSchemaValues: { provider: "openai_dot", dotAttachmentAccess: value } })); expect(config.dotAttachmentAccess).toBe(value === true); @@ -142,6 +147,7 @@ describe("buildPaperclipRunnerConfig", () => { codexPermissionMode: "never", lifecycleMode: "per_turn", model: "gpt-5.4", + modelReasoningEffort: "high", timeoutSec: 0, graceSec: 15, }); @@ -149,7 +155,6 @@ describe("buildPaperclipRunnerConfig", () => { "engine", "agentCommand", "stateDir", - "modelReasoningEffort", "search", "fastMode", "dangerouslyBypassApprovalsAndSandbox", diff --git a/packages/adapters/codex-local/src/ui/build-config.ts b/packages/adapters/codex-local/src/ui/build-config.ts index 3a6853b9278..51c6a4bf3d6 100644 --- a/packages/adapters/codex-local/src/ui/build-config.ts +++ b/packages/adapters/codex-local/src/ui/build-config.ts @@ -76,6 +76,7 @@ export function buildCodexLocalConfig(v: CreateConfigValues): Record { const config = buildCodexLocalConfig(v); const schemaValues = normalizeLegacyRunnerProvider({ ...(v.adapterSchemaValues ?? {}) }); + const codexReasoningEffort = config.modelReasoningEffort ?? schemaValues.modelReasoningEffort ?? schemaValues.reasoningEffort; for (const unsupportedKey of [ "engine", "agentCommand", @@ -232,7 +233,8 @@ export function buildPaperclipRunnerConfig(v: CreateConfigValues): Record