#!/usr/bin/env python3 """Forge Log Analyzer - generates JSON report.""" import sys import json from pathlib import Path from datetime import datetime import re def analyze_forge_log(filepath): """Analyze a forge log file and return key metrics.""" content = Path(filepath).read_text() filename = Path(filepath).name duration_match = re.match(r'forge-(\d{4}-\d{2}-\d{2}-\d{6})\.txt', filename) metrics = { 'file': str(filepath), 'filename': filename, 'lines': len(content.split('\n')), 'words': len(content.split()), 'chars': len(content), } if duration_match: ts_str = duration_match.group(1) try: dt = datetime.strptime(ts_str, '%Y-%m-%d-%H%M%S') metrics['session_time'] = dt.strftime('%Y-%m-%d %H:%M:%S') except: pass return metrics def main(): outputs_dir = Path('/root/.hermes/wizard-outputs') forge_logs = sorted(outputs_dir.glob('forge-*.txt')) results = { 'generated_at': datetime.now().isoformat(), 'total_files': len(forge_logs), 'files_analyzed': len(forge_logs[:10]), 'analysis': [analyze_forge_log(log) for log in forge_logs[:10]] } chars = [m['chars'] for m in results['analysis']] results['total_lines'] = sum(m['lines'] for m in results['analysis']) results['total_chars'] = sum(chars) results['avg_file_chars'] = sum(chars) / len(chars) if chars else 0 # Output as JSON print(json.dumps(results, indent=2)) return 0 if __name__ == '__main__': sys.exit(main())