-// dataDir returns the data directory and creates it with mode 0700 when it
-// does not exist. It is ONECHAT_DIR when that is set. Otherwise it is
-// $XDG_DATA_HOME/onechat when XDG_DATA_HOME is an absolute path, or else
-// ~/.local/share/onechat.
-func dataDir() (string, error) {
- dir := os.Getenv("ONECHAT_DIR")
- if dir == "" {
- var err error
- dir, err = defaultDataDir()
- if err != nil {
- return "", err
- }
- }
-
- err := os.MkdirAll(dir, 0o700)
- if err != nil {
- return "", fmt.Errorf("create data directory: %w", err)
- }
-
- return dir, nil
-}
-
-// defaultDataDir returns the data directory for an unset ONECHAT_DIR. The XDG
-// specification says to ignore a relative XDG_DATA_HOME.
-func defaultDataDir() (string, error) {
- xdg := os.Getenv("XDG_DATA_HOME")
- if filepath.IsAbs(xdg) {
- return filepath.Join(xdg, "onechat"), nil
- }
-
- home, err := os.UserHomeDir()
- if err != nil {
- return "", fmt.Errorf("find data directory: set ONECHAT_DIR: %w", err)
+// defaultConfig returns the settings that apply when config.json does not
+// set them.
+func defaultConfig() Config {
+ return Config{
+ Endpoint: configEndpointChatGPT,
+ Compactor: ModelConfig{
+ Model: "gpt-6.1-sol",
+ Effort: "high",
+ },