@@ -211,7 +211,8 @@ def _do_upload(self, on_progress: Callable[[int, int], None] | None = None) -> N
211211 on_progress (0 , compressed_size )
212212
213213 # Step 5: Upload cleaned trace to cloud
214- print (f"📤 [Sentience] Uploading trace to cloud ({ compressed_size } bytes)..." )
214+ if self .logger :
215+ self .logger .info (f"Uploading trace to cloud ({ compressed_size } bytes)" )
215216
216217 response = requests .put (
217218 self .upload_url ,
@@ -225,7 +226,8 @@ def _do_upload(self, on_progress: Callable[[int, int], None] | None = None) -> N
225226
226227 if response .status_code == 200 :
227228 self ._upload_successful = True
228- print ("✅ [Sentience] Trace uploaded successfully" )
229+ if self .logger :
230+ self .logger .info ("Trace uploaded successfully" )
229231
230232 # Report progress: complete
231233 if on_progress :
@@ -245,14 +247,17 @@ def _do_upload(self, on_progress: Callable[[int, int], None] | None = None) -> N
245247 cleaned_trace_path .unlink ()
246248 else :
247249 self ._upload_successful = False
248- print (f"❌ [Sentience] Upload failed: HTTP { response .status_code } " )
249- print (f" Response: { response .text } " )
250- print (f" Local trace preserved at: { self ._path } " )
250+ if self .logger :
251+ self .logger .error (
252+ f"Upload failed: HTTP { response .status_code } , Response: { response .text [:200 ]} "
253+ )
254+ # Don't print - rely on logger or silent failure
251255
252256 except Exception as e :
253257 self ._upload_successful = False
254- print (f"❌ [Sentience] Error uploading trace: { e } " )
255- print (f" Local trace preserved at: { self ._path } " )
258+ if self .logger :
259+ self .logger .error (f"Error uploading trace: { e } " )
260+ # Don't print - rely on logger or silent failure
256261 # Don't raise - preserve trace locally even if upload fails
257262
258263 def _generate_index (self ) -> None :
@@ -263,7 +268,8 @@ def _generate_index(self) -> None:
263268 write_trace_index (str (self ._path ))
264269 except Exception as e :
265270 # Non-fatal: log but don't crash
266- print (f"⚠️ Failed to generate trace index: { e } " )
271+ if self .logger :
272+ self .logger .warning (f"Failed to generate trace index: { e } " )
267273
268274 def _upload_index (self ) -> None :
269275 """
@@ -319,8 +325,7 @@ def _upload_index(self) -> None:
319325
320326 if self .logger :
321327 self .logger .info (f"Index file size: { index_size / 1024 :.2f} KB" )
322-
323- print (f"📤 [Sentience] Uploading trace index ({ index_size } bytes)..." )
328+ self .logger .info (f"Uploading trace index ({ index_size } bytes)" )
324329
325330 # Upload index to cloud storage
326331 index_response = requests .put (
@@ -334,7 +339,8 @@ def _upload_index(self) -> None:
334339 )
335340
336341 if index_response .status_code == 200 :
337- print ("✅ [Sentience] Trace index uploaded successfully" )
342+ if self .logger :
343+ self .logger .info ("Trace index uploaded successfully" )
338344
339345 # Delete local index file after successful upload
340346 try :
@@ -344,13 +350,11 @@ def _upload_index(self) -> None:
344350 else :
345351 if self .logger :
346352 self .logger .warning (f"Index upload failed: HTTP { index_response .status_code } " )
347- print (f"⚠️ [Sentience] Index upload failed: HTTP { index_response .status_code } " )
348353
349354 except Exception as e :
350355 # Non-fatal: log but don't crash
351356 if self .logger :
352357 self .logger .warning (f"Error uploading trace index: { e } " )
353- print (f"⚠️ [Sentience] Error uploading trace index: { e } " )
354358
355359 def _complete_trace (self ) -> None :
356360 """
@@ -428,8 +432,6 @@ def _extract_screenshots_from_trace(self) -> dict[int, dict[str, Any]]:
428432 except Exception as e :
429433 if self .logger :
430434 self .logger .error (f"Error extracting screenshots: { e } " )
431- else :
432- print (f"⚠️ [Sentience] Error extracting screenshots: { e } " )
433435
434436 return screenshots
435437
@@ -472,8 +474,6 @@ def _create_cleaned_trace(self, output_path: Path) -> None:
472474 except Exception as e :
473475 if self .logger :
474476 self .logger .error (f"Error creating cleaned trace: { e } " )
475- else :
476- print (f"⚠️ [Sentience] Error creating cleaned trace: { e } " )
477477 raise
478478
479479 def _request_screenshot_urls (self , sequences : list [int ]) -> dict [int , str ]:
@@ -511,24 +511,21 @@ def _request_screenshot_urls(self, sequences: list[int]) -> dict[int, str]:
511511 else :
512512 error_msg = f"Failed to get screenshot URLs: HTTP { response .status_code } "
513513 if self .logger :
514- self .logger .warning (error_msg )
515- else :
516- print (f" ⚠️ { error_msg } " )
517- # Try to get error details
518- try :
519- error_data = response .json ()
520- error_detail = error_data .get ("error" ) or error_data .get ("message" , "" )
521- if error_detail :
522- print (f" Error: { error_detail } " )
523- except Exception :
524- print (f" Response: { response .text [:200 ]} " )
514+ # Try to get error details
515+ try :
516+ error_data = response .json ()
517+ error_detail = error_data .get ("error" ) or error_data .get ("message" , "" )
518+ if error_detail :
519+ self .logger .warning (f"{ error_msg } : { error_detail } " )
520+ else :
521+ self .logger .warning (f"{ error_msg } : { response .text [:200 ]} " )
522+ except Exception :
523+ self .logger .warning (f"{ error_msg } : { response .text [:200 ]} " )
525524 return {}
526525 except Exception as e :
527526 error_msg = f"Error requesting screenshot URLs: { e } "
528527 if self .logger :
529528 self .logger .warning (error_msg )
530- else :
531- print (f" ⚠️ { error_msg } " )
532529 return {}
533530
534531 def _upload_screenshots (
@@ -554,18 +551,17 @@ def _upload_screenshots(
554551
555552 # 1. Request pre-signed URLs from gateway
556553 sequences = sorted (screenshots .keys ())
557- print (f" Requesting upload URLs for { len (sequences )} screenshot(s)..." )
554+ if self .logger :
555+ self .logger .info (f"Requesting upload URLs for { len (sequences )} screenshot(s)" )
558556 upload_urls = self ._request_screenshot_urls (sequences )
559557
560558 if not upload_urls :
561- print ( "⚠️ [Sentience] No screenshot upload URLs received, skipping upload" )
562- print ( " This may indicate:" )
563- print ( " - API key doesn't have permission for screenshot uploads" )
564- print ( " - Gateway endpoint /v1/screenshots/init returned an error" )
565- print ( " - Network issue connecting to gateway" )
559+ if self . logger :
560+ self . logger . warning (
561+ "No screenshot upload URLs received, skipping upload. "
562+ "This may indicate API key permission issue, gateway error, or network problem."
563+ )
566564 return
567-
568- print (f" ✅ Received { len (upload_urls )} upload URL(s) from gateway" )
569565
570566 # 2. Upload screenshots in parallel
571567 uploaded_count = 0
@@ -587,11 +583,6 @@ def upload_one(seq: int, url: str) -> bool:
587583 self .screenshot_total_size_bytes += image_size
588584
589585 # Upload to pre-signed URL
590- # Extract the base URL for logging (without query params)
591- upload_base_url = url .split ('?' )[0 ] if '?' in url else url
592- if self .verbose if hasattr (self , 'verbose' ) else False :
593- print (f" 📤 Uploading screenshot { seq } ({ image_size / 1024 :.1f} KB) to: { upload_base_url [:80 ]} ..." )
594-
595586 response = requests .put (
596587 url ,
597588 data = image_bytes , # Binary image data
@@ -604,32 +595,23 @@ def upload_one(seq: int, url: str) -> bool:
604595 if response .status_code == 200 :
605596 if self .logger :
606597 self .logger .info (f"Screenshot { seq } uploaded successfully ({ image_size / 1024 :.1f} KB)" )
607- else :
608- # Extract base URL for logging (without query params for security)
609- upload_base = url .split ('?' )[0 ] if '?' in url else url
610- upload_base_short = upload_base [:80 ] + "..." if len (upload_base ) > 80 else upload_base
611- print (f" ✅ Screenshot { seq } uploaded: { image_size / 1024 :.1f} KB, format={ format_str } , URL={ upload_base_short } " )
612598 return True
613599 else :
614600 error_msg = f"Screenshot { seq } upload failed: HTTP { response .status_code } "
615601 if self .logger :
616- self .logger .warning (error_msg )
617- else :
618- print (f" ⚠️ { error_msg } " )
619- # Try to get error details from response
620- try :
621- error_detail = response .text [:200 ]
622- if error_detail :
623- print (f" Response: { error_detail } " )
624- except Exception :
625- pass
602+ try :
603+ error_detail = response .text [:200 ]
604+ if error_detail :
605+ self .logger .warning (f"{ error_msg } : { error_detail } " )
606+ else :
607+ self .logger .warning (error_msg )
608+ except Exception :
609+ self .logger .warning (error_msg )
626610 return False
627611 except Exception as e :
628612 error_msg = f"Screenshot { seq } upload error: { e } "
629613 if self .logger :
630614 self .logger .warning (error_msg )
631- else :
632- print (f" ⚠️ { error_msg } " )
633615 return False
634616
635617 # Upload in parallel (max 10 concurrent)
@@ -650,13 +632,17 @@ def upload_one(seq: int, url: str) -> bool:
650632 # 3. Report results
651633 if uploaded_count == total_count :
652634 total_size_mb = self .screenshot_total_size_bytes / 1024 / 1024
653- print (f"✅ [Sentience] All { total_count } screenshots uploaded successfully!" )
654- print (f" 📊 Total screenshot size: { total_size_mb :.2f} MB" )
655- print (f" 📸 Screenshots are now available in cloud storage" )
635+ if self .logger :
636+ self .logger .info (
637+ f"All { total_count } screenshots uploaded successfully "
638+ f"(total size: { total_size_mb :.2f} MB)"
639+ )
656640 else :
657- print (f"⚠️ [Sentience] Uploaded { uploaded_count } /{ total_count } screenshots" )
658- if failed_sequences :
659- print (f" Failed sequences: { failed_sequences } " )
641+ if self .logger :
642+ self .logger .warning (
643+ f"Uploaded { uploaded_count } /{ total_count } screenshots. "
644+ f"Failed sequences: { failed_sequences if failed_sequences else 'none' } "
645+ )
660646
661647 def _cleanup_files (self ) -> None :
662648 """Delete local files after successful upload."""
0 commit comments