chore: remove go-genai fork

Kujtim Hoxha created

Change summary

go.mod                           |  4 ++--
go.sum                           |  4 ++--
providers/anthropic/anthropic.go | 20 +++-----------------
providers/anthropic/google.go    | 11 -----------
providers/bedrock/bedrock.go     |  2 --
providers/google/auth.go         | 15 ---------------
providers/google/google.go       | 15 +--------------
providertests/google_test.go     |  3 ---
8 files changed, 8 insertions(+), 66 deletions(-)

Detailed changes

go.mod 🔗

@@ -3,10 +3,8 @@ module charm.land/fantasy
 go 1.24.5
 
 require (
-	cloud.google.com/go/auth v0.17.0
 	github.com/anthropics/anthropic-sdk-go v1.14.0
 	github.com/aws/aws-sdk-go-v2/config v1.27.27
-	github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97
 	github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5
 	github.com/charmbracelet/x/json v0.2.0
 	github.com/go-viper/mapstructure/v2 v2.4.0
@@ -18,11 +16,13 @@ require (
 	github.com/tidwall/sjson v1.2.5
 	go.yaml.in/yaml/v4 v4.0.0-rc.2
 	golang.org/x/oauth2 v0.32.0
+	google.golang.org/genai v1.32.0
 	gopkg.in/dnaeon/go-vcr.v4 v4.0.6-0.20250923044825-7b4892dd3117
 )
 
 require (
 	cloud.google.com/go v0.116.0 // indirect
+	cloud.google.com/go/auth v0.17.0 // indirect
 	cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
 	cloud.google.com/go/compute/metadata v0.8.0 // indirect
 	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect

go.sum 🔗

@@ -44,8 +44,6 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudr
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ=
 github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M=
 github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
-github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97 h1:HK7B5Q+0FidxjQD5CovniMw7axkUeMHwgVkxkbmiW/s=
-github.com/charmbracelet/go-genai v0.0.0-20251021165952-9befde14ce97/go.mod h1:ZagL2esO4qxlOJBj0d4PVvLM82akQFtne8s3ivxBnTQ=
 github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 h1:DTSZxdV9qQagD4iGcAt9RgaRBZtJl01bfKgdLzUzUPI=
 github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5/go.mod h1:vI5nDVMWi6veaYH+0Fmvpbe/+cv/iJfMntdh+N0+Tms=
 github.com/charmbracelet/x/json v0.2.0 h1:DqB+ZGx2h+Z+1s98HOuOyli+i97wsFQIxP2ZQANTPrQ=
@@ -139,6 +137,8 @@ golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
 golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
 google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo=
 google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50=
+google.golang.org/genai v1.32.0 h1:kku/m3kWOncjnw8EIa2sgmrPLhaxFHaP+uqOq5ZckvI=
+google.golang.org/genai v1.32.0/go.mod h1:7pAilaICJlQBonjKKJNhftDFv3SREhZcTe9F6nRcjbg=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
 google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4=

providers/anthropic/anthropic.go 🔗

@@ -39,7 +39,6 @@ type options struct {
 
 	vertexProject  string
 	vertexLocation string
-	skipAuth       bool
 
 	useBedrock bool
 }
@@ -87,13 +86,6 @@ func WithVertex(project, location string) Option {
 	}
 }
 
-// WithSkipAuth configures whether to skip authentication for the Anthropic provider.
-func WithSkipAuth(skip bool) Option {
-	return func(o *options) {
-		o.skipAuth = skip
-	}
-}
-
 // WithBedrock configures the Anthropic provider to use AWS Bedrock with default config.
 func WithBedrock() Option {
 	return func(o *options) {
@@ -137,15 +129,9 @@ func (a *provider) LanguageModel(ctx context.Context, modelID string) (fantasy.L
 		clientOptions = append(clientOptions, option.WithHTTPClient(a.options.client))
 	}
 	if a.options.vertexProject != "" && a.options.vertexLocation != "" {
-		var credentials *google.Credentials
-		if a.options.skipAuth {
-			credentials = &google.Credentials{TokenSource: &googleDummyTokenSource{}}
-		} else {
-			var err error
-			credentials, err = google.FindDefaultCredentials(ctx)
-			if err != nil {
-				return nil, err
-			}
+		credentials, err := google.FindDefaultCredentials(ctx)
+		if err != nil {
+			return nil, err
 		}
 
 		clientOptions = append(

providers/anthropic/google.go 🔗

@@ -1,11 +0,0 @@
-package anthropic
-
-import (
-	"golang.org/x/oauth2"
-)
-
-type googleDummyTokenSource struct{}
-
-func (googleDummyTokenSource) Token() (*oauth2.Token, error) {
-	return &oauth2.Token{AccessToken: "dummy-token"}, nil
-}

providers/bedrock/bedrock.go 🔗

@@ -8,7 +8,6 @@ import (
 )
 
 type options struct {
-	skipAuth         bool
 	anthropicOptions []anthropic.Option
 }
 
@@ -31,7 +30,6 @@ func New(opts ...Option) (fantasy.Provider, error) {
 			o.anthropicOptions,
 			anthropic.WithName(Name),
 			anthropic.WithBedrock(),
-			anthropic.WithSkipAuth(o.skipAuth),
 		)...,
 	)
 }

providers/google/auth.go 🔗

@@ -1,15 +0,0 @@
-// Package google provides an implementation of the fantasy AI SDK for Google's language models.
-package google
-
-import (
-	"context"
-
-	"cloud.google.com/go/auth"
-)
-
-type dummyTokenProvider struct{}
-
-// Token implements the auth.TokenProvider interface.
-func (dummyTokenProvider) Token(_ context.Context) (*auth.Token, error) {
-	return &auth.Token{Value: "dummy-token"}, nil
-}

providers/google/google.go 🔗

@@ -12,10 +12,9 @@ import (
 
 	"charm.land/fantasy"
 	"charm.land/fantasy/providers/anthropic"
-	"cloud.google.com/go/auth"
-	"github.com/charmbracelet/go-genai"
 	"github.com/charmbracelet/x/exp/slice"
 	"github.com/google/uuid"
+	"google.golang.org/genai"
 )
 
 // Name is the name of the Google provider.
@@ -37,7 +36,6 @@ type options struct {
 	backend        genai.Backend
 	project        string
 	location       string
-	skipAuth       bool
 	toolCallIDFunc ToolCallIDFunc
 }
 
@@ -93,13 +91,6 @@ func WithVertex(project, location string) Option {
 	}
 }
 
-// WithSkipAuth configures whether to skip authentication for the Google provider.
-func WithSkipAuth(skipAuth bool) Option {
-	return func(o *options) {
-		o.skipAuth = skipAuth
-	}
-}
-
 // WithName sets the name for the Google provider.
 func WithName(name string) Option {
 	return func(o *options) {
@@ -145,7 +136,6 @@ func (a *provider) LanguageModel(ctx context.Context, modelID string) (fantasy.L
 		p, err := anthropic.New(
 			anthropic.WithVertex(a.options.project, a.options.location),
 			anthropic.WithHTTPClient(a.options.client),
-			anthropic.WithSkipAuth(a.options.skipAuth),
 		)
 		if err != nil {
 			return nil, err
@@ -160,9 +150,6 @@ func (a *provider) LanguageModel(ctx context.Context, modelID string) (fantasy.L
 		Project:    a.options.project,
 		Location:   a.options.location,
 	}
-	if a.options.skipAuth {
-		cc.Credentials = &auth.Credentials{TokenProvider: dummyTokenProvider{}}
-	}
 
 	if a.options.baseURL != "" || len(a.options.headers) > 0 {
 		headers := http.Header{}

providertests/google_test.go 🔗

@@ -30,8 +30,6 @@ func TestGoogleCommon(t *testing.T) {
 		pairs = append(pairs, builderPair{m.name, geminiBuilder(m.model), nil, nil})
 	}
 	for _, m := range vertexTestModels {
-		// TODO: fixme
-		continue
 		pairs = append(pairs, builderPair{m.name, vertexBuilder(m.model), nil, nil})
 	}
 	testCommon(t, pairs)
@@ -99,7 +97,6 @@ func vertexBuilder(model string) builderFunc {
 		provider, err := google.New(
 			google.WithVertex(os.Getenv("FANTASY_VERTEX_PROJECT"), os.Getenv("FANTASY_VERTEX_LOCATION")),
 			google.WithHTTPClient(&http.Client{Transport: r}),
-			google.WithSkipAuth(!r.IsRecording()),
 			google.WithToolCallIDFunc(generateIDMock()),
 		)
 		if err != nil {