mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-09-30 22:03:14 +00:00
29 lines
1 KiB
Python
29 lines
1 KiB
Python
import os
|
|
|
|
from daytona import CreateSandboxFromSnapshotParams, Daytona, DaytonaConfig
|
|
from langchain_daytona import DaytonaSandbox
|
|
|
|
DEFAULT_DAYTONA_SANDBOX_SNAPSHOT = "daytonaio/sandbox:0.6.0"
|
|
DAYTONA_SANDBOX_SNAPSHOT_ENV = "DAYTONA_SANDBOX_SNAPSHOT"
|
|
|
|
|
|
def _get_daytona_sandbox_params() -> CreateSandboxFromSnapshotParams:
|
|
snapshot = os.getenv(DAYTONA_SANDBOX_SNAPSHOT_ENV, DEFAULT_DAYTONA_SANDBOX_SNAPSHOT).strip()
|
|
if not snapshot:
|
|
raise ValueError(f"{DAYTONA_SANDBOX_SNAPSHOT_ENV} must not be empty")
|
|
return CreateSandboxFromSnapshotParams(snapshot=snapshot)
|
|
|
|
|
|
def create_daytona_sandbox(sandbox_id: str | None = None):
|
|
api_key = os.getenv("DAYTONA_API_KEY")
|
|
if not api_key:
|
|
raise ValueError("DAYTONA_API_KEY environment variable is required")
|
|
|
|
daytona = Daytona(config=DaytonaConfig(api_key=api_key))
|
|
|
|
if sandbox_id:
|
|
sandbox = daytona.get(sandbox_id)
|
|
else:
|
|
sandbox = daytona.create(params=_get_daytona_sandbox_params())
|
|
|
|
return DaytonaSandbox(sandbox=sandbox)
|