"""Backward-compatible re-exports from skyvern.cli.core. MCP tools import from here; the canonical implementations live in core/. """ from __future__ import annotations from typing import Any from skyvern.cli.core.artifacts import get_artifact_dir, save_artifact from skyvern.cli.core.result import Artifact, BrowserContext, ErrorCode, Timer, make_error, make_result from skyvern.client.errors import NotFoundError async def raw_http_get(path: str, params: dict[str, Any] | None = None) -> Any: """GET request to Skyvern API for endpoints without SDK methods. Raises NotFoundError on 404, RuntimeError on other HTTP errors. """ from ._session import get_skyvern skyvern = get_skyvern() # Temporary workaround: these MCP routes do not have public Fern SDK methods yet, # so we reach through the generated client's private wrapper. Revisit if the SDK # is regenerated or adds first-class methods for these endpoints. response = await skyvern._client_wrapper.httpx_client.request( path, method="GET", params=params or {}, ) if response.status_code == 404: raise NotFoundError(body={"detail": f"Not found: {path}"}) if response.status_code >= 400: detail = "" try: detail = response.json().get("detail", response.text) except Exception: detail = response.text raise RuntimeError(f"HTTP {response.status_code}: {detail}") if response.status_code == 204: return {} try: return response.json() except Exception: return {"raw": response.text} __all__ = [ "Artifact", "BrowserContext", "ErrorCode", "Timer", "get_artifact_dir", "make_error", "make_result", "raw_http_get", "save_artifact", ]