fix: surface GPT-5.3 Codex for ChatGPT OAuth providers (#9379)

This commit is contained in:
Charles Packer
2026-02-08 17:57:48 -08:00
committed by Caren Thomas
parent 526da4c49b
commit b0e16ae50f
4 changed files with 105 additions and 8 deletions

View File

@@ -19,10 +19,16 @@ from letta.schemas.providers import (
VLLMProvider,
ZAIProvider,
)
from letta.schemas.providers.chatgpt_oauth import CHATGPT_MODELS
from letta.schemas.secret import Secret
from letta.settings import model_settings
def test_chatgpt_oauth_model_allowlist_includes_gpt_5_3_codex():
model_names = {model["name"] for model in CHATGPT_MODELS}
assert "gpt-5.3-codex" in model_names
def test_openai():
provider = OpenAIProvider(
name="openai",

View File

@@ -1,5 +1,6 @@
"""Tests for provider initialization via ProviderManager.sync_base_providers and provider model persistence."""
import json
import uuid
from unittest.mock import AsyncMock, MagicMock, patch
@@ -2660,6 +2661,70 @@ async def test_byok_provider_last_synced_skips_sync_when_set(default_user, provi
assert f"test-byok-cached-{test_id}/gpt-4o" in byok_handles
@pytest.mark.asyncio
async def test_chatgpt_oauth_byok_resyncs_when_allowlist_expands(
default_user, provider_manager
):
"""ChatGPT OAuth providers should backfill newly added hardcoded models."""
test_id = generate_test_id()
provider_name = f"test-chatgpt-oauth-{test_id}"
oauth_credentials = json.dumps(
{
"access_token": "test-access-token",
"refresh_token": "test-refresh-token",
"account_id": "test-account-id",
"expires_at": 4_102_444_800, # year 2100 (seconds)
}
)
byok_provider = await provider_manager.create_provider_async(
ProviderCreate(
name=provider_name,
provider_type=ProviderType.chatgpt_oauth,
api_key=oauth_credentials,
),
actor=default_user,
is_byok=True,
)
# Simulate a stale provider model cache that predates gpt-5.3-codex.
stale_models = [
LLMConfig(
model="gpt-5.2-codex",
model_endpoint_type="chatgpt_oauth",
model_endpoint="https://chatgpt.com/backend-api/codex/responses",
context_window=272000,
handle=f"{provider_name}/gpt-5.2-codex",
provider_name=provider_name,
provider_category=ProviderCategory.byok,
)
]
await provider_manager.sync_provider_models_async(
provider=byok_provider,
llm_models=stale_models,
embedding_models=[],
organization_id=default_user.organization_id,
)
await provider_manager.update_provider_last_synced_async(
byok_provider.id, actor=default_user
)
server = SyncServer(init_with_default_org_and_user=False)
server.default_user = default_user
server.provider_manager = provider_manager
server._enabled_providers = []
byok_models = await server.list_llm_models_async(
actor=default_user,
provider_category=[ProviderCategory.byok],
provider_name=provider_name,
)
byok_handles = {model.handle for model in byok_models}
assert f"{provider_name}/gpt-5.3-codex" in byok_handles
@pytest.mark.asyncio
async def test_base_provider_updates_last_synced_on_sync(default_user, provider_manager):
"""Test that base provider sync updates the last_synced timestamp."""