()
| 87 | * Returns undefined when no configured provider serves a vision-capable model. |
| 88 | */ |
| 89 | export function resolveConfiguredVisionModel(): { model: string; baseUrl: string; apiKey: string } | undefined { |
| 90 | const cfg = getActiveConfig() as any; |
| 91 | if (!cfg) return undefined; |
| 92 | const candidates: Array<{ provider?: string; model?: string }> = [ |
| 93 | { provider: cfg.defaults?.provider, model: cfg.defaults?.model }, // primary first |
| 94 | { provider: cfg.roles?.subagent?.provider, model: cfg.roles?.subagent?.model }, // then sub-agent |
| 95 | ]; |
| 96 | for (const { provider, model } of candidates) { |
| 97 | if (!model || typeof model !== 'string' || !looksVisionCapable(model)) continue; |
| 98 | const ep = resolveProviderEndpoint(cfg, provider); |
| 99 | if (ep) return { model, baseUrl: ep.baseUrl, apiKey: ep.apiKey }; |
| 100 | } |
| 101 | return undefined; |
| 102 | } |
| 103 | |
| 104 | /** Map a provider NAME to its OpenAI-compatible {baseUrl, apiKey}, or undefined if it |
| 105 | * isn't an OpenAI-compatible HTTP provider with a key set. (anthropic/ollama/lm-studio |
no test coverage detected