@@ -62,13 +62,17 @@ class TrajectoryInfo:
6262 submission : str | None
6363 memory : str | None
6464 messages : list [dict [str , Any ]]
65+ diff : str | None = None
66+ incremental_diff : str | None = None
67+ modified_files : dict [str , str ] | None = None
6568
6669
6770class LogParser :
6871 """Parses game log files into structured data"""
6972
7073 def __init__ (self , log_dir : Path ):
7174 self .log_dir = Path (log_dir )
75+ self ._player_metadata = {}
7276
7377 def parse_game_metadata (self ) -> GameMetadata :
7478 """Parse overall game metadata"""
@@ -79,6 +83,13 @@ def parse_game_metadata(self) -> GameMetadata:
7983 else :
8084 results = {"status" : "No metadata file found" }
8185
86+ # Store player metadata for later use
87+ self ._player_metadata = {}
88+ if "agents" in results :
89+ for agent in results ["agents" ]:
90+ player_name = agent .get ("name" , "" )
91+ self ._player_metadata [player_name ] = agent
92+
8293 # Parse tournament.log if it exists
8394 main_log_file = self .log_dir / "tournament.log"
8495 main_log = main_log_file .read_text () if main_log_file .exists () else "No tournament log found"
@@ -128,6 +139,18 @@ def parse_trajectory(self, player_id: int, round_num: int) -> TrajectoryInfo | N
128139 info = data .get ("info" , {})
129140 model_stats = info .get ("model_stats" , {})
130141
142+ # Get diff data from player metadata if available
143+ player_name = f"p{ player_id } "
144+ diff = None
145+ incremental_diff = None
146+ modified_files = None
147+
148+ if player_name in self ._player_metadata :
149+ player_meta = self ._player_metadata [player_name ]
150+ diff = player_meta .get ("diff" , {}).get (str (round_num ), "" )
151+ incremental_diff = player_meta .get ("incremental_diff" , {}).get (str (round_num ), "" )
152+ modified_files = player_meta .get ("modified_files" , {}).get (str (round_num ), {})
153+
131154 return TrajectoryInfo (
132155 player_id = player_id ,
133156 round_num = round_num ,
@@ -137,6 +160,9 @@ def parse_trajectory(self, player_id: int, round_num: int) -> TrajectoryInfo | N
137160 submission = info .get ("submission" ),
138161 memory = info .get ("memory" ),
139162 messages = data .get ("messages" , []),
163+ diff = diff ,
164+ incremental_diff = incremental_diff ,
165+ modified_files = modified_files ,
140166 )
141167 except (json .JSONDecodeError , KeyError ) as e :
142168 print (f"Error parsing { traj_file } : { e } " )
0 commit comments