33from dataclasses import dataclass
44from pathlib import Path
55
6- from browsergym .core .task import AbstractBrowserTask
7-
86from agentlab .actions import ToolCall , ToolsActionSet , ToolSpec
97from agentlab .backends .browser .base import BrowserBackend
108from agentlab .benchmarks .abstract_env import AbstractEnv , AbstractEnvArgs
@@ -27,7 +25,7 @@ def final_step():
2725
2826class BrowserEnv (AbstractEnv ):
2927 def __init__ (
30- self , task_name : str , task : AbstractWebTask | AbstractBrowserTask , backend : BrowserBackend , seed : int = 0
28+ self , task_name : str , task : AbstractWebTask , backend : BrowserBackend , seed : int = 0
3129 ):
3230 self .task_name = task_name
3331 self .task = task
@@ -36,20 +34,12 @@ def __init__(
3634 self .backend = backend
3735 self .backend .initialize ()
3836 self .goal = ""
39- if isinstance (self .task , AbstractBrowserTask ) and not self .backend .has_pw_page :
40- raise ValueError (
41- "Legacy task requires a backend with direct playwright page access."
42- )
4337
4438 def reset (self , seed : int ):
4539 self .seed = seed
46- if isinstance (self .task , AbstractBrowserTask ):
47- self .goal , task_info = self .task .setup (page = self .backend .page )
48- obs = self ._get_obs ()
49- else :
50- self .goal , task_info = self .task .setup (backend = self .backend )
51- obs = self ._get_obs ()
52- obs = self .task .obs_postprocess (obs )
40+ self .goal , task_info = self .task .setup (backend = self .backend )
41+ obs = self ._get_obs ()
42+ obs = self .task .obs_postprocess (obs )
5343 return obs , task_info
5444
5545 def _get_obs (self ) -> dict :
@@ -86,21 +76,15 @@ def step(self, action: ToolCall | str) -> tuple[dict, float, bool, bool, dict]:
8676
8777 observation = self .obs_postprocess (observation )
8878
89- if isinstance (self .task , AbstractBrowserTask ):
90- reward , done , _ , info = self .task .validate (page = self .backend .page , chat_messages = [])
91- elif self .task .validate_per_step or done or truncated :
92- reward , info = self .task .validate ()
93- if info .get ("done" , False ):
94- done = True
95- else :
96- reward = 0.0
97- info = {}
79+ reward , info = self .task .validate ()
80+ if info .get ("done" , False ):
81+ done = True
9882
9983 env_info = {
10084 ** info ,
10185 "action_exec_start" : action_exec_start ,
10286 "action_exec_stop" : action_exec_stop ,
103- "action_exec_timeout" : 0.0
87+ "action_exec_timeout" : 0.0 ,
10488 }
10589 logger .info (f"Action result in observation: { observation } " )
10690 return observation , reward , done , truncated , env_info
0 commit comments