86 lines
2.0 KiB
Go
86 lines
2.0 KiB
Go
package agent
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
)
|
|
|
|
func getCandidates(agentScriptPath, configDirOverride string) []string {
|
|
if configDirOverride != "" {
|
|
return []string{filepath.Join(configDirOverride, "cli-config.json")}
|
|
}
|
|
|
|
var result []string
|
|
|
|
if dir := os.Getenv("CURSOR_CONFIG_DIR"); dir != "" {
|
|
result = append(result, filepath.Join(dir, "cli-config.json"))
|
|
}
|
|
|
|
if agentScriptPath != "" {
|
|
agentDir := filepath.Dir(agentScriptPath)
|
|
result = append(result, filepath.Join(agentDir, "..", "data", "config", "cli-config.json"))
|
|
}
|
|
|
|
home := os.Getenv("HOME")
|
|
if home == "" {
|
|
home = os.Getenv("USERPROFILE")
|
|
}
|
|
|
|
switch runtime.GOOS {
|
|
case "windows":
|
|
local := os.Getenv("LOCALAPPDATA")
|
|
if local == "" {
|
|
local = filepath.Join(home, "AppData", "Local")
|
|
}
|
|
result = append(result, filepath.Join(local, "cursor-agent", "cli-config.json"))
|
|
case "darwin":
|
|
result = append(result, filepath.Join(home, "Library", "Application Support", "cursor-agent", "cli-config.json"))
|
|
default:
|
|
xdg := os.Getenv("XDG_CONFIG_HOME")
|
|
if xdg == "" {
|
|
xdg = filepath.Join(home, ".config")
|
|
}
|
|
result = append(result, filepath.Join(xdg, "cursor-agent", "cli-config.json"))
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func RunMaxModePreflight(agentScriptPath, configDirOverride string) {
|
|
for _, candidate := range getCandidates(agentScriptPath, configDirOverride) {
|
|
data, err := os.ReadFile(candidate)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
// Strip BOM if present
|
|
if len(data) >= 3 && data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF {
|
|
data = data[3:]
|
|
}
|
|
|
|
var raw map[string]interface{}
|
|
if err := json.Unmarshal(data, &raw); err != nil {
|
|
continue
|
|
}
|
|
if raw == nil || len(raw) <= 1 {
|
|
continue
|
|
}
|
|
|
|
raw["maxMode"] = true
|
|
if model, ok := raw["model"].(map[string]interface{}); ok {
|
|
model["maxMode"] = true
|
|
}
|
|
|
|
out, err := json.MarshalIndent(raw, "", " ")
|
|
if err != nil {
|
|
continue
|
|
}
|
|
if err := os.WriteFile(candidate, out, 0644); err != nil {
|
|
continue
|
|
}
|
|
return
|
|
}
|
|
}
|