diff --git a/go.mod b/go.mod index dccd0d88a9d5d747698f36586e9e95dbb368e7d0..98f73302708b419571fcd2145ccf115e8a64fb4f 100644 --- a/go.mod +++ b/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 diff --git a/go.sum b/go.sum index 946734ba29ad0db629c750f6608ea5d82a557ef7..5f43551a41bd7781a01ff269a8b24b5d328deff6 100644 --- a/go.sum +++ b/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= diff --git a/providers/anthropic/anthropic.go b/providers/anthropic/anthropic.go index 516178c778b023621cbf65f93ec5e29137e113a8..c42cac0d23ecc35ba62e7722b63bb9870b0a6a72 100644 --- a/providers/anthropic/anthropic.go +++ b/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( diff --git a/providers/anthropic/google.go b/providers/anthropic/google.go deleted file mode 100644 index a4e4ece32947fbec0cd832e0e163c8265e191da1..0000000000000000000000000000000000000000 --- a/providers/anthropic/google.go +++ /dev/null @@ -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 -} diff --git a/providers/bedrock/bedrock.go b/providers/bedrock/bedrock.go index b927322d3bbf7c81270d098537d084cb0b2d27b3..44c9102eb191b2d9547ad57de38cff7548b95c2f 100644 --- a/providers/bedrock/bedrock.go +++ b/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), )..., ) } diff --git a/providers/google/auth.go b/providers/google/auth.go deleted file mode 100644 index c993c1be175be71e64502af41f4e94856287dfc1..0000000000000000000000000000000000000000 --- a/providers/google/auth.go +++ /dev/null @@ -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 -} diff --git a/providers/google/google.go b/providers/google/google.go index 2cda50752a7935ae826d546b71e438abda354a34..18baa300cdf4b9a009960c4da5fd165733b20476 100644 --- a/providers/google/google.go +++ b/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{} diff --git a/providertests/google_test.go b/providertests/google_test.go index 74202ee7e925c88e52940ce992c7dae53ad79d91..fc8ef4066b51e73cf800b65173127cb3ea88f41f 100644 --- a/providertests/google_test.go +++ b/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 {