33 lines
900 B
Python
33 lines
900 B
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from contextvars import ContextVar
|
|
|
|
from skyvern.client import SkyvernEnvironment
|
|
from skyvern.config import settings
|
|
from skyvern.library.skyvern import Skyvern
|
|
|
|
_skyvern_instance: ContextVar[Skyvern | None] = ContextVar("skyvern_instance", default=None)
|
|
|
|
|
|
def get_skyvern() -> Skyvern:
|
|
"""Get or create a Skyvern client instance."""
|
|
instance = _skyvern_instance.get()
|
|
if instance is not None:
|
|
return instance
|
|
|
|
api_key = settings.SKYVERN_API_KEY or os.environ.get("SKYVERN_API_KEY")
|
|
base_url = settings.SKYVERN_BASE_URL or os.environ.get("SKYVERN_BASE_URL")
|
|
|
|
if api_key:
|
|
instance = Skyvern(
|
|
api_key=api_key,
|
|
environment=SkyvernEnvironment.CLOUD,
|
|
base_url=base_url,
|
|
)
|
|
else:
|
|
instance = Skyvern.local()
|
|
|
|
_skyvern_instance.set(instance)
|
|
return instance
|