Merge verified native Codex effort preservation

Co-Authored-By: Paperclip <noreply@paperclip.ing>

* codex/runner-native-platform-prerequisites:
  fix(runner): preserve native Codex reasoning effort
This commit is contained in:
DottaandPaperclip committed 2026-10-12 16:56:12 -05:00
commit 9c84f19365
2 files changed
+9 -2

No files matched your search

@@ -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",
@@ -76,6 +76,7 @@ export function buildCodexLocalConfig(v: CreateConfigValues): Record<string, unk
export function buildPaperclipRunnerConfig(v: CreateConfigValues): Record<string, unknown> {
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<string
...schemaValues,
provider,
...(provider === "codex"
? { model: resolvePaperclipRunnerModel("codex", config.model) }
? { model: resolvePaperclipRunnerModel("codex", config.model),
...(codexReasoningEffort !== undefined ? { modelReasoningEffort: codexReasoningEffort } : {}) }
: {}),
codexPermissionMode: "never",
opencodePermissionMode: resolvePaperclipRunnerPermissionMode(