on main help sign in
fix(bedrock): enforce `us-east-1` as region for bedrock (#2985)
74b84f6Andrey Nering
go.mod+4−4
@@ -5,9 +5,9 @@ go 1.26.3
5require (
5require (
6 charm.land/bubbles/v2 v2.1.0
6 charm.land/bubbles/v2 v2.1.0
7 charm.land/bubbletea/v2 v2.0.6
7 charm.land/bubbletea/v2 v2.0.6
8− charm.land/catwalk v0.41.3
8+ charm.land/catwalk v0.41.7
9 charm.land/fang/v2 v2.0.1
9 charm.land/fang/v2 v2.0.1
10− charm.land/fantasy v0.25.1
10+ charm.land/fantasy v0.25.2
11 charm.land/glamour/v2 v2.0.0
11 charm.land/glamour/v2 v2.0.0
12 charm.land/lipgloss/v2 v2.0.3
12 charm.land/lipgloss/v2 v2.0.3
13 charm.land/log/v2 v2.0.0
13 charm.land/log/v2 v2.0.0
@@ -67,9 +67,9 @@ require (
67 github.com/tidwall/sjson v1.2.5
67 github.com/tidwall/sjson v1.2.5
68 github.com/zeebo/xxh3 v1.1.0
68 github.com/zeebo/xxh3 v1.1.0
69 go.uber.org/goleak v1.3.0
69 go.uber.org/goleak v1.3.0
70− golang.org/x/net v0.54.0
70+ golang.org/x/net v0.55.0
71 golang.org/x/sync v0.20.0
71 golang.org/x/sync v0.20.0
72− golang.org/x/sys v0.44.0
72+ golang.org/x/sys v0.45.0
73 golang.org/x/text v0.37.0
73 golang.org/x/text v0.37.0
74 gopkg.in/natefinch/lumberjack.v2 v2.2.1
74 gopkg.in/natefinch/lumberjack.v2 v2.2.1
75 gopkg.in/yaml.v3 v3.0.1
75 gopkg.in/yaml.v3 v3.0.1
go.sum+8−8
@@ -2,12 +2,12 @@ charm.land/bubbles/v2 v2.1.0 h1:YSnNh5cPYlYjPxRrzs5VEn3vwhtEn3jVGRBT3M7/I0g=
2charm.land/bubbles/v2 v2.1.0/go.mod h1:l97h4hym2hvWBVfmJDtrEHHCtkIKeTEb3TTJ4ZOB3wY=
2charm.land/bubbles/v2 v2.1.0/go.mod h1:l97h4hym2hvWBVfmJDtrEHHCtkIKeTEb3TTJ4ZOB3wY=
3charm.land/bubbletea/v2 v2.0.6 h1:UHN/91OyuhaOFGSrBXQ/hMZD8IO1Uc4BvHlgHXL2WJo=
3charm.land/bubbletea/v2 v2.0.6 h1:UHN/91OyuhaOFGSrBXQ/hMZD8IO1Uc4BvHlgHXL2WJo=
4charm.land/bubbletea/v2 v2.0.6/go.mod h1:MH/D8ZLlN3op37vQvijKuU29g3rqTp+aQapURFonF9g=
4charm.land/bubbletea/v2 v2.0.6/go.mod h1:MH/D8ZLlN3op37vQvijKuU29g3rqTp+aQapURFonF9g=
5−charm.land/catwalk v0.41.3 h1:Ft02rkrPVrgWnaGAllcPx7+6yki7/cL7h2f3Bv1aRCM=
5+charm.land/catwalk v0.41.7 h1:zUlnSxJGaw0c3UWnzbX/oP9qqw5KLwP1qCbEvL/Skeg=
6−charm.land/catwalk v0.41.3/go.mod h1:LmMFJdRqF5F7qKa+xqD9SBq7tph7L98GU3ZFa1TxftA=
6+charm.land/catwalk v0.41.7/go.mod h1:dtK2+UfdsFJgIriRPodMsSJw0XefrFOq6fdvuS57v3s=
7charm.land/fang/v2 v2.0.1 h1:zQCM8JQJ1JnQX/66B5jlCYBUxL2as5JXQZ2KJ6EL0mY=
7charm.land/fang/v2 v2.0.1 h1:zQCM8JQJ1JnQX/66B5jlCYBUxL2as5JXQZ2KJ6EL0mY=
8charm.land/fang/v2 v2.0.1/go.mod h1:S1GmkpcvK+OB5w9caywUnJcsMew45Ot8FXqoz8ALrII=
8charm.land/fang/v2 v2.0.1/go.mod h1:S1GmkpcvK+OB5w9caywUnJcsMew45Ot8FXqoz8ALrII=
9−charm.land/fantasy v0.25.1 h1:xGDRDC9R/h72A67ACbZcJ8vP2zgF4qTJbKX4SnzUNiw=
9+charm.land/fantasy v0.25.2 h1:K7ZOM3UEay//NHfiFAeIMRaOqhspxe0UyccIJOYrjuo=
10−charm.land/fantasy v0.25.1/go.mod h1:qQasIyQ0QBH2EYb4JLuPGDggha9Gw7u1mX9hFfQv84M=
10+charm.land/fantasy v0.25.2/go.mod h1:9ykD5gjn8BCjpZqA66vet7H1KsmR+kP0Q0qw1FiqCk0=
11charm.land/glamour/v2 v2.0.0 h1:IDBoqLEy7Hdpb9VOXN+khLP/XSxtJy1VsHuW/yF87+U=
11charm.land/glamour/v2 v2.0.0 h1:IDBoqLEy7Hdpb9VOXN+khLP/XSxtJy1VsHuW/yF87+U=
12charm.land/glamour/v2 v2.0.0/go.mod h1:kjq9WB0s8vuUYZNYey2jp4Lgd9f4cKdzAw88FZtpj/w=
12charm.land/glamour/v2 v2.0.0/go.mod h1:kjq9WB0s8vuUYZNYey2jp4Lgd9f4cKdzAw88FZtpj/w=
13charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU=
13charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU=
@@ -488,8 +488,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
488golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
488golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
489golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
489golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
490golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
490golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
491−golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
491+golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
492−golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
492+golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
493golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
493golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
494golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
494golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
495golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
495golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -516,8 +516,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
516golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
516golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
517golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
517golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
518golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
518golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
519−golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
519+golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
520−golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
520+golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
521golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
521golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
522golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
522golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
523golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
523golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
internal/config/load.go+1−10
@@ -298,22 +298,13 @@ func (c *Config) configureProviders(store *ConfigStore, env env.Env, resolver Va
298 prepared.BaseURL = endpoint
298 prepared.BaseURL = endpoint
299 prepared.ExtraParams["apiVersion"] = env.Get("AZURE_OPENAI_API_VERSION")
299 prepared.ExtraParams["apiVersion"] = env.Get("AZURE_OPENAI_API_VERSION")
300 case catwalk.InferenceProviderBedrock:
300 case catwalk.InferenceProviderBedrock:
301− if !hasAWSCredentials(env) {
301+ if p.APIKey == "" && !hasAWSCredentials(env) {
302 if configExists {
302 if configExists {
303 slog.Warn("Skipping Bedrock provider due to missing AWS credentials")
303 slog.Warn("Skipping Bedrock provider due to missing AWS credentials")
304 c.Providers.Del(string(p.ID))
304 c.Providers.Del(string(p.ID))
305 }
305 }
306 continue
306 continue
307 }
307 }
308− prepared.ExtraParams["region"] = env.Get("AWS_REGION")
309− if prepared.ExtraParams["region"] == "" {
310− prepared.ExtraParams["region"] = env.Get("AWS_DEFAULT_REGION")
311− }
312− for _, model := range p.Models {
313− if !strings.HasPrefix(model.ID, "anthropic.") {
314− return fmt.Errorf("bedrock provider only supports anthropic models for now, found: %s", model.ID)
315− }
316− }
317 case catwalk.InferenceProvider("hyper"):
308 case catwalk.InferenceProvider("hyper"):
318 if apiKey := env.Get("HYPER_API_KEY"); apiKey != "" {
309 if apiKey := env.Get("HYPER_API_KEY"); apiKey != "" {
319 prepared.APIKey = apiKey
310 prepared.APIKey = apiKey
internal/config/load_test.go−23
@@ -470,29 +470,6 @@ func TestConfig_configureProvidersBedrockWithoutCredentials(t *testing.T) {
470 require.Equal(t, cfg.Providers.Len(), 0)
470 require.Equal(t, cfg.Providers.Len(), 0)
471}
471}
472
472
473−func TestConfig_configureProvidersBedrockWithoutUnsupportedModel(t *testing.T) {
474− knownProviders := []catwalk.Provider{
475− {
476− ID: catwalk.InferenceProviderBedrock,
477− APIKey: "",
478− APIEndpoint: "",
479− Models: []catwalk.Model{{
480− ID: "some-random-model",
481− }},
482− },
483− }
484−
485− cfg := &Config{}
486− cfg.setDefaults("/tmp", "")
487− env := env.NewFromMap(map[string]string{
488− "AWS_ACCESS_KEY_ID": "test-key-id",
489− "AWS_SECRET_ACCESS_KEY": "test-secret-key",
490− })
491− resolver := NewShellVariableResolver(env)
492− err := cfg.configureProviders(testStore(cfg), env, resolver, knownProviders)
493− require.Error(t, err)
494−}
495−
496func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
473func TestConfig_configureProvidersVertexAIWithCredentials(t *testing.T) {
497 knownProviders := []catwalk.Provider{
474 knownProviders := []catwalk.Provider{
498 {
475 {