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