@@ -163,21 +163,39 @@ def act(
163163 if snap .status != "success" :
164164 raise RuntimeError (f"Snapshot failed: { snap .error } " )
165165
166+ # Apply element filtering based on goal
167+ filtered_elements = self .filter_elements (snap , goal )
168+
166169 # Emit snapshot trace event if tracer is enabled
167170 if self .tracer :
171+ # Include element data for live overlay visualization
172+ # Use filtered_elements for overlay (only relevant elements)
173+ elements_data = [
174+ {
175+ "id" : el .id ,
176+ "bbox" : {
177+ "x" : el .bbox .x ,
178+ "y" : el .bbox .y ,
179+ "width" : el .bbox .width ,
180+ "height" : el .bbox .height ,
181+ },
182+ "role" : el .role ,
183+ "text" : el .text [:50 ] if el .text else "" , # Truncate for brevity
184+ }
185+ for el in filtered_elements [:50 ] # Limit to first 50 for performance
186+ ]
187+
168188 self .tracer .emit (
169189 "snapshot" ,
170190 {
171191 "url" : snap .url ,
172192 "element_count" : len (snap .elements ),
173193 "timestamp" : snap .timestamp ,
194+ "elements" : elements_data , # Add element data for overlay
174195 },
175196 step_id = step_id ,
176197 )
177198
178- # Apply element filtering based on goal
179- filtered_elements = self .filter_elements (snap , goal )
180-
181199 # Create filtered snapshot
182200 filtered_snap = Snapshot (
183201 status = snap .status ,
@@ -242,6 +260,23 @@ def act(
242260 # Emit action execution trace event if tracer is enabled
243261 if self .tracer :
244262 post_url = self .browser .page .url if self .browser .page else None
263+
264+ # Include element data for live overlay visualization
265+ elements_data = [
266+ {
267+ "id" : el .id ,
268+ "bbox" : {
269+ "x" : el .bbox .x ,
270+ "y" : el .bbox .y ,
271+ "width" : el .bbox .width ,
272+ "height" : el .bbox .height ,
273+ },
274+ "role" : el .role ,
275+ "text" : el .text [:50 ] if el .text else "" ,
276+ }
277+ for el in filtered_snap .elements [:50 ]
278+ ]
279+
245280 self .tracer .emit (
246281 "action" ,
247282 {
@@ -251,6 +286,8 @@ def act(
251286 "outcome" : result .outcome ,
252287 "duration_ms" : duration_ms ,
253288 "post_url" : post_url ,
289+ "elements" : elements_data , # Add element data for overlay
290+ "target_element_id" : result .element_id , # Highlight target in red
254291 },
255292 step_id = step_id ,
256293 )
0 commit comments