From 72ac39cb2bac5c176dd1277c9482334d0441286f Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 10 Jun 2026 23:59:21 +0300 Subject: Replace panics with returned errors in llm.RegisterProvider RegisterProvider now returns an error for an empty name, a nil factory, or a duplicate registration instead of panicking, making registration composable and testable without recover(). RegisterAllProviders caches the one-time registration error (sync.Once cannot return a value) and returns it to every caller. Updated all call sites: hexailsp, hexaicli and hexaiaction propagate the error with context; test TestMains fail fast via panic. Added unit tests covering empty name, nil factory, duplicate, success and idempotent re-registration. Co-Authored-By: Claude Opus 4.8 --- internal/llmutils/client_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'internal/llmutils') diff --git a/internal/llmutils/client_test.go b/internal/llmutils/client_test.go index 3e302d7..f1a4758 100644 --- a/internal/llmutils/client_test.go +++ b/internal/llmutils/client_test.go @@ -10,7 +10,9 @@ import ( // TestMain registers all built-in LLM providers before tests run. func TestMain(m *testing.M) { - llm.RegisterAllProviders() + if err := llm.RegisterAllProviders(); err != nil { + panic(err) + } os.Exit(m.Run()) } -- cgit v1.2.3