diff --git a/skyvern/forge/agent.py b/skyvern/forge/agent.py index da00778d..e41f93b0 100644 --- a/skyvern/forge/agent.py +++ b/skyvern/forge/agent.py @@ -138,7 +138,9 @@ class ForgeAgent: task_url = task_block.url if task_url is None: - browser_state = app.BROWSER_MANAGER.get_for_workflow_run(workflow_run_id=workflow_run.workflow_run_id) + browser_state = app.BROWSER_MANAGER.get_for_workflow_run( + workflow_run_id=workflow_run.workflow_run_id, parent_workflow_run_id=workflow_run.parent_workflow_run_id + ) if browser_state is None: raise MissingBrowserState(workflow_run_id=workflow_run.workflow_run_id) diff --git a/skyvern/webeye/browser_manager.py b/skyvern/webeye/browser_manager.py index 15909f89..3389d10a 100644 --- a/skyvern/webeye/browser_manager.py +++ b/skyvern/webeye/browser_manager.py @@ -136,7 +136,10 @@ class BrowserManager: workflow_run_id=workflow_run_id, parent_workflow_run_id=parent_workflow_run_id ) if browser_state: + # always keep the browser state for the workflow run and the parent workflow run synced self.pages[workflow_run_id] = browser_state + if parent_workflow_run_id: + self.pages[parent_workflow_run_id] = browser_state return browser_state if browser_session_id: @@ -194,12 +197,12 @@ class BrowserManager: def get_for_workflow_run( self, workflow_run_id: str, parent_workflow_run_id: str | None = None ) -> BrowserState | None: - if workflow_run_id in self.pages: - return self.pages[workflow_run_id] - if parent_workflow_run_id and parent_workflow_run_id in self.pages: return self.pages[parent_workflow_run_id] + if workflow_run_id in self.pages: + return self.pages[workflow_run_id] + return None def set_video_artifact_for_task(self, task: Task, artifacts: list[VideoArtifact]) -> None: