Documentation
¶
Overview ¶
Package model is the single source of truth for the models wingman serves: display name, capability class and token limits. Values are kept in sync with the wingman-vscode catalog (src/models.ts).
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Models = []Model{ { ID: "claude-sonnet-5-5", Namespace: "anthropic", Name: "Claude Sonnet 5.5", Class: ClassMedium, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "claude-haiku-5-5", Namespace: "anthropic", Name: "Claude Haiku 5.5", Class: ClassSmall, Output: 128000, Context: 1000000, Efforts: claudeHaiku55Efforts, }, { ID: "claude-sonnet-5", Namespace: "anthropic", Name: "Claude Sonnet 5", Class: ClassMedium, Output: 128000, Context: 1000000, }, { ID: "claude-opus-5-5", Namespace: "anthropic", Name: "Claude Opus 5.5", Class: ClassLarge, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "claude-opus-5", Namespace: "anthropic", Name: "Claude Opus 5", Class: ClassLarge, Output: 128000, Context: 1000000, }, { ID: "claude-opus-4-8", Namespace: "anthropic", Name: "Claude Opus 4.8", Class: ClassLarge, Output: 128000, Context: 1000000, }, { ID: "claude-opus-4-7", Namespace: "anthropic", Name: "Claude Opus 4.7", Class: ClassLarge, Output: 128000, Context: 1000000, }, { ID: "claude-sonnet-4-6", Namespace: "anthropic", Name: "Claude Sonnet 4.6", Class: ClassMedium, Output: 128000, Context: 1000000, }, { ID: "claude-opus-4-6", Namespace: "anthropic", Name: "Claude Opus 4.6", Class: ClassLarge, Output: 128000, Context: 1000000, }, { ID: "claude-haiku-4-6", Namespace: "anthropic", Name: "Claude Haiku 4.6", Class: ClassSmall, Output: 64000, Context: 200000, }, { ID: "claude-sonnet-4-5", Namespace: "anthropic", Name: "Claude Sonnet 4.5", Class: ClassMedium, Output: 64000, Context: 200000, }, { ID: "claude-opus-4-5", Namespace: "anthropic", Name: "Claude Opus 4.5", Class: ClassLarge, Output: 64000, Context: 200000, }, { ID: "claude-haiku-4-5", Namespace: "anthropic", Name: "Claude Haiku 4.5", Class: ClassSmall, Output: 64000, Context: 200000, }, { ID: "claude-fable-5-1", Namespace: "anthropic", Name: "Claude Fable 5.1", Class: ClassLarge, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "claude-fable-5", Namespace: "anthropic", Name: "Claude Fable 5", Class: ClassLarge, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "claude-mythos-5-1", Namespace: "anthropic", Name: "Claude Mythos 5.1", Class: ClassLarge, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "claude-mythos-5", Namespace: "anthropic", Name: "Claude Mythos 5", Class: ClassLarge, Output: 128000, Context: 1000000, Efforts: claudeAlwaysThinkingEfforts, }, { ID: "gpt-6-astra", Namespace: "openai", Name: "GPT 6 Astra", Class: ClassLarge, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Effort: "low", Efforts: gpt6AstraEfforts, Verbosity: "low", }, { ID: "gpt-6.1-sol", Namespace: "openai", Name: "GPT 6.1 Sol", Class: ClassMedium, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Effort: "low", Efforts: gpt61SolEfforts, Verbosity: "low", }, { ID: "gpt-6-sol", Namespace: "openai", Name: "GPT 6 Sol", Class: ClassMedium, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gpt6SolLunaEfforts, Verbosity: "low", }, { ID: "gpt-6-luna", Namespace: "openai", Name: "GPT 6 Luna", Class: ClassSmall, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gpt6SolLunaEfforts, Verbosity: "low", }, { ID: "gpt-5.6-sol", Aliases: []string{"gpt-5.6"}, Namespace: "openai", Name: "GPT 5.6 Sol", Class: ClassLarge, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gpt56Efforts, }, { ID: "gpt-5.6-terra", Namespace: "openai", Name: "GPT 5.6 Terra", Class: ClassMedium, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gpt56Efforts, }, { ID: "gpt-5.6-luna", Namespace: "openai", Name: "GPT 5.6 Luna", Class: ClassSmall, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gpt56Efforts, }, { ID: "gpt-5.5", Namespace: "openai", Name: "GPT 5.5", Class: ClassMedium, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gptEfforts, }, { ID: "gpt-5.4", Namespace: "openai", Name: "GPT 5.4", Class: ClassMedium, Output: 128000, Context: 1050000, ContextThreshold: 272_000, Efforts: gptEfforts, }, { ID: "gpt-5.4-mini", Namespace: "openai", Name: "GPT 5.4 Mini", Class: ClassSmall, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.3-codex", Namespace: "openai", Name: "GPT 5.3 Codex", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.3-codex-spark", Namespace: "openai", Name: "GPT 5.3 Codex Spark", Class: ClassSmall, Output: 32000, Context: 128000, Efforts: gptEfforts, }, { ID: "gpt-5.2-codex", Namespace: "openai", Name: "GPT 5.2 Codex", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.2", Namespace: "openai", Name: "GPT 5.2", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.1-codex-max", Namespace: "openai", Name: "GPT 5.1 Codex Max", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.1-codex", Namespace: "openai", Name: "GPT 5.1 Codex", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.1-codex-mini", Namespace: "openai", Name: "GPT 5.1 Codex Mini", Class: ClassSmall, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5.1", Namespace: "openai", Name: "GPT 5.1", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5-codex", Namespace: "openai", Name: "GPT 5 Codex", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5", Namespace: "openai", Name: "GPT 5", Class: ClassMedium, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gpt-5-mini", Namespace: "openai", Name: "GPT 5 Mini", Class: ClassSmall, Output: 128000, Context: 400000, Efforts: gptEfforts, }, { ID: "gemini-3.8-flash", Namespace: "google", Name: "Gemini 3.8 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-3.7-flash", Namespace: "google", Name: "Gemini 3.7 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-3.6-flash", Namespace: "google", Name: "Gemini 3.6 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-3.5-flash", Aliases: []string{"gemini-3-flash-preview"}, Namespace: "google", Name: "Gemini 3.5 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-3.5-flash-lite", Namespace: "google", Name: "Gemini 3.5 Flash Lite", Class: ClassSmall, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-3.1-pro", Aliases: []string{"gemini-3.1-pro-preview"}, Namespace: "google", Name: "Gemini 3.1 Pro", Class: ClassLarge, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "gemini-4-argon", Namespace: "google", Name: "Gemini 4 Argon", Class: ClassLarge, Context: 1048576, Output: 65536, ContextThreshold: 200_000, Efforts: gemini4ArgonEfforts, }, { ID: "gemini-3.1-flash-lite", Namespace: "google", Name: "Gemini 3.1 Flash Lite", Class: ClassSmall, Input: 1048576, Output: 65536, ContextThreshold: 200_000, }, { ID: "glm-5.3", Namespace: "z-ai", Name: "GLM 5.3", Class: ClassMedium, Output: 131072, Context: 1000000, }, { ID: "glm-5.3-flash", Namespace: "z-ai", Name: "GLM 5.3 Flash", Class: ClassSmall, Output: 131072, Context: 1000000, }, { ID: "glm-5.2", Namespace: "z-ai", Name: "GLM 5.2", Class: ClassMedium, Output: 131072, Context: 1000000, }, { ID: "deepseek-v4-pro", Aliases: []string{"deepseek-v4-pro-0813"}, Namespace: "deepseek", Name: "DeepSeek V4 Pro", Class: ClassLarge, Output: 384000, Context: 1000000, }, { ID: "deepseek-v4.1-flash", Aliases: []string{"deepseek-flash", "deepseek-v4.1-flash-1017"}, Namespace: "deepseek", Name: "DeepSeek V4.1 Flash", Class: ClassSmall, Output: 384000, Context: 1000000, }, { ID: "deepseek-v4-flash-0731", Namespace: "deepseek", Name: "DeepSeek V4 Flash 0731", Class: ClassSmall, Output: 384000, Context: 1000000, }, { ID: "deepseek-v4-flash", Namespace: "deepseek", Name: "DeepSeek V4 Flash", Class: ClassSmall, Output: 384000, Context: 1000000, }, { ID: "mistral-large-4", Aliases: []string{"mistral-large-4-0"}, Namespace: "mistralai", Name: "Mistral Large 4", Class: ClassLarge, Output: 262144, Context: 1048576, }, { ID: "mistral-medium", Aliases: []string{"mistral-medium-latest", "mistral-medium-2604"}, Namespace: "mistralai", Name: "Mistral Medium 3.5", Class: ClassMedium, Output: 262144, Context: 262144, }, { ID: "mistral-small", Aliases: []string{"mistral-small-latest", "mistral-small-2603"}, Namespace: "mistralai", Name: "Mistral Small 4", Class: ClassSmall, Output: 256000, Context: 256000, }, { ID: "kimi-k3", Namespace: "moonshotai", Name: "Kimi K3", Class: ClassLarge, Output: 131072, Context: 1048576, }, { ID: "minimax-m3", Namespace: "minimax", Name: "MiniMax M3", Class: ClassLarge, Output: 128000, Context: 1000000, ContextThreshold: 512_000, }, { ID: "grok-4.7", Namespace: "x-ai", Name: "Grok 4.7", Class: ClassLarge, Output: 500000, Context: 500000, ContextThreshold: 200_000, }, { ID: "grok-4.6", Namespace: "x-ai", Name: "Grok 4.6", Class: ClassLarge, Output: 500000, Context: 500000, ContextThreshold: 200_000, }, { ID: "qwen3.8-max", Aliases: []string{"qwen3.8-2.4t-a95b", "qwen3.8-max-0902"}, Namespace: "qwen", Name: "Qwen 3.8 Max", Class: ClassLarge, Output: 131072, Context: 1000000, }, { ID: "qwen3.8", Aliases: []string{"qwen3.8-27b"}, Namespace: "qwen", Name: "Qwen 3.8", Class: ClassMedium, Output: 65536, Context: 262144, Efforts: qwen38Efforts, }, { ID: "qwen3.8-flash", Namespace: "qwen", Name: "Qwen 3.8 Flash", Class: ClassSmall, Output: 131072, Context: 1000000, }, { ID: "qwen3.7-max", Namespace: "qwen", Name: "Qwen 3.7 Max", Class: ClassLarge, Output: 65536, Context: 1000000, }, { ID: "qwen3.7-plus", Aliases: []string{"qwen3.7"}, Namespace: "qwen", Name: "Qwen 3.7 Plus", Class: ClassMedium, Output: 65536, Context: 1000000, }, { ID: "qwen3.5-plus", Aliases: []string{"qwen3.5"}, Namespace: "qwen", Name: "Qwen 3.5", Class: ClassMedium, Output: 65536, Context: 1000000, }, { ID: "nemotron-3-ultra", Aliases: []string{"nemotron-3-ultra-550b-a55b", "nvidia-nemotron-3-ultra-550b-a55b-nvfp4", "nvidia-nemotron-3-ultra-550b-a55b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3 Ultra", Class: ClassLarge, Output: 65536, Context: 262144, Efforts: nemotronEfforts, }, { ID: "nemotron-3.5-super", Aliases: []string{"nemotron-3.5-super-vl", "nemotron-3.5-super-vl-120b-a12b", "nvidia-nemotron-3.5-super-vl-120b-a12b-nvfp4", "nvidia-nemotron-3.5-super-vl-120b-a12b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3.5 Super", Class: ClassMedium, Output: 65536, Context: 262144, Efforts: nemotronEfforts, }, { ID: "nemotron-3.5-bolt", Aliases: []string{"nemotron-3.5-bolt-74b-a9b", "nvidia-nemotron-3.5-bolt-74b-a9b-24gb", "nvidia-nemotron-3.5-bolt-74b-a9b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3.5 Bolt", Class: ClassMedium, Output: 65536, Context: 262144, Efforts: nemotronEfforts, }, { ID: "nemotron-3.5-lightning", Aliases: []string{"nemotron-3.5-lightning-30b-a3b", "nvidia-nemotron-3.5-lightning-30b-a3b-nvfp4", "nvidia-nemotron-3.5-lightning-30b-a3b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3.5 Lightning", Class: ClassSmall, Output: 65536, Context: 262144, Efforts: nemotronThinkingEfforts, }, { ID: "nemotron-3-super", Aliases: []string{"nemotron-3-super-120b-a12b", "nvidia-nemotron-3-super-120b-a12b-fp8", "nvidia-nemotron-3-super-120b-a12b-nvfp4", "nvidia-nemotron-3-super-120b-a12b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3 Super", Class: ClassMedium, Output: 65536, Context: 262144, Efforts: nemotron3SuperEfforts, }, { ID: "nemotron-3-nano", Aliases: []string{"nemotron-3-nano-30b-a3b", "nemotron-3-nano-4b", "nvidia-nemotron-3-nano-30b-a3b-fp8", "nvidia-nemotron-3-nano-30b-a3b-nvfp4", "nvidia-nemotron-3-nano-30b-a3b-bf16", "nvidia-nemotron-3-nano-4b-fp8", "nvidia-nemotron-3-nano-4b-bf16"}, Namespace: "nvidia", Name: "Nemotron 3 Nano", Class: ClassSmall, Output: 65536, Context: 262144, Efforts: nemotronThinkingEfforts, }, }
Models lists every known model in preference order: the first entry of a family, filter or class is the one picked automatically.
Functions ¶
func CanonicalID ¶ added in v0.17.3
CanonicalID resolves known aliases, provider prefixes, and deployment tags to their catalog ID. Unknown IDs are returned unchanged.
func ClampEffort ¶ added in v0.17.3
ClampEffort chooses the closest supported level at or below the request, or the lowest supported level when the request is below it. Supported levels must be in ascending order. Empty or unknown requests pass through unchanged.
func EffortLevels ¶ added in v0.17.3
func EffortLevels() []string
Types ¶
type Class ¶
type Class int
Class buckets models by capability for explicit delegation: large for complex tasks, medium for the default selection, and small for utility calls (recaps, compaction summaries) and the "fast" model of external agents.
type Model ¶
type Model struct {
ID string
Aliases []string
Namespace string
Name string
Description string
Class Class
Input int
Output int
Context int
ContextThreshold int
Effort string
Efforts []string
Verbosity string
}
func Available ¶
Available returns the catalog entries a backend serves, in preference order and with each ID resolved to the alias the backend accepts. A nil map means availability is unknown and every model is returned.