@@ -63,10 +63,17 @@ pub(super) async fn run_rest_anthropic(
6363 return Ok ( ( ) ) ;
6464 }
6565
66- let json: serde_json:: Value = resp
67- . json ( )
68- . await
69- . map_err ( |e| format ! ( "Failed to parse response: {}" , e) ) ?;
66+ let json: serde_json:: Value = match resp. json ( ) . await {
67+ Ok ( v) => v,
68+ Err ( e) => {
69+ emit_error (
70+ window,
71+ request_id,
72+ & format ! ( "Failed to parse Anthropic response: {}" , e) ,
73+ ) ;
74+ return Ok ( ( ) ) ;
75+ }
76+ } ;
7077
7178 // Extract text from content blocks
7279 if let Some ( content) = json. get ( "content" ) . and_then ( |c| c. as_array ( ) ) {
@@ -126,10 +133,17 @@ pub(super) async fn run_rest_openai(
126133 return Ok ( ( ) ) ;
127134 }
128135
129- let json: serde_json:: Value = resp
130- . json ( )
131- . await
132- . map_err ( |e| format ! ( "Failed to parse response: {}" , e) ) ?;
136+ let json: serde_json:: Value = match resp. json ( ) . await {
137+ Ok ( v) => v,
138+ Err ( e) => {
139+ emit_error (
140+ window,
141+ request_id,
142+ & format ! ( "Failed to parse OpenAI response: {}" , e) ,
143+ ) ;
144+ return Ok ( ( ) ) ;
145+ }
146+ } ;
133147
134148 if let Some ( text) = json
135149 . get ( "choices" )
@@ -191,10 +205,17 @@ pub(super) async fn run_rest_google(
191205 return Ok ( ( ) ) ;
192206 }
193207
194- let json: serde_json:: Value = resp
195- . json ( )
196- . await
197- . map_err ( |e| format ! ( "Failed to parse response: {}" , e) ) ?;
208+ let json: serde_json:: Value = match resp. json ( ) . await {
209+ Ok ( v) => v,
210+ Err ( e) => {
211+ emit_error (
212+ window,
213+ request_id,
214+ & format ! ( "Failed to parse Google AI response: {}" , e) ,
215+ ) ;
216+ return Ok ( ( ) ) ;
217+ }
218+ } ;
198219
199220 if let Some ( text) = json
200221 . get ( "candidates" )
@@ -254,10 +275,17 @@ pub(super) async fn run_rest_ollama(
254275 return Ok ( ( ) ) ;
255276 }
256277
257- let json: serde_json:: Value = resp
258- . json ( )
259- . await
260- . map_err ( |e| format ! ( "Failed to parse response: {}" , e) ) ?;
278+ let json: serde_json:: Value = match resp. json ( ) . await {
279+ Ok ( v) => v,
280+ Err ( e) => {
281+ emit_error (
282+ window,
283+ request_id,
284+ & format ! ( "Failed to parse Ollama response: {}" , e) ,
285+ ) ;
286+ return Ok ( ( ) ) ;
287+ }
288+ } ;
261289
262290 if let Some ( text) = json. get ( "response" ) . and_then ( |r| r. as_str ( ) ) {
263291 emit_chunk ( window, request_id, text) ;
0 commit comments