diff --git a/changelog/unreleased/codex-catalog-gpt-6.1-terra.md b/changelog/unreleased/codex-catalog-gpt-6.1-terra.md new file mode 100644 index 00000000..f248d200 --- /dev/null +++ b/changelog/unreleased/codex-catalog-gpt-6.1-terra.md @@ -0,0 +1,7 @@ +### English + +- Codex model catalog adds `gpt-6.1-terra` (GPT-6.1 Terra) from the upstream client / CLIProxyAPI list, with the same slim fields as sibling `gpt-6.1-sol`. + +### 中文 + +- Codex 模型目录新增上游客户端 / CLIProxyAPI 列表中的 `gpt-6.1-terra`(GPT-6.1 Terra),字段结构与同代 `gpt-6.1-sol` 一致。 diff --git a/internal/providers/codex/credential_refresh_test.go b/internal/providers/codex/credential_refresh_test.go index af656f2f..70887aa7 100644 --- a/internal/providers/codex/credential_refresh_test.go +++ b/internal/providers/codex/credential_refresh_test.go @@ -122,3 +122,31 @@ func TestCatalogIncludesGPT61Sol(t *testing.T) { } } } + +func TestCatalogIncludesGPT61Terra(t *testing.T) { + entry, ok := lookupModel("gpt-6.1-terra") + if !ok { + t.Fatal("gpt-6.1-terra missing from Codex models.json") + } + if entry.DisplayName != "GPT-6.1 Terra" { + t.Fatalf("display_name = %q", entry.DisplayName) + } + if entry.ContextWindow != 272000 || entry.MaxContextWindow != 872000 { + t.Fatalf("context windows = %d/%d", entry.ContextWindow, entry.MaxContextWindow) + } + if entry.DefaultReasoning != "low" { + t.Fatalf("default_reasoning_level = %q, want low", entry.DefaultReasoning) + } + if !entry.UseResponsesLite || !entry.SupportedInAPI || !entry.PreferWebsockets { + t.Fatalf("flags lite=%v api=%v ws=%v", entry.UseResponsesLite, entry.SupportedInAPI, entry.PreferWebsockets) + } + wantLevels := []string{"low", "medium", "high", "xhigh", "max", "ultra"} + if len(entry.ReasoningLevels) != len(wantLevels) { + t.Fatalf("reasoning levels = %v, want %v", entry.ReasoningLevels, wantLevels) + } + for i, level := range wantLevels { + if entry.ReasoningLevels[i] != level { + t.Fatalf("reasoning levels = %v, want %v", entry.ReasoningLevels, wantLevels) + } + } +} diff --git a/internal/providers/codex/models.json b/internal/providers/codex/models.json index 098c50d7..65f5c7e9 100644 --- a/internal/providers/codex/models.json +++ b/internal/providers/codex/models.json @@ -22,6 +22,28 @@ "use_responses_lite": true, "supported_in_api": true }, + { + "slug": "gpt-6.1-terra", + "display_name": "GPT-6.1 Terra", + "context_window": 272000, + "max_context_window": 872000, + "default_reasoning_level": "low", + "supported_reasoning_levels": [ + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" + ], + "input_modalities": [ + "text", + "image" + ], + "prefer_websockets": true, + "use_responses_lite": true, + "supported_in_api": true + }, { "slug": "gpt-6-astra", "display_name": "GPT-6-Astra",