@@ -224,6 +224,10 @@ async fn forward_and_intercept_inner(
224224 . version ( parts. version ) ;
225225
226226 for ( name, value) in & parts. headers {
227+ // Strip Accept-Encoding so upstream sends uncompressed SSE we can parse
228+ if name. as_str ( ) . eq_ignore_ascii_case ( "accept-encoding" ) {
229+ continue ;
230+ }
227231 upstream_req_builder = upstream_req_builder. header ( name, value) ;
228232 }
229233
@@ -237,12 +241,18 @@ async fn forward_and_intercept_inner(
237241 . map_err ( |e| anyhow:: anyhow!( "Upstream request failed: {}" , e) ) ?;
238242
239243 // Check if this is an SSE response
240- let is_sse = upstream_res
244+ let content_type = upstream_res
241245 . headers ( )
242246 . get ( "content-type" )
243247 . and_then ( |v| v. to_str ( ) . ok ( ) )
244- . map ( |v| v. contains ( "text/event-stream" ) )
245- . unwrap_or ( false ) ;
248+ . unwrap_or ( "none" )
249+ . to_string ( ) ;
250+ let is_sse = content_type. contains ( "text/event-stream" ) ;
251+
252+ tracing:: info!(
253+ "Response for {} {} — content-type: {}, is_sse: {}, is_messages_api: {}" ,
254+ method, path, content_type, is_sse, is_messages_api
255+ ) ;
246256
247257 if is_sse && is_messages_api {
248258 tee_sse_response ( upstream_res, request_id, event_tx) . await
@@ -291,12 +301,18 @@ async fn tee_sse_response(
291301
292302 tokio:: spawn ( async move {
293303 let mut parser = SseParser :: new ( ) ;
304+ tracing:: info!( "SSE tee started for req {}" , request_id) ;
294305
295306 while let Some ( frame_result) = body. frame ( ) . await {
296307 match frame_result {
297308 Ok ( frame) => {
298309 if let Some ( data) = frame. data_ref ( ) {
310+ let preview = String :: from_utf8_lossy ( & data[ ..data. len ( ) . min ( 500 ) ] ) ;
311+ tracing:: info!( "SSE chunk for req {}: {} bytes — {:?}" , request_id, data. len( ) , preview) ;
299312 let events = parser. feed ( data) ;
313+ for event in & events {
314+ tracing:: info!( "SSE event for req {}: {:?}" , request_id, event) ;
315+ }
300316 for event in events {
301317 match event {
302318 SseEvent :: ContentBlockDelta { text } => {
0 commit comments