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 82db065ae3..019f635a35 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 3a6853b927..51c6a4bf3d 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