From 13c27c5178890d4c32425db7966b182f637d7065 Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Thu, 10 Jul 2025 23:50:27 -0700 Subject: [PATCH] browser address schema update (#2931) --- scripts/test_persistent_browsers.py | 17 ----------------- skyvern/forge/sdk/routes/streaming_vnc.py | 5 ++++- skyvern/webeye/persistent_sessions_manager.py | 12 ------------ 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/scripts/test_persistent_browsers.py b/scripts/test_persistent_browsers.py index 5eb3dc25..ced78bb5 100644 --- a/scripts/test_persistent_browsers.py +++ b/scripts/test_persistent_browsers.py @@ -103,18 +103,6 @@ def close_all_sessions() -> None: print(f"Error closing sessions: {str(e)}") -async def direct_get_network_info(session_id: str) -> None: - """Get network info directly from PersistentSessionsManager""" - try: - manager = app.PERSISTENT_SESSIONS_MANAGER - cdp_port, ip_address = await manager.get_network_info(session_id) - print("\nNetwork info:") - print(f" CDP Port: {cdp_port}") - print(f" IP Address: {ip_address}") - except Exception as e: - print(f"Error getting network info: {str(e)}") - - async def direct_list_sessions(organization_id: str) -> None: """List sessions directly from PersistentSessionsManager""" try: @@ -143,11 +131,6 @@ async def handle_direct_command(cmd: str, args: list[str]) -> None: """Handle direct method calls""" if cmd == "help_direct": print_direct_help() - elif cmd == "direct_network": - if not args: - print("Error: session_id required") - return - await direct_get_network_info(args[0]) elif cmd == "direct_list": if not args: print("Error: organization_id required") diff --git a/skyvern/forge/sdk/routes/streaming_vnc.py b/skyvern/forge/sdk/routes/streaming_vnc.py index 77d51fbf..01b69f79 100644 --- a/skyvern/forge/sdk/routes/streaming_vnc.py +++ b/skyvern/forge/sdk/routes/streaming_vnc.py @@ -3,6 +3,7 @@ Streaming VNC WebSocket connections. """ import asyncio +from urllib.parse import urlparse import structlog import websockets @@ -169,7 +170,9 @@ async def loop_stream_vnc(streaming: sc.Streaming) -> None: return browser_address = streaming.browser_session.browser_address - host, _ = browser_address.rsplit(":") + + parsed_browser_address = urlparse(browser_address) + host = parsed_browser_address.hostname vnc_url = f"ws://{host}:{streaming.vnc_port}" LOG.info( diff --git a/skyvern/webeye/persistent_sessions_manager.py b/skyvern/webeye/persistent_sessions_manager.py index 4430d5e8..573d4a88 100644 --- a/skyvern/webeye/persistent_sessions_manager.py +++ b/skyvern/webeye/persistent_sessions_manager.py @@ -16,8 +16,6 @@ LOG = structlog.get_logger() @dataclass class BrowserSession: browser_state: BrowserState - cdp_port: int - cdp_host: str = "localhost" class PersistentSessionsManager: @@ -139,16 +137,6 @@ class PersistentSessionsManager: organization_id=organization_id, ) - async def get_network_info(self, session_id: str) -> tuple[int | None, str | None]: - """Returns cdp port and ip address of the browser session""" - browser_session = self._browser_sessions.get(session_id) - if browser_session: - return ( - browser_session.cdp_port, - browser_session.cdp_host, - ) - return None, None - async def release_browser_session(self, session_id: str, organization_id: str) -> None: """Release a specific browser session.""" await self.database.release_persistent_browser_session(session_id, organization_id)