diff --git a/package.json b/package.json index f4e8bbd5c9..178d6a9c7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bitkyc08/opencodex", - "version": "2.24.2", + "version": "2.25.0", "description": "Universal provider proxy for OpenAI Codex & Claude Code — use any LLM with Codex CLI/App/SDK and Claude Code", "type": "module", "main": "./bin/package-main.mjs", diff --git a/src/codex/catalog/sync.ts b/src/codex/catalog/sync.ts index 9ee2886028..0ad82cf168 100644 --- a/src/codex/catalog/sync.ts +++ b/src/codex/catalog/sync.ts @@ -1540,6 +1540,10 @@ function writeRetainedCatalogSync({ }); clampCatalogModelsToCodexSupport(catalog.models); + const autoReviewModel = configuredAutoReviewModel(); + if (autoReviewModel) { + catalog.models = catalog.models.map((entry) => ({ ...entry, auto_review_model_override: autoReviewModel })); + } const added = goEntries.length + accountBoundEntries.length; const content = `${JSON.stringify(catalog, null, 2)}\n`; // A byte-identical rewrite is not a catalog change, but every mtime-keyed reader diff --git a/tests/catalog-auto-review-model.test.ts b/tests/catalog-auto-review-model.test.ts new file mode 100644 index 0000000000..44ed22fbc1 --- /dev/null +++ b/tests/catalog-auto-review-model.test.ts @@ -0,0 +1,21 @@ +import { describe, expect, test } from "bun:test"; +import { readRootTomlString } from "../src/codex/paths"; + +describe("auto_review_model config key (#1225)", () => { + test("readRootTomlString resolves the root-level key next to approvals_reviewer", () => { + const config = [ + 'approvals_reviewer = "auto_review"', + 'auto_review_model = "opencode-go/deepseek-v4-flash"', + "", + "[profiles.test]", + 'model = "gpt-5.6-luna"', + ].join("\n"); + expect(readRootTomlString(config, "auto_review_model")).toBe("opencode-go/deepseek-v4-flash"); + // Keys inside tables must not leak into root resolution. + expect(readRootTomlString(config, "model")).toBeNull(); + }); + + test("a config without the key resolves null (override stays untouched)", () => { + expect(readRootTomlString('model = "gpt-5.6-luna"\n', "auto_review_model")).toBeNull(); + }); +});