Files
Dorod-Sky/skyvern/webeye/browser_manager.py

86 lines
2.5 KiB
Python

from __future__ import annotations
from typing import Protocol
import structlog
from skyvern.forge.sdk.schemas.tasks import Task
from skyvern.forge.sdk.workflow.models.workflow import WorkflowRun
from skyvern.webeye.browser_artifacts import VideoArtifact
from skyvern.webeye.browser_state import BrowserState
LOG = structlog.get_logger()
class BrowserManager(Protocol):
pages: dict[str, BrowserState]
async def get_or_create_for_task(self, task: Task, browser_session_id: str | None = None) -> BrowserState: ...
async def get_or_create_for_workflow_run(
self,
workflow_run: WorkflowRun,
url: str | None = None,
browser_session_id: str | None = None,
browser_profile_id: str | None = None,
) -> BrowserState: ...
async def cleanup_for_task(
self,
task_id: str,
close_browser_on_completion: bool = True,
browser_session_id: str | None = None,
organization_id: str | None = None,
) -> BrowserState | None: ...
async def cleanup_for_workflow_run(
self,
workflow_run_id: str,
task_ids: list[str],
close_browser_on_completion: bool = True,
browser_session_id: str | None = None,
organization_id: str | None = None,
) -> BrowserState | None: ...
async def get_or_create_for_script(
self,
script_id: str | None = None,
browser_session_id: str | None = None,
) -> BrowserState: ...
def get_for_task(self, task_id: str, workflow_run_id: str | None = None) -> BrowserState | None: ...
def get_for_workflow_run(
self,
workflow_run_id: str,
parent_workflow_run_id: str | None = None,
) -> BrowserState | None: ...
def get_for_script(self, script_id: str | None = None) -> BrowserState | None: ...
def set_video_artifact_for_task(self, task: Task, artifacts: list[VideoArtifact]) -> None: ...
async def get_video_artifacts(
self,
browser_state: BrowserState,
task_id: str = "",
workflow_id: str = "",
workflow_run_id: str = "",
) -> list[VideoArtifact]: ...
async def get_har_data(
self,
browser_state: BrowserState,
task_id: str = "",
workflow_id: str = "",
workflow_run_id: str = "",
) -> bytes: ...
async def get_browser_console_log(
self,
browser_state: BrowserState,
task_id: str = "",
workflow_id: str = "",
workflow_run_id: str = "",
) -> bytes: ...