diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index aed5624e178d80310784f5a2014b92b32afcacd8..68e83b1a63f05b20dea567fefeb41e1519a19ce7 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -268,7 +268,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. switch providerCfg.Type { case openai.Name, azure.Name: _, hasReasoningEffort := mergedOptions["reasoning_effort"] - if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" { + if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason { mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort } if openai.IsResponsesModel(model.CatwalkCfg.ID) { @@ -292,7 +292,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. _, hasThink = mergedOptions["thinking"] ) switch { - case !hasEffort && model.ModelCfg.ReasoningEffort != "": + case !hasEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason: mergedOptions["effort"] = model.ModelCfg.ReasoningEffort case !hasThink && model.ModelCfg.Think: mergedOptions["thinking"] = map[string]any{"budget_tokens": 2000} @@ -349,7 +349,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy. extraBody := make(map[string]any) _, hasReasoningEffort := mergedOptions["reasoning_effort"] - if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" { + if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason { switch providerCfg.ID { case string(catwalk.InferenceProviderIoNet): extraBody["reasoning"] = map[string]string{"effort": model.ModelCfg.ReasoningEffort} diff --git a/internal/agent/coordinator_test.go b/internal/agent/coordinator_test.go index 1dd90d91e75421f1e8a6d3e3b54f12a009643c1c..c1d5ede005e4d3f69cf9482c38d99c2ca8565d98 100644 --- a/internal/agent/coordinator_test.go +++ b/internal/agent/coordinator_test.go @@ -399,7 +399,7 @@ func TestGetProviderOptionsReasoningEffort(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { model := Model{ - CatwalkCfg: catwalk.Model{ID: "claude-opus-4-7"}, + CatwalkCfg: catwalk.Model{ID: "claude-opus-4-7", CanReason: true}, ModelCfg: config.SelectedModel{ Provider: "test", ReasoningEffort: "max",