fix: handle both string and object formats in providers array

- Support providers as array of strings: [opencode, chutes]
- Support providers as array of objects: [{provider: opencode}]
- This fixes provider detection for Chutes and other providers
This commit is contained in:
southseact-3d
2026-02-11 11:41:22 +00:00
parent bddc710a90
commit b85cc73a4d

View File

@@ -5134,10 +5134,10 @@ async function ensureOpencodeConfig(session) {
log('ensureOpencodeConfig debug', { log('ensureOpencodeConfig debug', {
sessionId: session.id, sessionId: session.id,
adminModelsCount: adminModels.length, adminModelsCount: adminModels.length,
adminModelsSample: adminModels.slice(0, 2).map(m => ({ adminModelsSample: adminModels.slice(0, 3).map(m => ({
id: m.id, id: m.id,
name: m.name, name: m.name,
providers: m.providers?.map(p => p.provider), providers: m.providers,
primaryProvider: m.primaryProvider primaryProvider: m.primaryProvider
})), })),
chutesKeyExists: !!CHUTES_API_KEY, chutesKeyExists: !!CHUTES_API_KEY,
@@ -5149,7 +5149,12 @@ async function ensureOpencodeConfig(session) {
for (const model of adminModels) { for (const model of adminModels) {
if (Array.isArray(model.providers)) { if (Array.isArray(model.providers)) {
for (const p of model.providers) { for (const p of model.providers) {
if (p.provider) usedProviders.add(p.provider.toLowerCase()); // Handle both string format ["opencode", "chutes"] and object format [{provider: "opencode"}]
if (typeof p === 'string') {
usedProviders.add(p.toLowerCase());
} else if (p && typeof p === 'object' && p.provider) {
usedProviders.add(p.provider.toLowerCase());
}
} }
} }
if (model.primaryProvider) { if (model.primaryProvider) {