fix: ensure adminModels is loaded before checking providers in ensureOpencodeConfig

- Add check to load adminModels if not already loaded
- Add error handling for models.dev fetch failures
- Log provider source (models.dev vs built-in) for debugging
This commit is contained in:
southseact-3d
2026-02-11 11:18:56 +00:00
parent 17792d39a0
commit 49092c3229

View File

@@ -5124,6 +5124,11 @@ async function ensureOpencodeConfig(session) {
[providerName]: providerCfg [providerName]: providerCfg
}; };
// Ensure adminModels is loaded
if (!adminModels || adminModels.length === 0) {
await loadAdminModelStore();
}
// Find which providers are used in adminModels // Find which providers are used in adminModels
const usedProviders = new Set(); const usedProviders = new Set();
for (const model of adminModels) { for (const model of adminModels) {
@@ -5165,7 +5170,15 @@ async function ensureOpencodeConfig(session) {
for (const [providerId, config] of Object.entries(providerConfigs)) { for (const [providerId, config] of Object.entries(providerConfigs)) {
if (config.apiKey && usedProviders.has(providerId)) { if (config.apiKey && usedProviders.has(providerId)) {
// Fetch all models from models.dev for this provider // Fetch all models from models.dev for this provider
const models = await fetchModelsDevProviderModels(providerId); let models = {};
try {
models = await fetchModelsDevProviderModels(providerId);
} catch (err) {
log('Failed to fetch models from models.dev, using empty models list', {
provider: providerId,
error: String(err)
});
}
providers[providerId] = { providers[providerId] = {
options: { options: {
@@ -5175,9 +5188,10 @@ async function ensureOpencodeConfig(session) {
models: models models: models
}; };
log('Configured provider with models.dev data', { log('Configured provider', {
provider: providerId, provider: providerId,
modelCount: Object.keys(models).length modelCount: Object.keys(models).length,
source: Object.keys(models).length > 0 ? 'models.dev' : 'built-in'
}); });
} }
} }