Spaces:
Paused
Paused
| package lib | |
| import ( | |
| "fmt" | |
| "plandex-cli/auth" | |
| "plandex-cli/term" | |
| "github.com/fatih/color" | |
| ) | |
| func PromptSyncModelsIfNeeded() error { | |
| var changes []string | |
| var onApprove []func() error | |
| userId := auth.Current.UserId | |
| if userId == "" { | |
| return fmt.Errorf("auth.Current.UserId is empty") | |
| } | |
| customModelsPath := GetCustomModelsPath(userId) | |
| customModelsRes, err := CustomModelsCheckLocalChanges(customModelsPath) | |
| if err != nil { | |
| return fmt.Errorf("error checking custom models: %v", err) | |
| } | |
| if customModelsRes.HasLocalChanges { | |
| changes = append( | |
| changes, | |
| fmt.Sprintf("%s → %s", color.New(term.ColorHiCyan, color.Bold).Sprint("Custom models"), customModelsPath)) | |
| onApprove = append(onApprove, SyncCustomModels) | |
| } | |
| defaultModelSettingsRes, err := ModelSettingsCheckLocalChanges(DefaultModelSettingsPath) | |
| if err != nil { | |
| return fmt.Errorf("error checking default model settings: %v", err) | |
| } | |
| if defaultModelSettingsRes.HasLocalChanges { | |
| changes = append( | |
| changes, | |
| fmt.Sprintf("%s → %s", color.New(term.ColorHiCyan, color.Bold).Sprint("Default model settings"), DefaultModelSettingsPath)) | |
| onApprove = append(onApprove, SyncDefaultModelSettings) | |
| } | |
| planModelSettingsRes, err := ModelSettingsCheckLocalChanges(GetPlanModelSettingsPath(CurrentPlanId)) | |
| if err != nil { | |
| return fmt.Errorf("error checking plan model settings: %v", err) | |
| } | |
| if planModelSettingsRes.HasLocalChanges { | |
| changes = append( | |
| changes, | |
| fmt.Sprintf("%s → %s", color.New(term.ColorHiCyan, color.Bold).Sprint("Plan model settings"), GetPlanModelSettingsPath(CurrentPlanId))) | |
| onApprove = append(onApprove, SyncPlanModelSettings) | |
| } | |
| if len(changes) == 0 { | |
| return nil | |
| } | |
| term.StopSpinner() | |
| color.New(color.Bold, term.ColorHiYellow).Println("⚠️ Model settings have local changes") | |
| fmt.Println() | |
| for _, change := range changes { | |
| fmt.Println(change) | |
| } | |
| fmt.Println() | |
| shouldSave, err := term.ConfirmYesNo("Save changes now?") | |
| if err != nil { | |
| return fmt.Errorf("error confirming: %v", err) | |
| } | |
| if !shouldSave { | |
| return nil | |
| } | |
| for _, fn := range onApprove { | |
| err := fn() | |
| if err != nil { | |
| return fmt.Errorf("error syncing models: %v", err) | |
| } | |
| } | |
| return nil | |
| } | |