model

package
v0.11.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: MIT Imports: 2 Imported by: 0

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

View Source
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.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",
		Class: ClassLarge,

		Context: 1048576,
		Output:  131072,
	},

	{
		ID: "kimi-k2.7-code",

		Name:  "Kimi K2.7 Code",
		Class: ClassMedium,

		Context: 262144,
		Output:  262144,
	},
	{
		ID: "kimi-k2.7-code-highspeed",

		Name:  "Kimi K2.7 Code HighSpeed",
		Class: ClassSmall,

		Context: 262144,
		Output:  262144,
	},

	{
		ID: "kimi-k2.6",

		Name:  "Kimi K2.6",
		Class: ClassMedium,

		Context: 262144,
		Output:  262144,
	},

	{
		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

func EffortBounds

func EffortBounds(id string) (lowest, highest string)

EffortBounds returns the reasoning-effort range a model supports; empty means unbounded on that side. Callers clamp out-of-range requests to the nearest bound instead of failing. Only known constraints are listed.

func Family

func Family(id string) string

Family groups models by vendor line (claude, gpt, glm, …) so automatic selection stays within one family when possible: switching families mid-session drops encrypted reasoning state.

func Name

func Name(id string) string

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.

const (
	ClassMedium Class = iota
	ClassLarge
	ClassSmall
)

func ClassOf

func ClassOf(id string) Class

ClassOf reports the class of a model, falling back to naming markers for ids the catalog does not know (external agents report their own models).

type Model

type Model struct {
	Name  string
	Class Class

	ID string

	Aliases []string

	Input  int
	Output int

	Context int
}

func Available

func Available(available map[string]bool) []Model

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 Find

func Find(id string) (Model, bool)

func (Model) ContextTokens

func (m Model) ContextTokens() int

func (Model) InputTokens

func (m Model) InputTokens() int

func (Model) OutputTokens

func (m Model) OutputTokens() int

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL