Skip to content

chore: cherry-pick specific commits into release 2.24 #18684

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: release/2.24
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 0 additions & 89 deletions cli/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ import (
"github.com/coder/serpent"
"github.com/coder/wgtunnel/tunnelsdk"

"github.com/coder/coder/v2/coderd/ai"
"github.com/coder/coder/v2/coderd/entitlements"
"github.com/coder/coder/v2/coderd/notifications/reports"
"github.com/coder/coder/v2/coderd/runtimeconfig"
Expand Down Expand Up @@ -611,22 +610,6 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
)
}

aiProviders, err := ReadAIProvidersFromEnv(os.Environ())
if err != nil {
return xerrors.Errorf("read ai providers from env: %w", err)
}
vals.AI.Value.Providers = append(vals.AI.Value.Providers, aiProviders...)
for _, provider := range aiProviders {
logger.Debug(
ctx, "loaded ai provider",
slog.F("type", provider.Type),
)
}
languageModels, err := ai.ModelsFromConfig(ctx, vals.AI.Value.Providers)
if err != nil {
return xerrors.Errorf("create language models: %w", err)
}

realIPConfig, err := httpmw.ParseRealIPConfig(vals.ProxyTrustedHeaders, vals.ProxyTrustedOrigins)
if err != nil {
return xerrors.Errorf("parse real ip config: %w", err)
Expand Down Expand Up @@ -657,7 +640,6 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
CacheDir: cacheDir,
GoogleTokenValidator: googleTokenValidator,
ExternalAuthConfigs: externalAuthConfigs,
LanguageModels: languageModels,
RealIPConfig: realIPConfig,
SSHKeygenAlgorithm: sshKeygenAlgorithm,
TracerProvider: tracerProvider,
Expand Down Expand Up @@ -2642,77 +2624,6 @@ func redirectHTTPToHTTPSDeprecation(ctx context.Context, logger slog.Logger, inv
}
}

func ReadAIProvidersFromEnv(environ []string) ([]codersdk.AIProviderConfig, error) {
// The index numbers must be in-order.
sort.Strings(environ)

var providers []codersdk.AIProviderConfig
for _, v := range serpent.ParseEnviron(environ, "CODER_AI_PROVIDER_") {
tokens := strings.SplitN(v.Name, "_", 2)
if len(tokens) != 2 {
return nil, xerrors.Errorf("invalid env var: %s", v.Name)
}

providerNum, err := strconv.Atoi(tokens[0])
if err != nil {
return nil, xerrors.Errorf("parse number: %s", v.Name)
}

var provider codersdk.AIProviderConfig
switch {
case len(providers) < providerNum:
return nil, xerrors.Errorf(
"provider num %v skipped: %s",
len(providers),
v.Name,
)
case len(providers) == providerNum:
// At the next next provider.
providers = append(providers, provider)
case len(providers) == providerNum+1:
// At the current provider.
provider = providers[providerNum]
}

key := tokens[1]
switch key {
case "TYPE":
provider.Type = v.Value
case "API_KEY":
provider.APIKey = v.Value
case "BASE_URL":
provider.BaseURL = v.Value
case "MODELS":
provider.Models = strings.Split(v.Value, ",")
}
providers[providerNum] = provider
}
for _, envVar := range environ {
tokens := strings.SplitN(envVar, "=", 2)
if len(tokens) != 2 {
continue
}
switch tokens[0] {
case "OPENAI_API_KEY":
providers = append(providers, codersdk.AIProviderConfig{
Type: "openai",
APIKey: tokens[1],
})
case "ANTHROPIC_API_KEY":
providers = append(providers, codersdk.AIProviderConfig{
Type: "anthropic",
APIKey: tokens[1],
})
case "GOOGLE_API_KEY":
providers = append(providers, codersdk.AIProviderConfig{
Type: "google",
APIKey: tokens[1],
})
}
}
return providers, nil
}

// ReadExternalAuthProvidersFromEnv is provided for compatibility purposes with
// the viper CLI.
func ReadExternalAuthProvidersFromEnv(environ []string) ([]codersdk.ExternalAuthConfig, error) {
Expand Down
3 changes: 0 additions & 3 deletions cli/testdata/server-config.yaml.golden
Original file line number Diff line number Diff line change
Expand Up @@ -526,9 +526,6 @@ client:
# Support links to display in the top right drop down menu.
# (default: <unset>, type: struct[[]codersdk.LinkConfig])
supportLinks: []
# Configure AI providers.
# (default: <unset>, type: struct[codersdk.AIConfig])
ai: {}
# External Authentication providers.
# (default: <unset>, type: struct[[]codersdk.ExternalAuthConfig])
externalAuthProviders: []
Expand Down
167 changes: 0 additions & 167 deletions coderd/ai/ai.go

This file was deleted.

Loading
Loading