diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index 943c3efc41b33ea9f261b4ffc7256b6f544beff9..938d458e5a3fc833ddfa3bc2501f6b4351bab7cd 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -292,15 +292,40 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. if err == nil { options[google.Name] = parsed } - case openaicompat.Name: - _, hasReasoningEffort := mergedOptions["reasoning_effort"] - if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" { - mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort - } - parsed, err := openaicompat.ParseOptions(mergedOptions) - if err == nil { - options[openaicompat.Name] = parsed + case hyper.Name: + if strings.HasPrefix(model.CatwalkCfg.ID, "claude") { + _, hasThink := mergedOptions["thinking"] + if !hasThink && model.ModelCfg.Think { + mergedOptions["thinking"] = map[string]any{ + "budget_tokens": 2000, + } + } + parsed, err := anthropic.ParseOptions(mergedOptions) + if err == nil { + options[anthropic.Name] = parsed + } + } else { + _, hasReasoningEffort := mergedOptions["reasoning_effort"] + if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" { + mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort + } + if openai.IsResponsesModel(model.CatwalkCfg.ID) { + if openai.IsResponsesReasoningModel(model.CatwalkCfg.ID) { + mergedOptions["reasoning_summary"] = "auto" + mergedOptions["include"] = []openai.IncludeType{openai.IncludeReasoningEncryptedContent} + } + parsed, err := openai.ParseResponsesOptions(mergedOptions) + if err == nil { + options[openai.Name] = parsed + } + } else { + parsed, err := openaicompat.ParseOptions(mergedOptions) + if err == nil { + options[openai.Name] = parsed + } + } } + slog.Error("HIER", "opts", options) } return options