diff --git a/internal/registry/model_definitions.go b/internal/registry/model_definitions.go index 3bb0e88d..59e68921 100644 --- a/internal/registry/model_definitions.go +++ b/internal/registry/model_definitions.go @@ -787,6 +787,17 @@ func GetGitHubCopilotModels() []*ModelInfo { ContextLength: 128000, MaxCompletionTokens: 16384, }, + { + ID: "gpt-5.2", + Object: "model", + Created: now, + OwnedBy: "github-copilot", + Type: "github-copilot", + DisplayName: "GPT-5.2", + Description: "OpenAI GPT-5.2 via GitHub Copilot", + ContextLength: 200000, + MaxCompletionTokens: 32768, + }, { ID: "claude-haiku-4.5", Object: "model", diff --git a/internal/runtime/executor/token_helpers.go b/internal/runtime/executor/token_helpers.go index 3dd2a2b5..54188599 100644 --- a/internal/runtime/executor/token_helpers.go +++ b/internal/runtime/executor/token_helpers.go @@ -73,10 +73,12 @@ func tokenizerForModel(model string) (*TokenizerWrapper, error) { switch { case sanitized == "": enc, err = tokenizer.Get(tokenizer.Cl100kBase) - case strings.HasPrefix(sanitized, "gpt-5"): + case strings.HasPrefix(sanitized, "gpt-5.2"): enc, err = tokenizer.ForModel(tokenizer.GPT5) case strings.HasPrefix(sanitized, "gpt-5.1"): enc, err = tokenizer.ForModel(tokenizer.GPT5) + case strings.HasPrefix(sanitized, "gpt-5"): + enc, err = tokenizer.ForModel(tokenizer.GPT5) case strings.HasPrefix(sanitized, "gpt-4.1"): enc, err = tokenizer.ForModel(tokenizer.GPT41) case strings.HasPrefix(sanitized, "gpt-4o"): @@ -154,10 +156,10 @@ func countClaudeChatTokens(enc *TokenizerWrapper, payload []byte) (int64, error) // Collect system prompt (can be string or array of content blocks) collectClaudeSystem(root.Get("system"), &segments) - + // Collect messages collectClaudeMessages(root.Get("messages"), &segments) - + // Collect tools collectClaudeTools(root.Get("tools"), &segments)