diff --git a/src/codex-catalog.ts b/src/codex-catalog.ts index b8fd471..d22a764 100644 --- a/src/codex-catalog.ts +++ b/src/codex-catalog.ts @@ -687,7 +687,14 @@ async function fetchProviderModels(name: string, prov: OcxProviderConfig, ttlMs: return stale ? applyConfigHintsToCachedModels(name, prov, stale, contextCap) : configured; } const json = await res.json() as { data?: ProviderModelsApiItem[] }; - const live = (json.data ?? []).map(m => applyProviderConfigHints(name, prov, { + const jsonData = (json as any).data; + const models = name === "google" && prov.adapter === "google" && Array.isArray((json as any).models) + ? ((json as any).models as Array<{name?: string; displayName?: string}>).map((m: any) => ({ + id: (m.name ?? '').replace(/^models\//, ''), + owned_by: "google", + })) + : (jsonData ?? []); + const live = models.map(m => applyProviderConfigHints(name, prov, { id: m.id, provider: name, owned_by: m.owned_by, diff --git a/src/oauth/index.ts b/src/oauth/index.ts index 6e9ed1f..38c630c 100644 --- a/src/oauth/index.ts +++ b/src/oauth/index.ts @@ -195,6 +195,10 @@ export function buildModelsRequest(prov: OcxProviderConfig, apiKey: string | und } return { url: `${prov.baseUrl}/v1/models?limit=1000`, headers }; } + if (prov.adapter === "google") { + if (apiKey) headers["x-goog-api-key"] = apiKey; + return { url: ${prov.baseUrl}/v1/models, headers }; + } if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`; return { url: `${prov.baseUrl}/models`, headers }; }