summaryrefslogtreecommitdiff
path: root/internal/appconfig
diff options
context:
space:
mode:
Diffstat (limited to 'internal/appconfig')
-rw-r--r--internal/appconfig/config.go10
-rw-r--r--internal/appconfig/config_test.go28
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)