From 4958ea5100ebf8d4ff9fd818b7bc59d01989feb4 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 23 Mar 2026 08:08:57 +0200 Subject: fix: address all HIGH-severity code quality audit findings - lsp/server.go: track request goroutines in inflight WaitGroup to prevent use-after-close writes on shutdown - lsp/llm_client_registry.go: acquire write lock before calling build() to eliminate TOCTOU race on cache population - lsp/handlers_codeaction.go: resolveSimplifyCodeAction now uses PromptCodeActionSimplify{System,User} (was wrongly using rewrite prompts) - askcli/taskexport.go: remove exported MustParseTaskExport to prevent panic on malformed external input; move to unexported test helper - cmd/ask/main.go: print error to stderr before os.Exit - llm/{openai,ollama,openrouter}.go: add interface satisfaction assertions - integrationtests/ask_test.go: replace type assertions with errors.As for robust exec.ExitError unwrapping Co-Authored-By: Claude Sonnet 4.6 --- internal/llm/ollama.go | 6 ++++++ internal/llm/openai.go | 6 ++++++ internal/llm/openrouter.go | 6 ++++++ 3 files changed, 18 insertions(+) (limited to 'internal/llm') diff --git a/internal/llm/ollama.go b/internal/llm/ollama.go index ade62a9..be93ab0 100644 --- a/internal/llm/ollama.go +++ b/internal/llm/ollama.go @@ -23,6 +23,12 @@ type ollamaClient struct { defaultTemperature *float64 } +// Ensure ollamaClient implements Client and Streamer. +var ( + _ Client = ollamaClient{} + _ Streamer = ollamaClient{} +) + type ollamaChatRequest struct { Model string `json:"model"` Messages []oaMessage `json:"messages"` diff --git a/internal/llm/openai.go b/internal/llm/openai.go index eccd558..cf18d9b 100644 --- a/internal/llm/openai.go +++ b/internal/llm/openai.go @@ -24,6 +24,12 @@ type openAIClient struct { defaultTemperature *float64 } +// Ensure openAIClient implements Client and Streamer. +var ( + _ Client = openAIClient{} + _ Streamer = openAIClient{} +) + type oaChatRequest struct { Model string `json:"model"` Messages []oaMessage `json:"messages"` diff --git a/internal/llm/openrouter.go b/internal/llm/openrouter.go index 60a594a..451e9ad 100644 --- a/internal/llm/openrouter.go +++ b/internal/llm/openrouter.go @@ -21,6 +21,12 @@ type openRouterClient struct { defaultTemperature *float64 } +// Ensure openRouterClient implements Client and Streamer. +var ( + _ Client = openRouterClient{} + _ Streamer = openRouterClient{} +) + func init() { RegisterProvider("openrouter", openRouterProviderFactory) } -- cgit v1.2.3