feat(ai): add gpt-5.2-codex to OpenAI provider (#730)

* feat(ai): add gpt-5.2-codex to OpenAI provider

* fix(ai): avoid build break when model generation misses providers
This commit is contained in:
Anton 2026-01-14 13:21:01 -08:00 committed by GitHub
parent 9a438465eb
commit 5a795b9857
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 87 additions and 26 deletions

View file

@ -12,12 +12,17 @@ for (const [provider, models] of Object.entries(MODELS)) {
modelRegistry.set(provider, providerModels);
}
type ModelApi<
TProvider extends KnownProvider,
TModelId extends keyof (typeof MODELS)[TProvider],
> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;
type ModelApi<TProvider extends KnownProvider, TModelId extends string> = TProvider extends keyof typeof MODELS
? TModelId extends keyof (typeof MODELS)[TProvider]
? (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi }
? TApi extends Api
? TApi
: Api
: Api
: Api
: Api;
export function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(
export function getModel<TProvider extends KnownProvider, TModelId extends string>(
provider: TProvider,
modelId: TModelId,
): Model<ModelApi<TProvider, TModelId>> {
@ -29,11 +34,9 @@ export function getProviders(): KnownProvider[] {
return Array.from(modelRegistry.keys()) as KnownProvider[];
}
export function getModels<TProvider extends KnownProvider>(
provider: TProvider,
): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {
export function getModels<TProvider extends KnownProvider>(provider: TProvider): Model<ModelApi<TProvider, string>>[] {
const models = modelRegistry.get(provider);
return models ? (Array.from(models.values()) as Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[]) : [];
return models ? (Array.from(models.values()) as Model<ModelApi<TProvider, string>>[]) : [];
}
export function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage["cost"] {