grokkit/config/config.go
Gregory Gauthier af7270967c fix(config): correct chat model config key
Update the Viper default key for the chat command from "commands.chat" to "commands.chat.model" to match expected structure.

Remove redundant comment in GetTimeout function for cleaner code.
2026-03-04 11:09:34 +00:00

73 lines
1.9 KiB
Go

package config
import (
"os"
"path/filepath"
"github.com/spf13/viper"
)
func Load() {
home, err := os.UserHomeDir()
if err != nil {
// Fall back to current directory if home not found
home = "."
}
configPath := filepath.Join(home, ".config", "grokkit")
viper.SetConfigName("config")
viper.SetConfigType("toml")
viper.AddConfigPath(configPath)
viper.AddConfigPath(".")
viper.AutomaticEnv()
viper.SetDefault("default_model", "grok-4")
viper.SetDefault("temperature", 0.7)
viper.SetDefault("log_level", "info")
viper.SetDefault("timeout", 60)
viper.SetDefault("commands.agent.model", "grok-4")
viper.SetDefault("commands.chat.model", "grok-4")
viper.SetDefault("commands.commit.model", "grok-4")
viper.SetDefault("commands.commitmsg.model", "grok-4")
viper.SetDefault("commands.edit.model", "grok-4")
viper.SetDefault("commands.history.model", "grok-4")
viper.SetDefault("commands.lint.model", "grok-4-1-fast-non-reasoning")
viper.SetDefault("commands.prdescribe.model", "grok-4")
viper.SetDefault("commands.review.model", "grok-4")
viper.SetDefault("commands.docs.model", "grok-4")
viper.SetDefault("commands.chat.model", "grok-4-1")
viper.SetDefault("commands.chat-agent.model", "grok-4-1-fast-non-reasoning")
// Config file is optional, so we ignore read errors
_ = viper.ReadInConfig()
}
func GetModel(commandName string, flagModel string) string {
if flagModel != "" {
if alias := viper.GetString("aliases." + flagModel); alias != "" {
return alias
}
return flagModel
}
if cmdModel := viper.GetString("commands." + commandName + ".model"); cmdModel != "" {
return cmdModel
}
return viper.GetString("default_model")
}
func GetTemperature() float64 {
return viper.GetFloat64("temperature")
}
func GetTimeout() int {
timeout := viper.GetInt("timeout")
if timeout <= 0 {
return 60
}
return timeout
}
func GetLogLevel() string {
return viper.GetString("log_level")
}