diff --git a/enterprise/poetry.lock b/enterprise/poetry.lock index 072988f79f..3e8bdc2364 100644 --- a/enterprise/poetry.lock +++ b/enterprise/poetry.lock @@ -5759,8 +5759,8 @@ wsproto = ">=1.2.0" [package.source] type = "git" url = "https://github.com/OpenHands/agent-sdk.git" -reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" -resolved_reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" subdirectory = "openhands-agent-server" [[package]] @@ -5805,9 +5805,9 @@ memory-profiler = "^0.61.0" numpy = "*" openai = "1.99.9" openhands-aci = "0.3.2" -openhands-agent-server = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109", subdirectory = "openhands-agent-server"} -openhands-sdk = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109", subdirectory = "openhands-sdk"} -openhands-tools = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109", subdirectory = "openhands-tools"} +openhands-agent-server = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce", subdirectory = "openhands-agent-server"} +openhands-sdk = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce", subdirectory = "openhands-sdk"} +openhands-tools = {git = "https://github.com/OpenHands/agent-sdk.git", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce", subdirectory = "openhands-tools"} opentelemetry-api = "^1.33.1" opentelemetry-exporter-otlp-proto-grpc = "^1.33.1" pathspec = "^0.12.1" @@ -5887,8 +5887,8 @@ boto3 = ["boto3 (>=1.35.0)"] [package.source] type = "git" url = "https://github.com/OpenHands/agent-sdk.git" -reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" -resolved_reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" subdirectory = "openhands-sdk" [[package]] @@ -5914,8 +5914,8 @@ pydantic = ">=2.11.7" [package.source] type = "git" url = "https://github.com/OpenHands/agent-sdk.git" -reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" -resolved_reference = "ce0a71af55dfce101f7419fbdb0116178f01e109" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" subdirectory = "openhands-tools" [[package]] diff --git a/openhands/app_server/app_conversation/app_conversation_models.py b/openhands/app_server/app_conversation/app_conversation_models.py index 880ced3135..fbc660e15b 100644 --- a/openhands/app_server/app_conversation/app_conversation_models.py +++ b/openhands/app_server/app_conversation/app_conversation_models.py @@ -1,11 +1,11 @@ from datetime import datetime from enum import Enum -from uuid import UUID, uuid4 +from uuid import uuid4 from pydantic import BaseModel, Field from openhands.agent_server.models import SendMessageRequest -from openhands.agent_server.utils import utc_now +from openhands.agent_server.utils import OpenHandsUUID, utc_now from openhands.app_server.event_callback.event_callback_models import ( EventCallbackProcessor, ) @@ -19,7 +19,7 @@ from openhands.storage.data_models.conversation_metadata import ConversationTrig class AppConversationInfo(BaseModel): """Conversation info which does not contain status.""" - id: UUID = Field(default_factory=uuid4) + id: OpenHandsUUID = Field(default_factory=uuid4) created_by_user_id: str | None sandbox_id: str @@ -125,11 +125,11 @@ class AppConversationStartTask(BaseModel): we kick off a background task for it. Once the conversation is started, the app_conversation_id is populated.""" - id: UUID = Field(default_factory=uuid4) + id: OpenHandsUUID = Field(default_factory=uuid4) created_by_user_id: str | None status: AppConversationStartTaskStatus = AppConversationStartTaskStatus.WORKING detail: str | None = None - app_conversation_id: UUID | None = Field( + app_conversation_id: OpenHandsUUID | None = Field( default=None, description='The id of the app_conversation, if READY' ) sandbox_id: str | None = Field( diff --git a/openhands/app_server/event_callback/event_callback_models.py b/openhands/app_server/event_callback/event_callback_models.py index c88a7be1f0..4e39bc6a42 100644 --- a/openhands/app_server/event_callback/event_callback_models.py +++ b/openhands/app_server/event_callback/event_callback_models.py @@ -9,7 +9,7 @@ from uuid import UUID, uuid4 from pydantic import Field -from openhands.agent_server.utils import utc_now +from openhands.agent_server.utils import OpenHandsUUID, utc_now from openhands.app_server.event_callback.event_callback_result_models import ( EventCallbackResult, EventCallbackResultStatus, @@ -58,7 +58,7 @@ class LoggingCallbackProcessor(EventCallbackProcessor): class CreateEventCallbackRequest(OpenHandsModel): - conversation_id: UUID | None = Field( + conversation_id: OpenHandsUUID | None = Field( default=None, description=( 'Optional filter on the conversation to which this callback applies' @@ -74,7 +74,7 @@ class CreateEventCallbackRequest(OpenHandsModel): class EventCallback(CreateEventCallbackRequest): - id: UUID = Field(default_factory=uuid4) + id: OpenHandsUUID = Field(default_factory=uuid4) created_at: datetime = Field(default_factory=utc_now) diff --git a/openhands/app_server/event_callback/event_callback_result_models.py b/openhands/app_server/event_callback/event_callback_result_models.py index 0a76726570..cc966fe2cc 100644 --- a/openhands/app_server/event_callback/event_callback_result_models.py +++ b/openhands/app_server/event_callback/event_callback_result_models.py @@ -1,10 +1,10 @@ from datetime import datetime from enum import Enum -from uuid import UUID, uuid4 +from uuid import uuid4 from pydantic import BaseModel, Field -from openhands.agent_server.utils import utc_now +from openhands.agent_server.utils import OpenHandsUUID, utc_now from openhands.sdk.event.types import EventID @@ -21,11 +21,11 @@ class EventCallbackResultSortOrder(Enum): class EventCallbackResult(BaseModel): """Object representing the result of an event callback.""" - id: UUID = Field(default_factory=uuid4) + id: OpenHandsUUID = Field(default_factory=uuid4) status: EventCallbackResultStatus - event_callback_id: UUID + event_callback_id: OpenHandsUUID event_id: EventID - conversation_id: UUID + conversation_id: OpenHandsUUID detail: str | None = None created_at: datetime = Field(default_factory=utc_now) diff --git a/openhands/app_server/sandbox/sandbox_spec_service.py b/openhands/app_server/sandbox/sandbox_spec_service.py index 1c47818336..10687e2231 100644 --- a/openhands/app_server/sandbox/sandbox_spec_service.py +++ b/openhands/app_server/sandbox/sandbox_spec_service.py @@ -11,7 +11,7 @@ from openhands.sdk.utils.models import DiscriminatedUnionMixin # The version of the agent server to use for deployments. # Typically this will be the same as the values from the pyproject.toml -AGENT_SERVER_IMAGE = 'ghcr.io/openhands/agent-server:ce0a71a-python' +AGENT_SERVER_IMAGE = 'ghcr.io/openhands/agent-server:3d8af53-python' class SandboxSpecService(ABC): diff --git a/poetry.lock b/poetry.lock index 254e75a16d..f6273ecdc1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -254,20 +254,19 @@ files = [ [[package]] name = "anthropic" -version = "0.72.0" +version = "0.59.0" description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "anthropic-0.72.0-py3-none-any.whl", hash = "sha256:0e9f5a7582f038cab8efbb4c959e49ef654a56bfc7ba2da51b5a7b8a84de2e4d"}, - {file = "anthropic-0.72.0.tar.gz", hash = "sha256:8971fe76dcffc644f74ac3883069beb1527641115ae0d6eb8fa21c1ce4082f7a"}, + {file = "anthropic-0.59.0-py3-none-any.whl", hash = "sha256:cbc8b3dccef66ad6435c4fa1d317e5ebb092399a4b88b33a09dc4bf3944c3183"}, + {file = "anthropic-0.59.0.tar.gz", hash = "sha256:d710d1ef0547ebbb64b03f219e44ba078e83fc83752b96a9b22e9726b523fd8f"}, ] [package.dependencies] anyio = ">=3.5.0,<5" distro = ">=1.7.0,<2" -docstring-parser = ">=0.15,<1" google-auth = {version = ">=2,<3", extras = ["requests"], optional = true, markers = "extra == \"vertex\""} httpx = ">=0.25.0,<1" jiter = ">=0.4.0,<1" @@ -276,7 +275,7 @@ sniffio = "*" typing-extensions = ">=4.10,<5" [package.extras] -aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.9)"] +aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.8)"] bedrock = ["boto3 (>=1.28.57)", "botocore (>=1.31.57)"] vertex = ["google-auth[requests] (>=2,<3)"] @@ -1205,19 +1204,19 @@ botocore = ["botocore"] [[package]] name = "browser-use" -version = "0.8.0" +version = "0.7.10" description = "Make websites accessible for AI agents" optional = false python-versions = "<4.0,>=3.11" groups = ["main"] files = [ - {file = "browser_use-0.8.0-py3-none-any.whl", hash = "sha256:b7c299e38ec1c1aec42a236cc6ad2268a366226940d6ff9d88ed461afd5a1cc3"}, - {file = "browser_use-0.8.0.tar.gz", hash = "sha256:2136eb3251424f712a08ee379c9337237c2f93b29b566807db599cf94e6abb5e"}, + {file = "browser_use-0.7.10-py3-none-any.whl", hash = "sha256:669e12571a0c0c4c93e5fd26abf9e2534eb9bacbc510328aedcab795bd8906a9"}, + {file = "browser_use-0.7.10.tar.gz", hash = "sha256:f93ce59e06906c12d120360dee4aa33d83618ddf7c9a575dd0ac517d2de7ccbc"}, ] [package.dependencies] aiohttp = "3.12.15" -anthropic = ">=0.68.1,<1.0.0" +anthropic = ">=0.58.2,<1.0.0" anyio = ">=4.9.0" authlib = ">=1.6.0" bubus = ">=1.5.6" @@ -1249,11 +1248,11 @@ typing-extensions = ">=4.12.2" uuid7 = ">=0.1.0" [package.extras] -all = ["agentmail (==0.0.59)", "boto3 (>=1.38.45)", "botocore (>=1.37.23)", "click (>=8.1.8)", "imgcat (>=0.6.0)", "langchain-openai (>=0.3.26)", "rich (>=14.0.0)", "textual (>=3.2.0)"] +all = ["agentmail (>=0.0.53)", "boto3 (>=1.38.45)", "botocore (>=1.37.23)", "click (>=8.1.8)", "imgcat (>=0.6.0)", "langchain-openai (>=0.3.26)", "rich (>=14.0.0)", "textual (>=3.2.0)"] aws = ["boto3 (>=1.38.45)"] cli = ["click (>=8.1.8)", "rich (>=14.0.0)", "textual (>=3.2.0)"] -eval = ["anyio (>=4.9.0)", "browserbase (==1.4.0)", "datamodel-code-generator (>=0.26.0)", "hyperbrowser (==0.47.0)", "lmnr[all] (==0.7.17)", "psutil (>=7.0.0)"] -examples = ["agentmail (==0.0.59)", "botocore (>=1.37.23)", "imgcat (>=0.6.0)", "langchain-openai (>=0.3.26)"] +eval = ["anyio (>=4.9.0)", "browserbase (==1.4.0)", "datamodel-code-generator (>=0.26.0)", "hyperbrowser (==0.47.0)", "lmnr[all] (==0.7.10)", "psutil (>=7.0.0)"] +examples = ["agentmail (>=0.0.53)", "botocore (>=1.37.23)", "imgcat (>=0.6.0)", "langchain-openai (>=0.3.26)"] video = ["imageio[ffmpeg] (>=2.37.0)", "numpy (>=2.3.2)"] [[package]] @@ -5712,11 +5711,8 @@ files = [ {file = "lxml-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121"}, {file = "lxml-5.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92"}, - {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e"}, {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5"}, - {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188"}, {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6"}, {file = "lxml-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063"}, {file = "lxml-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49"}, @@ -7276,15 +7272,13 @@ llama = ["llama-index (>=0.12.29,<0.13.0)", "llama-index-core (>=0.12.29,<0.13.0 [[package]] name = "openhands-agent-server" -version = "1.0.0a5" +version = "1.0.0a4" description = "OpenHands Agent Server - REST/WebSocket interface for OpenHands AI Agent" optional = false python-versions = ">=3.12" groups = ["main"] -files = [ - {file = "openhands_agent_server-1.0.0a5-py3-none-any.whl", hash = "sha256:823fecd33fd45ba64acc6960beda24df2af6520c26c8c110564d0e3679c53186"}, - {file = "openhands_agent_server-1.0.0a5.tar.gz", hash = "sha256:65458923905f215666e59654e47f124e4c597fe982ede7d54184c8795d810a35"}, -] +files = [] +develop = false [package.dependencies] aiosqlite = ">=0.19" @@ -7297,17 +7291,22 @@ uvicorn = ">=0.31.1" websockets = ">=12" wsproto = ">=1.2.0" +[package.source] +type = "git" +url = "https://github.com/OpenHands/agent-sdk.git" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +subdirectory = "openhands-agent-server" + [[package]] name = "openhands-sdk" -version = "1.0.0a5" +version = "1.0.0a4" description = "OpenHands SDK - Core functionality for building AI agents" optional = false python-versions = ">=3.12" groups = ["main"] -files = [ - {file = "openhands_sdk-1.0.0a5-py3-none-any.whl", hash = "sha256:db20272b04cf03627f9f7d1e87992078ac4ce15d188955a2962aa9e754d0af03"}, - {file = "openhands_sdk-1.0.0a5.tar.gz", hash = "sha256:8888d6892d58cf9b11a71fa80086156c0b6c9a0b50df6839c0a9cafffba2338c"}, -] +files = [] +develop = false [package.dependencies] fastmcp = ">=2.11.3" @@ -7322,28 +7321,40 @@ websockets = ">=12" [package.extras] boto3 = ["boto3 (>=1.35.0)"] +[package.source] +type = "git" +url = "https://github.com/OpenHands/agent-sdk.git" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +subdirectory = "openhands-sdk" + [[package]] name = "openhands-tools" -version = "1.0.0a5" +version = "1.0.0a4" description = "OpenHands Tools - Runtime tools for AI agents" optional = false python-versions = ">=3.12" groups = ["main"] -files = [ - {file = "openhands_tools-1.0.0a5-py3-none-any.whl", hash = "sha256:74c27e23e6adc9a0bad00e32448bd4872019ce0786474e8de2fbf2d7c0887e8e"}, - {file = "openhands_tools-1.0.0a5.tar.gz", hash = "sha256:6c67454e612596e95c5151267659ddd3b633a5d4a1b70b348f7f913c62146562"}, -] +files = [] +develop = false [package.dependencies] bashlex = ">=0.18" binaryornot = ">=0.4.4" -browser-use = ">=0.8.0" +browser-use = ">=0.7.7" cachetools = "*" func-timeout = ">=4.3.5" libtmux = ">=0.46.2" openhands-sdk = "*" pydantic = ">=2.11.7" +[package.source] +type = "git" +url = "https://github.com/OpenHands/agent-sdk.git" +reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +resolved_reference = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" +subdirectory = "openhands-tools" + [[package]] name = "openpyxl" version = "3.1.5" @@ -16510,4 +16521,4 @@ third-party-runtimes = ["daytona", "e2b-code-interpreter", "modal", "runloop-api [metadata] lock-version = "2.1" python-versions = "^3.12,<3.14" -content-hash = "f2234ef5fb5e97bc187d433eae9fcab8903a830d6557fb3926b0c3f37730dd17" +content-hash = "88c894ef3b6bb22b5e0f0dd92f3cede5f4145cb5b52d1970ff0e1d1780e7a4c9" diff --git a/pyproject.toml b/pyproject.toml index 0fdb907b18..2013b20f6b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -113,12 +113,12 @@ e2b-code-interpreter = { version = "^2.0.0", optional = true } pybase62 = "^1.0.0" # V1 dependencies -#openhands-agent-server = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-agent-server", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109" } -#openhands-sdk = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-sdk", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109" } -#openhands-tools = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-tools", rev = "ce0a71af55dfce101f7419fbdb0116178f01e109" } -openhands-sdk = "1.0.0a5" -openhands-agent-server = "1.0.0a5" -openhands-tools = "1.0.0a5" +openhands-agent-server = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-agent-server", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" } +openhands-sdk = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-sdk", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" } +openhands-tools = { git = "https://github.com/OpenHands/agent-sdk.git", subdirectory = "openhands-tools", rev = "3d8af53b2f0259dc98555a4acd4238f90e0afbce" } +#openhands-sdk = "1.0.0a5" +#openhands-agent-server = "1.0.0a5" +#openhands-tools = "1.0.0a5" python-jose = { version = ">=3.3", extras = [ "cryptography" ] } sqlalchemy = { extras = [ "asyncio" ], version = "^2.0.40" } pg8000 = "^1.31.5"