From e4a6723bb679b13401020bb4953cd7c4c9564e8c Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 26 Apr 2026 08:50:20 +0300 Subject: feat: optional API key for Ollama provider (Ollama Cloud) Adds an optional HEXAI_OLLAMA_API_KEY (with OLLAMA_API_KEY fallback) so the existing Ollama provider can target Ollama Cloud (ollama.ai) in addition to a local server. When the key is empty the request is unauthenticated, preserving local-server behavior byte-for-byte; when set, an Authorization: Bearer header is attached for both Chat and ChatStream. Documented cloud usage in config.toml.example. Co-Authored-By: Claude Opus 4.7 (1M context) --- internal/llm/provider_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'internal/llm/provider_test.go') diff --git a/internal/llm/provider_test.go b/internal/llm/provider_test.go index 14de7a6..2acbc69 100644 --- a/internal/llm/provider_test.go +++ b/internal/llm/provider_test.go @@ -7,13 +7,13 @@ import ( func TestNewFromConfig_DefaultsAndErrors(t *testing.T) { // Unknown provider - if _, err := NewFromConfig(Config{Provider: "bogus"}, "", "", ""); err == nil { + if _, err := NewFromConfig(Config{Provider: "bogus"}, "", "", "", ""); err == nil { t.Fatalf("expected error for unknown provider") } else if !strings.Contains(err.Error(), "supported providers:") { t.Fatalf("expected supported providers hint, got %q", err.Error()) } // OpenAI missing key - if _, err := NewFromConfig(Config{Provider: "openai", OpenAIModel: "g"}, "", "", ""); err == nil { + if _, err := NewFromConfig(Config{Provider: "openai", OpenAIModel: "g"}, "", "", "", ""); err == nil { t.Fatalf("expected key error") } else if !strings.Contains(err.Error(), "OPENAI_API_KEY") || !strings.Contains(err.Error(), "HEXAI_OPENAI_API_KEY") { t.Fatalf("expected actionable API key hint, got %q", err.Error()) -- cgit v1.2.3