diff --git a/internal/runtime/executor/payload_helpers.go b/internal/runtime/executor/payload_helpers.go index be249868..9bc82f1f 100644 --- a/internal/runtime/executor/payload_helpers.go +++ b/internal/runtime/executor/payload_helpers.go @@ -11,7 +11,7 @@ import ( "github.com/tidwall/sjson" ) -// applyThinkingMetadata applies thinking config from model suffix metadata (e.g., [high], [8192]) +// applyThinkingMetadata applies thinking config from model suffix metadata (e.g., (high), (8192)) // for standard Gemini format payloads. It normalizes the budget when the model supports thinking. func applyThinkingMetadata(payload []byte, metadata map[string]any, model string) []byte { budgetOverride, includeOverride, ok := util.ResolveThinkingConfigFromMetadata(model, metadata) @@ -28,7 +28,7 @@ func applyThinkingMetadata(payload []byte, metadata map[string]any, model string return util.ApplyGeminiThinkingConfig(payload, budgetOverride, includeOverride) } -// applyThinkingMetadataCLI applies thinking config from model suffix metadata (e.g., [high], [8192]) +// applyThinkingMetadataCLI applies thinking config from model suffix metadata (e.g., (high), (8192)) // for Gemini CLI format payloads (nested under "request"). It normalizes the budget when the model supports thinking. func applyThinkingMetadataCLI(payload []byte, metadata map[string]any, model string) []byte { budgetOverride, includeOverride, ok := util.ResolveThinkingConfigFromMetadata(model, metadata) diff --git a/internal/util/thinking_suffix.go b/internal/util/thinking_suffix.go index c9a68534..7851c580 100644 --- a/internal/util/thinking_suffix.go +++ b/internal/util/thinking_suffix.go @@ -15,16 +15,16 @@ const ( // NormalizeThinkingModel parses dynamic thinking suffixes on model names and returns // the normalized base model with extracted metadata. Supported pattern: -// - "[]" where value can be: -// - A numeric budget (e.g., "[8192]", "[16384]") -// - A reasoning effort level (e.g., "[high]", "[medium]", "[low]") +// - "()" where value can be: +// - A numeric budget (e.g., "(8192)", "(16384)") +// - A reasoning effort level (e.g., "(high)", "(medium)", "(low)") // // Examples: -// - "claude-sonnet-4-5-20250929[16384]" → budget=16384 -// - "gpt-5.1[high]" → reasoning_effort="high" -// - "gemini-2.5-pro[32768]" → budget=32768 +// - "claude-sonnet-4-5-20250929(16384)" → budget=16384 +// - "gpt-5.1(high)" → reasoning_effort="high" +// - "gemini-2.5-pro(32768)" → budget=32768 // -// Note: Empty brackets "[]" are not supported and will be ignored. +// Note: Empty parentheses "()" are not supported and will be ignored. func NormalizeThinkingModel(modelName string) (string, map[string]any) { if modelName == "" { return modelName, nil @@ -38,16 +38,16 @@ func NormalizeThinkingModel(modelName string) (string, map[string]any) { matched bool ) - // Match "[value]" pattern at the end of the model name - if idx := strings.LastIndex(modelName, "["); idx != -1 { - if !strings.HasSuffix(modelName, "]") { - // Incomplete bracket, ignore + // Match "()" pattern at the end of the model name + if idx := strings.LastIndex(modelName, "("); idx != -1 { + if !strings.HasSuffix(modelName, ")") { + // Incomplete parenthesis, ignore return baseModel, nil } - value := modelName[idx+1 : len(modelName)-1] // Extract content between [ and ] + value := modelName[idx+1 : len(modelName)-1] // Extract content between ( and ) if value == "" { - // Empty brackets not supported + // Empty parentheses not supported return baseModel, nil }