diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-27 02:19:22 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-27 02:19:22 +0300 |
| commit | 51b2621d58633aa5c0f5cc7b64616d70d41acc91 (patch) | |
| tree | 0c413061a5ab8061ddeab9c3f421228737613ecb /internal/lsp/server.go | |
| parent | 1731126b52e406a300270c8fc8ac1061a4422b27 (diff) | |
Support multi-provider fan-out across CLI and completions
Diffstat (limited to 'internal/lsp/server.go')
| -rw-r--r-- | internal/lsp/server.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/internal/lsp/server.go b/internal/lsp/server.go index 28f3218..1fbb0cc 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -257,6 +257,28 @@ func (s *Server) clientFor(spec requestSpec) llm.Client { if store != nil { cfg = store.Snapshot() } + cfg.Provider = provider + modelOverride := strings.TrimSpace(spec.entry.Model) + switch provider { + case "openai": + if modelOverride != "" { + cfg.OpenAIModel = modelOverride + } else if spec.fallbackModel != "" { + cfg.OpenAIModel = spec.fallbackModel + } + case "copilot": + if modelOverride != "" { + cfg.CopilotModel = modelOverride + } else if spec.fallbackModel != "" { + cfg.CopilotModel = spec.fallbackModel + } + case "ollama": + if modelOverride != "" { + cfg.OllamaModel = modelOverride + } else if spec.fallbackModel != "" { + cfg.OllamaModel = spec.fallbackModel + } + } client, err := newClientForProvider(cfg, provider) if err != nil { logging.Logf("lsp ", "failed to build client for provider=%s: %v", provider, err) |
