diff options
Diffstat (limited to 'internal/appconfig')
| -rw-r--r-- | internal/appconfig/config.go | 10 | ||||
| -rw-r--r-- | internal/appconfig/config_test.go | 28 |
2 files changed, 37 insertions, 1 deletions
diff --git a/internal/appconfig/config.go b/internal/appconfig/config.go index 63d0437..27c7e02 100644 --- a/internal/appconfig/config.go +++ b/internal/appconfig/config.go @@ -670,7 +670,15 @@ func parseSurfaceModels(raw map[string]any, logger *log.Logger) *App { return true } any := appendEntries(&out.CompletionConfigs, "models.completion", table["completion"]) - any = appendEntries(&out.CodeActionConfigs, "models.code_action", table["code_action"]) || any + if ok := appendEntries(&out.CodeActionConfigs, "models.code_action", table["code_action"]); ok { + if len(out.CodeActionConfigs) > 1 { + if logger != nil { + logger.Printf("config: models.code_action supports a single entry; ignoring %d extra", len(out.CodeActionConfigs)-1) + } + out.CodeActionConfigs = out.CodeActionConfigs[:1] + } + any = true + } any = appendEntries(&out.ChatConfigs, "models.chat", table["chat"]) || any any = appendEntries(&out.CLIConfigs, "models.cli", table["cli"]) || any if !any { diff --git a/internal/appconfig/config_test.go b/internal/appconfig/config_test.go index e7f6059..4ae04d8 100644 --- a/internal/appconfig/config_test.go +++ b/internal/appconfig/config_test.go @@ -1,6 +1,7 @@ package appconfig import ( + "bytes" "io" "log" "os" @@ -64,6 +65,33 @@ func TestLoad_Defaults_WithLogger_NoFile_NoEnv(t *testing.T) { } } +func TestParseSurfaceModels_CodeActionWarns(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, "config.toml") + writeFile(t, path, ` +[models] + [[models.code_action]] + provider = "openai" + model = "gpt-4o" + + [[models.code_action]] + provider = "copilot" + model = "cpt" +`) + var buf bytes.Buffer + logger := log.New(&buf, "", 0) + app, err := loadFromFile(path, logger) + if err != nil { + t.Fatalf("loadFromFile: %v", err) + } + if len(app.CodeActionConfigs) != 1 || app.CodeActionConfigs[0].Model != "gpt-4o" { + t.Fatalf("expected single code action entry, got %+v", app.CodeActionConfigs) + } + if msg := buf.String(); !strings.Contains(msg, "models.code_action supports a single entry") { + t.Fatalf("expected warning, got %q", msg) + } +} + func TestLoad_FileMerge_And_EnvOverride(t *testing.T) { dir := t.TempDir() t.Setenv("XDG_CONFIG_HOME", dir) |
