@@ -146,6 +146,56 @@ func TestProviderChat_ParsesReasoningContent(t *testing.T) {
146146 }
147147}
148148
149+ func TestProviderChat_PreservesReasoningContentInHistory (t * testing.T ) {
150+ var requestBody map [string ]any
151+
152+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
153+ if err := json .NewDecoder (r .Body ).Decode (& requestBody ); err != nil {
154+ http .Error (w , err .Error (), http .StatusBadRequest )
155+ return
156+ }
157+ resp := map [string ]any {
158+ "choices" : []map [string ]any {
159+ {
160+ "message" : map [string ]any {"content" : "ok" },
161+ "finish_reason" : "stop" ,
162+ },
163+ },
164+ }
165+ w .Header ().Set ("Content-Type" , "application/json" )
166+ json .NewEncoder (w ).Encode (resp )
167+ }))
168+ defer server .Close ()
169+
170+ p := NewProvider ("key" , server .URL , "" )
171+
172+ // Simulate a multi-turn conversation where the assistant's previous
173+ // reply included reasoning_content (e.g. from kimi-k2.5).
174+ messages := []Message {
175+ {Role : "user" , Content : "What is 1+1?" },
176+ {Role : "assistant" , Content : "2" , ReasoningContent : "Let me think... 1+1=2" },
177+ {Role : "user" , Content : "What about 2+2?" },
178+ }
179+
180+ _ , err := p .Chat (t .Context (), messages , nil , "kimi-k2.5" , nil )
181+ if err != nil {
182+ t .Fatalf ("Chat() error = %v" , err )
183+ }
184+
185+ // Verify reasoning_content is preserved in the serialized request.
186+ reqMessages , ok := requestBody ["messages" ].([]any )
187+ if ! ok {
188+ t .Fatalf ("messages is not []any: %T" , requestBody ["messages" ])
189+ }
190+ assistantMsg , ok := reqMessages [1 ].(map [string ]any )
191+ if ! ok {
192+ t .Fatalf ("assistant message is not map[string]any: %T" , reqMessages [1 ])
193+ }
194+ if assistantMsg ["reasoning_content" ] != "Let me think... 1+1=2" {
195+ t .Errorf ("reasoning_content not preserved in request, got %v" , assistantMsg ["reasoning_content" ])
196+ }
197+ }
198+
149199func TestProviderChat_HTTPError (t * testing.T ) {
150200 server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
151201 http .Error (w , "bad request" , http .StatusBadRequest )
0 commit comments