diff --git a/pkg/providers/openai_compat/provider.go b/pkg/providers/openai_compat/provider.go index 2fb351d23..09f8eeea6 100644 --- a/pkg/providers/openai_compat/provider.go +++ b/pkg/providers/openai_compat/provider.go @@ -301,6 +301,7 @@ func parseResponse(body []byte) (*LLMResponse, error) { type openaiMessage struct { Role string `json:"role"` Content string `json:"content"` + Reasoning string `json:"reasoning_content,omitempty"` ToolCalls []ToolCall `json:"tool_calls,omitempty"` ToolCallID string `json:"tool_call_id,omitempty"` } @@ -314,6 +315,7 @@ func stripSystemParts(messages []Message) []openaiMessage { out[i] = openaiMessage{ Role: m.Role, Content: m.Content, + Reasoning: m.ReasoningContent, ToolCalls: m.ToolCalls, ToolCallID: m.ToolCallID, } diff --git a/pkg/tools/toolloop.go b/pkg/tools/toolloop.go index cdfe0d6ce..109f9e789 100644 --- a/pkg/tools/toolloop.go +++ b/pkg/tools/toolloop.go @@ -106,6 +106,7 @@ func RunToolLoop( Role: "assistant", Content: response.Content, } + assistantMsg.ReasoningContent = response.ReasoningContent for _, tc := range normalizedToolCalls { argumentsJSON, _ := json.Marshal(tc.Arguments) assistantMsg.ToolCalls = append(assistantMsg.ToolCalls, providers.ToolCall{