chore: remove config dependency

Kujtim Hoxha created

Change summary

providers/examples/simple/main.go |  3 ++-
providers/examples/stream/main.go |  3 ++-
providers/openai.go               | 22 ----------------------
3 files changed, 4 insertions(+), 24 deletions(-)

Detailed changes

providers/examples/simple/main.go 🔗

@@ -3,13 +3,14 @@ package main
 import (
 	"context"
 	"fmt"
+	"os"
 
 	"github.com/charmbracelet/crush/internal/ai"
 	"github.com/charmbracelet/crush/internal/ai/providers"
 )
 
 func main() {
-	provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey("$OPENAI_API_KEY"))
+	provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey(os.Getenv("OPENAI_API_KEY")))
 	model := provider.LanguageModel("gpt-4o")
 
 	response, err := model.Generate(context.Background(), ai.Call{

providers/examples/stream/main.go 🔗

@@ -4,13 +4,14 @@ import (
 	"context"
 	"encoding/json"
 	"fmt"
+	"os"
 
 	"github.com/charmbracelet/crush/internal/ai"
 	"github.com/charmbracelet/crush/internal/ai/providers"
 )
 
 func main() {
-	provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey("$OPENAI_API_KEY"))
+	provider := providers.NewOpenAIProvider(providers.WithOpenAIApiKey(os.Getenv("OPENAI_API_KEY")))
 	model := provider.LanguageModel("gpt-4o")
 
 	stream, err := model.Stream(context.Background(), ai.Call{

providers/openai.go 🔗

@@ -11,8 +11,6 @@ import (
 	"strings"
 
 	"github.com/charmbracelet/crush/internal/ai"
-	"github.com/charmbracelet/crush/internal/config"
-	"github.com/charmbracelet/crush/internal/env"
 	"github.com/google/uuid"
 	"github.com/openai/openai-go/v2"
 	"github.com/openai/openai-go/v2/option"
@@ -59,7 +57,6 @@ type openAIProviderOptions struct {
 	name         string
 	headers      map[string]string
 	client       option.HTTPClient
-	resolver     config.VariableResolver
 }
 
 type OpenAIOption = func(*openAIProviderOptions)
@@ -72,31 +69,18 @@ func NewOpenAIProvider(opts ...OpenAIOption) ai.Provider {
 		o(&options)
 	}
 
-	if options.resolver == nil {
-		// use the default resolver
-		options.resolver = config.NewShellVariableResolver(env.New())
-	}
-	options.apiKey, _ = options.resolver.ResolveValue(options.apiKey)
-	options.baseURL, _ = options.resolver.ResolveValue(options.baseURL)
 	if options.baseURL == "" {
 		options.baseURL = "https://api.openai.com/v1"
 	}
 
-	options.name, _ = options.resolver.ResolveValue(options.name)
 	if options.name == "" {
 		options.name = "openai"
 	}
 
-	for k, v := range options.headers {
-		options.headers[k], _ = options.resolver.ResolveValue(v)
-	}
-
-	options.organization, _ = options.resolver.ResolveValue(options.organization)
 	if options.organization != "" {
 		options.headers["OpenAI-Organization"] = options.organization
 	}
 
-	options.project, _ = options.resolver.ResolveValue(options.project)
 	if options.project != "" {
 		options.headers["OpenAI-Project"] = options.project
 	}
@@ -148,12 +132,6 @@ func WithOpenAIHttpClient(client option.HTTPClient) OpenAIOption {
 	}
 }
 
-func WithOpenAIVariableResolver(resolver config.VariableResolver) OpenAIOption {
-	return func(o *openAIProviderOptions) {
-		o.resolver = resolver
-	}
-}
-
 // LanguageModel implements ai.Provider.
 func (o *openAIProvider) LanguageModel(modelID string) ai.LanguageModel {
 	openaiClientOptions := []option.RequestOption{}