package models import "strings" var anthropicToCursor = map[string]string{ "claude-opus-4-6": "opus-4.6", "claude-opus-4.6": "opus-4.6", "claude-sonnet-4-6": "sonnet-4.6", "claude-sonnet-4.6": "sonnet-4.6", "claude-opus-4-5": "opus-4.5", "claude-opus-4.5": "opus-4.5", "claude-sonnet-4-5": "sonnet-4.5", "claude-sonnet-4.5": "sonnet-4.5", "claude-opus-4": "opus-4.6", "claude-sonnet-4": "sonnet-4.6", "claude-haiku-4-5-20251001": "sonnet-4.5", "claude-haiku-4-5": "sonnet-4.5", "claude-haiku-4-6": "sonnet-4.6", "claude-haiku-4": "sonnet-4.5", "claude-opus-4-6-thinking": "opus-4.6-thinking", "claude-sonnet-4-6-thinking": "sonnet-4.6-thinking", "claude-opus-4-5-thinking": "opus-4.5-thinking", "claude-sonnet-4-5-thinking": "sonnet-4.5-thinking", } type ModelAlias struct { CursorID string AnthropicID string Name string } var cursorToAnthropicAlias = []ModelAlias{ {"opus-4.6", "claude-opus-4-6", "Claude 4.6 Opus"}, {"opus-4.6-thinking", "claude-opus-4-6-thinking", "Claude 4.6 Opus (Thinking)"}, {"sonnet-4.6", "claude-sonnet-4-6", "Claude 4.6 Sonnet"}, {"sonnet-4.6-thinking", "claude-sonnet-4-6-thinking", "Claude 4.6 Sonnet (Thinking)"}, {"opus-4.5", "claude-opus-4-5", "Claude 4.5 Opus"}, {"opus-4.5-thinking", "claude-opus-4-5-thinking", "Claude 4.5 Opus (Thinking)"}, {"sonnet-4.5", "claude-sonnet-4-5", "Claude 4.5 Sonnet"}, {"sonnet-4.5-thinking", "claude-sonnet-4-5-thinking", "Claude 4.5 Sonnet (Thinking)"}, } func ResolveToCursorModel(requested string) string { if strings.TrimSpace(requested) == "" { return "" } key := strings.ToLower(strings.TrimSpace(requested)) if v, ok := anthropicToCursor[key]; ok { return v } return strings.TrimSpace(requested) } type AnthropicAlias struct { ID string Name string } func GetAnthropicModelAliases(availableCursorIDs []string) []AnthropicAlias { set := make(map[string]bool, len(availableCursorIDs)) for _, id := range availableCursorIDs { set[id] = true } var result []AnthropicAlias for _, a := range cursorToAnthropicAlias { if set[a.CursorID] { result = append(result, AnthropicAlias{ID: a.AnthropicID, Name: a.Name}) } } return result }