experimental: codex / ai integration

This commit is contained in:
2026-07-28 20:48:00 +02:00
parent e89c524438
commit 949935a2aa
14 changed files with 2987 additions and 7 deletions

View File

@@ -120,6 +120,43 @@ syntax_theme = "gruvbox"
}
}
func TestLoadConfigParsesExperimentalAISettings(t *testing.T) {
path := filepath.Join(t.TempDir(), "config.toml")
content := `
[ai]
enabled = true
provider = "codex-cli"
model = "gpt-test"
command = "/usr/local/bin/codex"
timeout = "2m"
max_calls = 3
max_request_bytes = 64000
max_run_bytes = 128000
max_file_bytes = 32000
store_directory = "/tmp/diple-ai"
exclude = ["vendor/", "*.lock"]
[keybindings.views]
ai = ["ctrl+a"]
`
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
t.Fatal(err)
}
config, err := loadConfig(path, true)
if err != nil {
t.Fatal(err)
}
if err := validateConfig(config); err != nil {
t.Fatal(err)
}
if !config.AI.Enabled || config.AI.Model != "gpt-test" ||
config.AI.MaxCalls != 3 || config.AI.Timeout.Duration != 2*time.Minute ||
config.AI.StoreDirectory != "/tmp/diple-ai" ||
strings.Join(config.KeyBindings.Views.AI, ",") != "ctrl+a" {
t.Fatalf("AI config = %#v", config.AI)
}
}
func TestValidateConfigRejectsEmptyKeyBinding(t *testing.T) {
config := defaultConfig()
config.KeyBindings.Navigation.Down = nil