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", Name: "Claude Sonnet 5", Class: ClassMedium, Context: 1000000, Output: 128000, }, { ID: "claude-opus-5", Name: "Claude Opus 5", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "claude-opus-4-8", Name: "Claude Opus 4.8", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "claude-opus-4-7", Name: "Claude Opus 4.7", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "claude-sonnet-4-6", Name: "Claude Sonnet 4.6", Class: ClassMedium, Context: 1000000, Output: 128000, }, { ID: "claude-opus-4-6", Name: "Claude Opus 4.6", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "claude-haiku-4-6", Name: "Claude Haiku 4.6", Class: ClassSmall, Context: 200000, Output: 64000, }, { ID: "claude-sonnet-4-5", Name: "Claude Sonnet 4.5", Class: ClassMedium, Context: 200000, Output: 64000, }, { ID: "claude-opus-4-5", Name: "Claude Opus 4.5", Class: ClassLarge, Context: 200000, Output: 64000, }, { ID: "claude-haiku-4-5", Name: "Claude Haiku 4.5", Class: ClassSmall, Context: 200000, Output: 64000, }, { ID: "claude-fable-5", Name: "Claude Fable 5", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "claude-mythos-5", Name: "Claude Mythos 5", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "gpt-5.6-sol", Aliases: []string{"gpt-5.6"}, Name: "GPT 5.6 Sol", Class: ClassLarge, Context: 1050000, Output: 128000, }, { ID: "gpt-5.6-terra", Name: "GPT 5.6 Terra", Class: ClassMedium, Context: 1050000, Output: 128000, }, { ID: "gpt-5.6-luna", Name: "GPT 5.6 Luna", Class: ClassSmall, Context: 1050000, Output: 128000, }, { ID: "gpt-5.5", Name: "GPT 5.5", Class: ClassMedium, Context: 1050000, Output: 128000, }, { ID: "gpt-5.4", Name: "GPT 5.4", Class: ClassMedium, Context: 1050000, Output: 128000, }, { ID: "gpt-5.4-mini", Name: "GPT 5.4 Mini", Class: ClassSmall, Context: 400000, Output: 128000, }, { ID: "gpt-5.3-codex", Name: "GPT 5.3 Codex", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5.3-codex-spark", Name: "GPT 5.3 Codex Spark", Class: ClassSmall, Context: 128000, Output: 32000, }, { ID: "gpt-5.2-codex", Name: "GPT 5.2 Codex", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5.2", Name: "GPT 5.2", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5.1-codex-max", Name: "GPT 5.1 Codex Max", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5.1-codex", Name: "GPT 5.1 Codex", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5.1-codex-mini", Name: "GPT 5.1 Codex Mini", Class: ClassSmall, Context: 400000, Output: 128000, }, { ID: "gpt-5.1", Name: "GPT 5.1", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5-codex", Name: "GPT 5 Codex", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5", Name: "GPT 5", Class: ClassMedium, Context: 400000, Output: 128000, }, { ID: "gpt-5-mini", Name: "GPT 5 Mini", Class: ClassSmall, Context: 400000, Output: 128000, }, { ID: "gemini-3.6-flash", Name: "Gemini 3.6 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, }, { ID: "gemini-3.5-flash", Aliases: []string{"gemini-3-flash-preview"}, Name: "Gemini 3.5 Flash", Class: ClassMedium, Input: 1048576, Output: 65536, }, { ID: "gemini-3.5-flash-lite", Name: "Gemini 3.5 Flash Lite", Class: ClassSmall, Input: 1048576, Output: 65536, }, { ID: "gemini-3.1-pro", Aliases: []string{"gemini-3.1-pro-preview"}, Name: "Gemini 3.1 Pro", Class: ClassLarge, Input: 1048576, Output: 65536, }, { ID: "gemini-3.1-flash-lite", Name: "Gemini 3.1 Flash Lite", Class: ClassSmall, Input: 1048576, Output: 65536, }, { ID: "glm-5.3", Name: "GLM 5.3", Class: ClassMedium, Context: 1000000, Output: 131072, }, { ID: "glm-5.2", Name: "GLM 5.2", Class: ClassMedium, Context: 1000000, Output: 131072, }, { ID: "glm-5.1", Name: "GLM 5.1", Class: ClassMedium, Context: 200000, Output: 131072, }, { ID: "glm-5", Name: "GLM 5", Class: ClassMedium, Context: 204800, Output: 131072, }, { ID: "glm-4.7", Name: "GLM 4.7", Class: ClassMedium, Context: 204800, Output: 131072, }, { ID: "glm-4.7-flash", Name: "GLM 4.7 Flash", Class: ClassSmall, Context: 200000, Output: 131072, }, { ID: "deepseek-v4-pro", Name: "DeepSeek V4 Pro", Class: ClassLarge, Context: 1000000, Output: 384000, }, { ID: "deepseek-v4-flash", Name: "DeepSeek V4 Flash", Class: ClassSmall, Context: 1000000, Output: 384000, }, { ID: "mistral-medium", Aliases: []string{"mistral-medium-latest", "mistral-medium-2604"}, Name: "Mistral Medium 3.5", Class: ClassMedium, Context: 262144, Output: 262144, }, { ID: "mistral-small", Aliases: []string{"mistral-small-latest", "mistral-small-2603"}, Name: "Mistral Small 4", Class: ClassSmall, Context: 256000, Output: 256000, }, { ID: "kimi-k3", Name: "Kimi K3", Description: "Kimi’s most capable model to date, with 2.8 trillion parameters, native visual understanding, and a 1M-token context window, designed for frontier intelligence scenarios such as software engineering, knowledge work, and deep reasoning.", Class: ClassLarge, Context: 1048576, Output: 131072, }, { ID: "kimi-k2.7-code", Name: "Kimi K2.7 Code", Description: "Kimi’s dedicated coding model. It follows instructions more reliably in long contexts, completes coding tasks with higher success rates. Context 256k.", Class: ClassMedium, Context: 262144, Output: 262144, }, { ID: "minimax-m3", Aliases: []string{"MiniMax-M3"}, Name: "MiniMax M3", Class: ClassLarge, Context: 1000000, Output: 128000, }, { ID: "grok-4.6", Name: "Grok 4.6", Class: ClassLarge, Context: 500000, Output: 500000, }, { ID: "qwen3.7-max", Name: "Qwen 3.7 Max", Class: ClassLarge, Context: 1000000, Output: 65536, }, { ID: "qwen3.7-plus", Aliases: []string{"qwen3.7"}, Name: "Qwen 3.7 Plus", Class: ClassMedium, Context: 1000000, Output: 65536, }, { ID: "qwen3.6-plus", Aliases: []string{"qwen3.6"}, Name: "Qwen 3.6", Class: ClassMedium, Context: 1000000, Output: 65536, }, { ID: "qwen3.6-flash", Name: "Qwen 3.6 Flash", Class: ClassSmall, Context: 1000000, Output: 65536, }, { ID: "qwen3.5-plus", Aliases: []string{"qwen3.5"}, Name: "Qwen 3.5", Class: ClassMedium, Context: 1000000, Output: 65536, }, { ID: "qwen3-coder-plus", Aliases: []string{"qwen3-coder-next", "qwen3-coder"}, Name: "Qwen 3 Coder", Class: ClassMedium, Context: 1048576, Output: 65536, }, { ID: "qwen3-coder-flash", Name: "Qwen 3 Coder Flash", Class: ClassSmall, Context: 1048576, Output: 65536, }, { ID: "qwen3-next", Aliases: []string{"qwen3"}, Name: "Qwen 3", Class: ClassMedium, Input: 126976, Output: 32768, Context: 131072, }, }
Models lists every known model in preference order: the first entry of a family, filter or class is the one picked automatically.
Functions ¶
Types ¶
type Class ¶
type Class int
Class buckets models by capability for automatic per-role selection: large drives planning, medium drives coding, small drives utility calls (recaps, compaction summaries) and the "fast" model of external agents.
type Model ¶
type Model struct {
Name string
Description string
Class Class
ID string
Aliases []string
Input int
Output int
Context int
}
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.
func (Model) ContextTokens ¶
func (Model) InputTokens ¶
func (Model) OutputTokens ¶
type Profile ¶ added in v0.14.3
type Profile struct {
Window int
WindowCompaction int
Efforts []string
DefaultEffort string
ReasoningEffortPlacement ReasoningEffortPlacement
}
Profile captures per-model harness constraints looked up by id prefix. Window is the full hardware context window. WindowCompaction is the smaller budget compaction runs against by default where long context carries a price premium (0 = compact against Window). Efforts lists the supported reasoning efforts sorted low→high; empty means unrestricted. DefaultEffort overrides the harness role default. ReasoningEffortPlacement describes the provider's JSON request shape.
Verified 2026-07: current Claude models (Opus 4.6+, Sonnet 4.6+, Fable 5) take 1M input tokens at flat per-token rates — no long-context premium; Haiku and pre-4.6 models are 200k hardware (Sonnet 4.5's 1M beta bills 2x above 200k and needs a beta header, so it stays capped). GPT-5.4/5.5 have 1M-class windows but bill 2x input / 1.5x output for the whole session once input exceeds 272k; GPT-5.6 (sol/terra/luna) keeps the same threshold. Codex and earlier GPT-5.x are 400k total, flat. Gemini and Grok bill more above 200k prompts. MiniMax M3's long-context pricing starts above 512k.
func ProfileFor ¶ added in v0.14.3
func (Profile) ContextWindow ¶ added in v0.14.3
type ReasoningEffortPlacement ¶ added in v0.14.3
type ReasoningEffortPlacement int
const ( ReasoningEffortInObject ReasoningEffortPlacement = iota ReasoningEffortAtRoot )