@@ -890,7 +890,42 @@ def cmd_probe(args: argparse.Namespace) -> int:
890890 return 1
891891
892892 server_url = args .server
893+ detailed = args .detailed or args .json_output
894+ layers = args .layers .split ("," ) if args .layers else None
895+ if layers :
896+ detailed = True
897+
898+ if detailed :
899+ from openadapt_evals .infrastructure .probe import (
900+ multi_layer_probe ,
901+ print_probe_results ,
902+ )
903+
904+ max_attempts = args .wait_attempts if args .wait else 1
905+ attempt = 0
906+
907+ while attempt < max_attempts :
908+ attempt += 1
909+ result = multi_layer_probe (
910+ server_url ,
911+ layers = layers ,
912+ evaluate_url = args .evaluate_url ,
913+ )
914+ if args .json_output :
915+ print (result .to_json ())
916+ else :
917+ print_probe_results (result )
918+
919+ if result .overall_ready :
920+ return 0
921+
922+ if args .wait and attempt < max_attempts :
923+ print (f"Attempt { attempt } /{ max_attempts } : not ready, retrying in { args .wait_interval } s..." )
924+ time .sleep (args .wait_interval )
925+
926+ return 0 if result .overall_ready else 1
893927
928+ # Default binary probe (unchanged)
894929 print (f"Probing WAA server at { server_url } ..." )
895930
896931 max_attempts = args .wait_attempts if args .wait else 1
@@ -2264,6 +2299,14 @@ def main() -> int:
22642299 help = "Max attempts when waiting" )
22652300 probe_parser .add_argument ("--wait-interval" , type = int , default = 5 ,
22662301 help = "Seconds between attempts" )
2302+ probe_parser .add_argument ("--detailed" , action = "store_true" ,
2303+ help = "Run 4-layer probe (screenshot, a11y, action, score)" )
2304+ probe_parser .add_argument ("--json" , dest = "json_output" , action = "store_true" ,
2305+ help = "Output JSON (implies --detailed)" )
2306+ probe_parser .add_argument ("--layers" , type = str , default = None ,
2307+ help = "Comma-separated layer subset (e.g. screenshot,a11y)" )
2308+ probe_parser .add_argument ("--evaluate-url" , type = str , default = None ,
2309+ help = "Separate URL for score layer (e.g. http://localhost:5051)" )
22672310
22682311 # Generate viewer
22692312 view_parser = subparsers .add_parser ("view" , help = "Generate HTML viewer for results" )
0 commit comments