(timeoutMs)
| 225 | } |
| 226 | |
| 227 | async function listOpenRouterModels(timeoutMs) { |
| 228 | const result = await fetchJsonWithTimeout("https://openrouter.ai/api/v1/models", { timeoutMs }); |
| 229 | if (!result.ok) { |
| 230 | return { |
| 231 | ok: false, |
| 232 | error: `OpenRouter models API failed (${result.status})`, |
| 233 | }; |
| 234 | } |
| 235 | const models = normalizeModelEntries(result?.data?.data, "openrouter"); |
| 236 | return { ok: true, models }; |
| 237 | } |
| 238 | |
| 239 | async function listAnthropicModels(apiKey, timeoutMs) { |
| 240 | if (!apiKey || !apiKey.trim()) { |
no test coverage detected