mirror of https://github.com/kortix-ai/suna.git
chore: update daytona packages to version 0.21.0a1 and 0.21.0a4, refactor sandbox methods for consistency
This commit is contained in:
parent
c2461bdb92
commit
0de2748d60
|
@ -551,14 +551,14 @@ files = [
|
|||
|
||||
[[package]]
|
||||
name = "daytona-api-client"
|
||||
version = "0.20.1"
|
||||
version = "0.21.0a1"
|
||||
description = "Daytona"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main", "dev"]
|
||||
files = [
|
||||
{file = "daytona_api_client-0.20.1-py3-none-any.whl", hash = "sha256:4d5023108013365eba76bd0bd4704f30dee54c13e2ac5b62e8c88bcd4af5db92"},
|
||||
{file = "daytona_api_client-0.20.1.tar.gz", hash = "sha256:ff2061f7e7dc9c935a9087216600be277cb9cf6b8c1eecdfe333ef30d6b208fd"},
|
||||
{file = "daytona_api_client-0.21.0a1-py3-none-any.whl", hash = "sha256:a81862114e710f0fcce71a9a700790dda2900f2344f7d286f3504814057697c1"},
|
||||
{file = "daytona_api_client-0.21.0a1.tar.gz", hash = "sha256:40e9c862a6a8d142e88422b17837fd3cb3d14a376412bf11109b2b2effacf1c9"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -569,14 +569,14 @@ urllib3 = ">=1.25.3,<3.0.0"
|
|||
|
||||
[[package]]
|
||||
name = "daytona-api-client-async"
|
||||
version = "0.20.1"
|
||||
version = "0.21.0a1"
|
||||
description = "Daytona"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main", "dev"]
|
||||
files = [
|
||||
{file = "daytona_api_client_async-0.20.1-py3-none-any.whl", hash = "sha256:f24e06e3ab6e554214ed064f1b4c8723356c76c14c69de9a73a6cad60a386127"},
|
||||
{file = "daytona_api_client_async-0.20.1.tar.gz", hash = "sha256:043045cb173b0b53416c19a9e276124a5c4fe14209f409a8572ef1975240e53f"},
|
||||
{file = "daytona_api_client_async-0.21.0a1-py3-none-any.whl", hash = "sha256:d5944b5f003811a6274a4ca0f13f934789afc9fe6e6aadcf1a6f33b723eda8b5"},
|
||||
{file = "daytona_api_client_async-0.21.0a1.tar.gz", hash = "sha256:cd5204905687bb5d690e933476dd67ed1e04b994d9362be4d158ab5af41d0b65"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -589,14 +589,14 @@ urllib3 = ">=1.25.3,<3.0.0"
|
|||
|
||||
[[package]]
|
||||
name = "daytona-sdk"
|
||||
version = "0.20.2"
|
||||
version = "0.21.0a4"
|
||||
description = "Python SDK for Daytona"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main", "dev"]
|
||||
files = [
|
||||
{file = "daytona_sdk-0.20.2-py3-none-any.whl", hash = "sha256:ec83c6aeb1a712904ebdfc8f56dab8a3b85f92102fc5fc1b0c7ff8a4af79473e"},
|
||||
{file = "daytona_sdk-0.20.2.tar.gz", hash = "sha256:2796d19ce92cc45a0dd5c62457b4b0147e0e34514ec1d4807e6364bcd213a010"},
|
||||
{file = "daytona_sdk-0.21.0a4-py3-none-any.whl", hash = "sha256:74bffdb2c0f2fff089208972ef14bb562963490fbb35d87eb87e58e8a846b2ca"},
|
||||
{file = "daytona_sdk-0.21.0a4.tar.gz", hash = "sha256:399c7507f0810012745916625b122857fe817a4e79e634f27a38b816567e8438"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -605,8 +605,8 @@ aiofiles = ">=24.1.0,<24.2.0"
|
|||
aiohttp = ">=3.12.0,<4.0.0"
|
||||
aiohttp_retry = ">=2.9.0,<3.0.0"
|
||||
boto3 = ">=1.0.0,<2.0.0"
|
||||
daytona_api_client = ">=0.20.1,<0.21.0"
|
||||
daytona_api_client_async = ">=0.20.1,<0.21.0"
|
||||
daytona_api_client = "0.21.0a1"
|
||||
daytona_api_client_async = "0.21.0a1"
|
||||
Deprecated = ">=1.2.18,<2.0.0"
|
||||
environs = ">=9.5.0,<10.0.0"
|
||||
httpx = ">=0.28.0,<0.29.0"
|
||||
|
@ -3904,4 +3904,4 @@ testing = ["coverage[toml]", "zope.event", "zope.testing"]
|
|||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "09a851f3db2d0b1f130405a69c1661c453f82ce23e078256bc6749662af897a7"
|
||||
content-hash = "f6a13156e73a31fd91ed8b923ee3b388c855282a2ed51ab23197af4fa0de99ff"
|
||||
|
|
|
@ -41,7 +41,7 @@ exa-py = "^1.9.1"
|
|||
e2b-code-interpreter = "^1.2.0"
|
||||
certifi = "2024.2.2"
|
||||
python-ripgrep = "0.0.6"
|
||||
daytona_sdk = "^0.20.2"
|
||||
daytona_sdk = "^0.21.0a4"
|
||||
boto3 = "^1.34.0"
|
||||
openai = "^1.72.0"
|
||||
nest-asyncio = "^1.6.0"
|
||||
|
@ -68,7 +68,7 @@ agentpress = "agentpress.cli:main"
|
|||
include = "agentpress"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
daytona-sdk = "^0.20.2"
|
||||
daytona-sdk = "^0.21.0a4"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
|
|
|
@ -21,7 +21,9 @@ exa-py>=1.9.1
|
|||
e2b-code-interpreter>=1.2.0
|
||||
certifi==2024.2.2
|
||||
python-ripgrep==0.0.6
|
||||
daytona-sdk==0.20.2
|
||||
daytona-sdk==0.21.0a4
|
||||
daytona-api-client==0.21.0a1
|
||||
daytona-api-client-async==0.21.0a1
|
||||
boto3>=1.34.0
|
||||
openai>=1.72.0
|
||||
nest-asyncio>=1.6.0
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
from daytona_sdk import Daytona, DaytonaConfig, CreateSandboxParams, Sandbox, SessionExecuteRequest
|
||||
from daytona_api_client.models.workspace_state import WorkspaceState
|
||||
from daytona_sdk import Daytona, DaytonaConfig, CreateSandboxFromImageParams, Sandbox, SessionExecuteRequest, Resources, SandboxState
|
||||
from dotenv import load_dotenv
|
||||
from utils.logger import logger
|
||||
from utils.config import config
|
||||
|
@ -38,17 +37,17 @@ async def get_or_start_sandbox(sandbox_id: str):
|
|||
logger.info(f"Getting or starting sandbox with ID: {sandbox_id}")
|
||||
|
||||
try:
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
|
||||
# Check if sandbox needs to be started
|
||||
if sandbox.instance.state == WorkspaceState.ARCHIVED or sandbox.instance.state == WorkspaceState.STOPPED:
|
||||
logger.info(f"Sandbox is in {sandbox.instance.state} state. Starting...")
|
||||
if sandbox.state == SandboxState.ARCHIVED or sandbox.state == SandboxState.STOPPED:
|
||||
logger.info(f"Sandbox is in {sandbox.state} state. Starting...")
|
||||
try:
|
||||
daytona.start(sandbox)
|
||||
# Wait a moment for the sandbox to initialize
|
||||
# sleep(5)
|
||||
# Refresh sandbox state after starting
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
|
||||
# Start supervisord in a session when restarting
|
||||
start_supervisord_session(sandbox)
|
||||
|
@ -91,7 +90,7 @@ def create_sandbox(password: str, project_id: str = None):
|
|||
logger.debug(f"Using sandbox_id as label: {project_id}")
|
||||
labels = {'id': project_id}
|
||||
|
||||
params = CreateSandboxParams(
|
||||
params = CreateSandboxFromImageParams(
|
||||
image=Configuration.SANDBOX_IMAGE_NAME,
|
||||
public=True,
|
||||
labels=labels,
|
||||
|
@ -108,11 +107,11 @@ def create_sandbox(password: str, project_id: str = None):
|
|||
"CHROME_DEBUGGING_HOST": "localhost",
|
||||
"CHROME_CDP": ""
|
||||
},
|
||||
resources={
|
||||
"cpu": 2,
|
||||
"memory": 4,
|
||||
"disk": 5,
|
||||
},
|
||||
resources=Resources(
|
||||
cpu=2,
|
||||
memory=4,
|
||||
disk=5,
|
||||
),
|
||||
auto_stop_interval=15,
|
||||
auto_archive_interval=24 * 60,
|
||||
)
|
||||
|
@ -133,7 +132,7 @@ async def delete_sandbox(sandbox_id: str):
|
|||
|
||||
try:
|
||||
# Get the sandbox
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
|
||||
# Delete the sandbox
|
||||
daytona.remove(sandbox)
|
||||
|
|
|
@ -162,7 +162,7 @@ async def archive_sandbox(project: Dict[str, Any], dry_run: bool) -> bool:
|
|||
return True
|
||||
|
||||
# Get the sandbox
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
|
||||
# Check sandbox state - it must be stopped before archiving
|
||||
sandbox_info = sandbox.info()
|
||||
|
|
|
@ -170,7 +170,7 @@ async def archive_sandbox(project: Dict[str, Any], dry_run: bool) -> bool:
|
|||
return True
|
||||
|
||||
# Get the sandbox
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
|
||||
# Check sandbox state - it must be stopped before archiving
|
||||
sandbox_info = sandbox.info()
|
||||
|
|
|
@ -83,7 +83,7 @@ async def delete_sandboxes(projects: List[Dict[str, Any]]) -> None:
|
|||
logger.info(f"Deleting sandbox {sandbox_id} for project '{project_name}' (ID: {project_id})")
|
||||
|
||||
# Get the sandbox and delete it
|
||||
sandbox = daytona.get_current_sandbox(sandbox_id)
|
||||
sandbox = daytona.get(sandbox_id)
|
||||
daytona.delete(sandbox)
|
||||
|
||||
logger.info(f"Successfully deleted sandbox {sandbox_id}")
|
||||
|
|
Loading…
Reference in New Issue