import re import collections import os log_file = '/home/swadhin/.gemini/antigravity-cli/brain/77f0c4ae-7277-45b2-8259-65dc52006415/.system_generated/tasks/task-110.log' with open(log_file, 'r') as f: lines = f.readlines() fixes = collections.defaultdict(list) # Regex to match log lines: # src/pages/[owner]/[repo]/insights/dora.astro:12:7 - warning ts(6133): 'user' is declared but its value is never read. # src/pages/orgs/[org]/roles.astro:212:9 - warning astro(4000): ... pattern = re.compile(r'^([^:]+):(\d+):\d+ - warning (ts\(\d+\)|astro\(\d+\)):') for line in lines: m = pattern.match(line) if m: filepath = m.group(1).strip() line_num = int(m.group(2)) warning_type = m.group(3) fixes[filepath].append({ 'line': line_num, 'type': warning_type }) for filepath, file_fixes in fixes.items(): if not os.path.exists(filepath): print(f"File not found: {filepath}") continue with open(filepath, 'r') as f: file_content = f.read().splitlines() # Sort fixes descending so line numbers don't shift when we insert/modify file_fixes.sort(key=lambda x: x['line'], reverse=True) # Keep track of lines we've already prepended @ts-ignore to ignored_lines = set() for fix in file_fixes: line_idx = fix['line'] - 1 if line_idx < 0 or line_idx >= len(file_content): continue if fix['type'] == 'astro(4000)': # Replace