on main help sign in
fix(reasoning): enforce can reason from catwalk before sending reasoning_effor
commit08c5c7d8affa520f3508bb6e247f46c4e5140d36 authorKieran Klukas <kieran@dunkirk.sh> dateWed 13 May 2026, 13:22 (5 months ago) parent0a2de47
2 files changed+4−4
internal/agent/coordinator.go+3−3 internal/agent/coordinator_test.go+1−1
internal/agent/coordinator.go+3−3
@@ -268,7 +268,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy.
268268 switch providerCfg.Type {
269269 case openai.Name, azure.Name:
270270 _, hasReasoningEffort := mergedOptions["reasoning_effort"]
271− if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" {
271+ if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason {
272272 mergedOptions["reasoning_effort"] = model.ModelCfg.ReasoningEffort
273273 }
274274 if openai.IsResponsesModel(model.CatwalkCfg.ID) {
@@ -292,7 +292,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy.
292292 _, hasThink = mergedOptions["thinking"]
293293 )
294294 switch {
295− case !hasEffort && model.ModelCfg.ReasoningEffort != "":
295+ case !hasEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason:
296296 mergedOptions["effort"] = model.ModelCfg.ReasoningEffort
297297 case !hasThink && model.ModelCfg.Think:
298298 mergedOptions["thinking"] = map[string]any{"budget_tokens": 2000}
@@ -349,7 +349,7 @@ func getProviderOptions(model Model, providerCfg config.ProviderConfig) fantasy.
349349 extraBody := make(map[string]any)
350350
351351 _, hasReasoningEffort := mergedOptions["reasoning_effort"]
352− if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" {
352+ if !hasReasoningEffort && model.ModelCfg.ReasoningEffort != "" && model.CatwalkCfg.CanReason {
353353 switch providerCfg.ID {
354354 case string(catwalk.InferenceProviderIoNet):
355355 extraBody["reasoning"] = map[string]string{"effort": model.ModelCfg.ReasoningEffort}
internal/agent/coordinator_test.go+1−1
@@ -399,7 +399,7 @@ func TestGetProviderOptionsReasoningEffort(t *testing.T) {
399399 for _, tc := range tests {
400400 t.Run(tc.name, func(t *testing.T) {
401401 model := Model{
402− CatwalkCfg: catwalk.Model{ID: "claude-opus-4-7"},
402+ CatwalkCfg: catwalk.Model{ID: "claude-opus-4-7", CanReason: true},
403403 ModelCfg: config.SelectedModel{
404404 Provider: "test",
405405 ReasoningEffort: "max",