diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-10 23:59:21 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-10 23:59:21 +0300 |
| commit | 72ac39cb2bac5c176dd1277c9482334d0441286f (patch) | |
| tree | 91c68a1f03f0da64a6380f90643dc108e133f8de /internal/hexaiaction | |
| parent | b9f90b4ffa8260cc906fa1b195ed0ba4aaa211df (diff) | |
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 <noreply@anthropic.com>
Diffstat (limited to 'internal/hexaiaction')
| -rw-r--r-- | internal/hexaiaction/cmdentry.go | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/internal/hexaiaction/cmdentry.go b/internal/hexaiaction/cmdentry.go index d60f172..ee78307 100644 --- a/internal/hexaiaction/cmdentry.go +++ b/internal/hexaiaction/cmdentry.go @@ -25,7 +25,9 @@ type Options struct { // RunCommand is the CLI orchestrator used by cmd/hexai-tmux-action. It runs in tmux // split-pane mode by default, or child mode when -ui-child is set. func RunCommand(ctx context.Context, opts Options, stdin io.Reader, stdout, stderr io.Writer) error { - llm.RegisterAllProviders() + if err := llm.RegisterAllProviders(); err != nil { + return fmt.Errorf("failed to register LLM providers: %w", err) + } if opts.UIChild { return runChild(ctx, opts.Infile, opts.Outfile, stdout, stderr) } |
