fix: hyper thinking modes, response api, etc

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

internal/agent/coordinator.go | 41 +++++++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 8 deletions(-)

Detailed changes

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