1package provider
 2
 3import (
 4	"context"
 5	"log/slog"
 6	"strings"
 7
 8	"github.com/charmbracelet/crush/internal/config"
 9	"github.com/charmbracelet/crush/internal/log"
10	"google.golang.org/genai"
11)
12
13type VertexAIClient ProviderClient
14
15func newVertexAIClient(opts providerClientOptions) VertexAIClient {
16	project := opts.extraParams["project"]
17	location := opts.extraParams["location"]
18	cc := &genai.ClientConfig{
19		Project:  project,
20		Location: location,
21		Backend:  genai.BackendVertexAI,
22	}
23	if config.Get().Options.Debug {
24		cc.HTTPClient = log.NewHTTPClient()
25	}
26	client, err := genai.NewClient(context.Background(), cc)
27	if err != nil {
28		slog.Error("Failed to create VertexAI client", "error", err)
29		return nil
30	}
31
32	model := opts.model(opts.modelType)
33	if strings.Contains(model.ID, "anthropic") || strings.Contains(model.ID, "claude-sonnet") {
34		return newAnthropicClient(opts, AnthropicClientTypeVertex)
35	}
36	return &geminiClient{
37		providerOptions: opts,
38		client:          client,
39	}
40}