support browser type choice for pbs (#4406)
This commit is contained in:
@@ -97,7 +97,11 @@ from skyvern.forge.sdk.schemas.organizations import (
|
||||
Organization,
|
||||
OrganizationAuthToken,
|
||||
)
|
||||
from skyvern.forge.sdk.schemas.persistent_browser_sessions import Extensions, PersistentBrowserSession
|
||||
from skyvern.forge.sdk.schemas.persistent_browser_sessions import (
|
||||
Extensions,
|
||||
PersistentBrowserSession,
|
||||
PersistentBrowserType,
|
||||
)
|
||||
from skyvern.forge.sdk.schemas.runs import Run
|
||||
from skyvern.forge.sdk.schemas.task_generations import TaskGeneration
|
||||
from skyvern.forge.sdk.schemas.task_v2 import TaskV2, TaskV2Status, Thought, ThoughtType
|
||||
@@ -4666,6 +4670,7 @@ class AgentDB(BaseAlchemyDB):
|
||||
timeout_minutes: int | None = None,
|
||||
proxy_location: ProxyLocationInput = ProxyLocation.RESIDENTIAL,
|
||||
extensions: list[Extensions] | None = None,
|
||||
browser_type: PersistentBrowserType | None = None,
|
||||
) -> PersistentBrowserSession:
|
||||
"""Create a new persistent browser session."""
|
||||
extensions_str: list[str] | None = (
|
||||
@@ -4680,6 +4685,7 @@ class AgentDB(BaseAlchemyDB):
|
||||
timeout_minutes=timeout_minutes,
|
||||
proxy_location=_serialize_proxy_location(proxy_location),
|
||||
extensions=extensions_str,
|
||||
browser_type=browser_type.value if browser_type else None,
|
||||
)
|
||||
session.add(browser_session)
|
||||
await session.commit()
|
||||
|
||||
@@ -855,6 +855,7 @@ class PersistentBrowserSessionModel(Base):
|
||||
ecs_task_arn = Column(String, nullable=True)
|
||||
proxy_location = Column(String, nullable=True)
|
||||
extensions = Column(JSON, nullable=True)
|
||||
browser_type = Column(String, nullable=True)
|
||||
started_at = Column(DateTime, nullable=True)
|
||||
completed_at = Column(DateTime, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow, nullable=False, index=True)
|
||||
|
||||
@@ -94,6 +94,7 @@ async def create_browser_session(
|
||||
timeout_minutes=browser_session_request.timeout,
|
||||
proxy_location=browser_session_request.proxy_location,
|
||||
extensions=browser_session_request.extensions,
|
||||
browser_type=browser_session_request.browser_type,
|
||||
)
|
||||
return await BrowserSessionResponse.from_browser_session(browser_session)
|
||||
|
||||
|
||||
@@ -26,6 +26,11 @@ def is_final_status(status: str | None) -> bool:
|
||||
return status in FINAL_STATUSES
|
||||
|
||||
|
||||
class PersistentBrowserType(StrEnum):
|
||||
MSEdge = "msedge"
|
||||
Chrome = "chrome"
|
||||
|
||||
|
||||
class Extensions(StrEnum):
|
||||
AdBlocker = "ad-blocker"
|
||||
CaptchaSolver = "captcha-solver"
|
||||
@@ -49,6 +54,7 @@ class PersistentBrowserSession(BaseModel):
|
||||
modified_at: datetime
|
||||
deleted_at: datetime | None = None
|
||||
extensions: list[Extensions] | None = None
|
||||
browser_type: PersistentBrowserType | None = None
|
||||
|
||||
|
||||
class AddressablePersistentBrowserSession(PersistentBrowserSession):
|
||||
|
||||
Reference in New Issue
Block a user