package config import ( "encoding/json" "os" "path/filepath" ) // Config holds application configuration type Config struct { Model string `json:"model"` SystemPrompt string `json:"system_prompt"` History []string `json:"history"` } // LoadConfig loads the configuration from disk func LoadConfig() (*Config, error) { homeDir, err := os.UserHomeDir() if err != nil { return nil, err } configDir := filepath.Join(homeDir, ".config", "lazykimi") if err := os.MkdirAll(configDir, 0755); err != nil { return nil, err } configFile := filepath.Join(configDir, "config.json") if _, err := os.Stat(configFile); os.IsNotExist(err) { // Create default config config := &Config{ Model: "kimi-k1.5-preview-chat", SystemPrompt: "You are a helpful assistant.", History: []string{}, } return config, config.Save() } data, err := os.ReadFile(configFile) if err != nil { return nil, err } var config Config if err := json.Unmarshal(data, &config); err != nil { return nil, err } return &config, nil } // Save persists configuration to disk func (c *Config) Save() error { homeDir, err := os.UserHomeDir() if err != nil { return err } configDir := filepath.Join(homeDir, ".config", "lazykimi") configFile := filepath.Join(configDir, "config.json") data, err := json.MarshalIndent(c, "", " ") if err != nil { return err } return os.WriteFile(configFile, data, 0644) }