From 96754f5a33f1ac409d6ba1b620e287b044fd3c9c Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Sun, 17 May 2026 05:11:41 +0800 Subject: [PATCH] refactor(api): move Codex client model handling to `registry` package - Relocated Codex client model JSON and related logic from `openai` package to `registry` for better modularity. - Updated references to use `registry.GetCodexClientModelsJSON()` in loading logic. - Extended test cases to cover additional field removals (`upgrade`, `availability_nux`). --- internal/api/server_test.go | 6 ++++++ internal/registry/codex_client_models.go | 11 +++++++++++ .../registry/models}/codex_client_models.json | 0 sdk/api/handlers/openai/codex_client_models.go | 4 +++- sdk/api/handlers/openai/openai_handlers.go | 4 ---- 5 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 internal/registry/codex_client_models.go rename {sdk/api/handlers/openai => internal/registry/models}/codex_client_models.json (100%) diff --git a/internal/api/server_test.go b/internal/api/server_test.go index 9435ff122..e503fe71b 100644 --- a/internal/api/server_test.go +++ b/internal/api/server_test.go @@ -346,6 +346,12 @@ func TestModelsWithClientVersionReturnsCodexCatalog(t *testing.T) { if _, ok := custom["apply_patch_tool_type"]; ok { t.Fatal("expected custom model to omit apply_patch_tool_type") } + if _, ok := custom["upgrade"]; ok { + t.Fatal("expected custom model to omit upgrade") + } + if _, ok := custom["availability_nux"]; ok { + t.Fatal("expected custom model to omit availability_nux") + } hiddenModels := map[string]bool{ "grok-imagine-image-quality": false, diff --git a/internal/registry/codex_client_models.go b/internal/registry/codex_client_models.go new file mode 100644 index 000000000..f254d5e1e --- /dev/null +++ b/internal/registry/codex_client_models.go @@ -0,0 +1,11 @@ +package registry + +import _ "embed" + +//go:embed models/codex_client_models.json +var codexClientModelsJSON []byte + +// GetCodexClientModelsJSON returns the embedded Codex client model catalog. +func GetCodexClientModelsJSON() []byte { + return append([]byte(nil), codexClientModelsJSON...) +} diff --git a/sdk/api/handlers/openai/codex_client_models.json b/internal/registry/models/codex_client_models.json similarity index 100% rename from sdk/api/handlers/openai/codex_client_models.json rename to internal/registry/models/codex_client_models.json diff --git a/sdk/api/handlers/openai/codex_client_models.go b/sdk/api/handlers/openai/codex_client_models.go index 7fa857de1..bf2058151 100644 --- a/sdk/api/handlers/openai/codex_client_models.go +++ b/sdk/api/handlers/openai/codex_client_models.go @@ -66,7 +66,7 @@ func buildCodexClientModels(models []map[string]any) []map[string]any { func loadCodexClientModelTemplates() (map[string]map[string]any, map[string]any, error) { codexClientModelTemplatesOnce.Do(func() { var payload codexClientModelsPayload - codexClientModelTemplatesErr = json.Unmarshal(codexClientModelsJSON, &payload) + codexClientModelTemplatesErr = json.Unmarshal(registry.GetCodexClientModelsJSON(), &payload) if codexClientModelTemplatesErr != nil { return } @@ -120,6 +120,8 @@ func applyCodexClientModelMetadata(entry map[string]any, id string, model map[st entry["priority"] = 100 entry["prefer_websockets"] = false delete(entry, "apply_patch_tool_type") + delete(entry, "upgrade") + delete(entry, "availability_nux") if contextWindow > 0 { entry["context_window"] = contextWindow diff --git a/sdk/api/handlers/openai/openai_handlers.go b/sdk/api/handlers/openai/openai_handlers.go index f7b8ad88a..cdb3c6c24 100644 --- a/sdk/api/handlers/openai/openai_handlers.go +++ b/sdk/api/handlers/openai/openai_handlers.go @@ -8,7 +8,6 @@ package openai import ( "context" - _ "embed" "encoding/json" "fmt" "net/http" @@ -30,9 +29,6 @@ type OpenAIAPIHandler struct { *handlers.BaseAPIHandler } -//go:embed codex_client_models.json -var codexClientModelsJSON []byte - // NewOpenAIAPIHandler creates a new OpenAI API handlers instance. // It takes an BaseAPIHandler instance as input and returns an OpenAIAPIHandler. //