72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
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
|
|
}
|