Add PR A CLI browser command parity with MCP (#4789)

This commit is contained in:
Marc Kelechava
2026-02-18 10:53:55 -08:00
committed by GitHub
parent 94fa05b689
commit 2c5d8022d7
9 changed files with 1119 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ from skyvern.cli.core.session_manager import (
BrowserNotAvailableError,
SessionState,
browser_session,
close_current_session,
get_current_session,
get_page,
no_browser_error,
@@ -21,6 +22,7 @@ __all__ = [
"BrowserNotAvailableError",
"SessionState",
"browser_session",
"close_current_session",
"get_current_session",
"get_page",
"get_skyvern",

View File

@@ -95,10 +95,40 @@ async def skyvern_session_close(
with Timer() as timer:
try:
if session_id:
matching_cloud_session = (
current.context is not None
and current.context.mode == "cloud_session"
and current.context.session_id == session_id
)
skyvern = get_skyvern()
result = await do_session_close(skyvern, session_id)
if current.context and current.context.session_id == session_id:
result = None
close_error: Exception | None = None
try:
result = await do_session_close(skyvern, session_id)
except Exception as e:
close_error = e
if matching_cloud_session:
if current.browser is None:
set_current_session(SessionState())
raise RuntimeError("Expected active browser for matching cloud session")
try:
await current.browser.close()
except Exception as browser_err:
if close_error is not None:
raise browser_err from close_error
raise
finally:
set_current_session(SessionState())
elif current.context and current.context.session_id == session_id:
set_current_session(SessionState())
if close_error is not None:
raise close_error
if result is None:
raise RuntimeError("Expected session close result after successful close operation")
timer.mark("sdk")
return make_result(
"skyvern_session_close",