""" Progress Tracking Utilities =========================== Functions for tracking and displaying progress of the autonomous coding agent. """ import json from pathlib import Path def count_passing_tests(project_dir: Path) -> tuple[int, int]: """ Count passing and total tests in .automaker/feature_list.json. Args: project_dir: Directory containing .automaker/feature_list.json Returns: (passing_count, total_count) """ tests_file = project_dir / "feature_list.json" if not tests_file.exists(): return 0, 0 try: with open(tests_file, "r") as f: tests = json.load(f) total = len(tests) passing = sum(1 for test in tests if test.get("passes", False)) return passing, total except (json.JSONDecodeError, IOError): return 0, 0 def print_session_header(session_num: int, is_initializer: bool) -> None: """Print a formatted header for the session.""" session_type = "INITIALIZER" if is_initializer else "CODING AGENT" print("\n" + "=" * 70) print(f" SESSION {session_num}: {session_type}") print("=" * 70) print() def print_progress_summary(project_dir: Path) -> None: """Print a summary of current progress.""" passing, total = count_passing_tests(project_dir) if total > 0: percentage = (passing / total) * 100 print(f"\nProgress: {passing}/{total} tests passing ({percentage:.1f}%)") else: print("\nProgress: .automaker/feature_list.json not yet created")