Files
Local-Cursor/internal/backend/server/config/revision.go

34 lines
824 B
Go
Raw Normal View History

package config
import (
"crypto/sha256"
"encoding/hex"
"encoding/json"
"errors"
)
var ErrConfigConflict = errors.New("CONFIG_CONFLICT: 配置已在其他窗口更改,请重新加载后再保存;当前编辑内容已保留")
func cloneConfig(cfg Config) Config {
cfg.ModelAdapters = append([]ModelAdapterConfig(nil), cfg.ModelAdapters...)
if cfg.HomeMetrics.PersistentMode != nil {
value := *cfg.HomeMetrics.PersistentMode
cfg.HomeMetrics.PersistentMode = &value
}
return cfg
}
func withRevision(cfg Config) Config {
cfg = cloneConfig(cfg)
view := cloneConfig(cfg)
view.Revision = ""
view.LastAgentModelHash = ""
for i := range view.ModelAdapters {
view.ModelAdapters[i].ID = ""
}
data, _ := json.Marshal(view)
sum := sha256.Sum256(data)
cfg.Revision = hex.EncodeToString(sum[:])
return cfg
}