From 47793d367d9af244ba2cb2b37ceb57d19118c903 Mon Sep 17 00:00:00 2001 From: openhands Date: Sat, 14 Mar 2026 01:49:10 +0000 Subject: [PATCH] Use SDK package exports for public imports Co-authored-by: openhands --- .../app_conversation/app_conversation_models.py | 2 +- .../app_conversation/app_conversation_service_base.py | 8 ++++---- openhands/app_server/app_conversation/skill_loader.py | 3 +-- .../app_conversation/sql_app_conversation_info_service.py | 2 +- .../event_callback/event_callback_result_models.py | 2 +- openhands/server/routes/manage_conversations.py | 2 +- .../unit/app_server/test_app_conversation_service_base.py | 8 ++++---- .../app_server/test_webhook_router_parent_conversation.py | 2 +- tests/unit/app_server/test_webhook_router_stats.py | 7 ++++--- tests/unit/server/data_models/test_conversation.py | 4 ++-- tests/unit/server/routes/test_conversation_routes.py | 2 +- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/openhands/app_server/app_conversation/app_conversation_models.py b/openhands/app_server/app_conversation/app_conversation_models.py index a30b40e56c..137df8b02a 100644 --- a/openhands/app_server/app_conversation/app_conversation_models.py +++ b/openhands/app_server/app_conversation/app_conversation_models.py @@ -12,7 +12,7 @@ from openhands.app_server.event_callback.event_callback_models import ( ) from openhands.app_server.sandbox.sandbox_models import SandboxStatus from openhands.integrations.service_types import ProviderType, SuggestedTask -from openhands.sdk.conversation.state import ConversationExecutionStatus +from openhands.sdk.conversation import ConversationExecutionStatus from openhands.sdk.llm import MetricsSnapshot from openhands.sdk.plugin import PluginSource from openhands.storage.data_models.conversation_metadata import ConversationTrigger diff --git a/openhands/app_server/app_conversation/app_conversation_service_base.py b/openhands/app_server/app_conversation/app_conversation_service_base.py index 52cdf660d1..82cf49f127 100644 --- a/openhands/app_server/app_conversation/app_conversation_service_base.py +++ b/openhands/app_server/app_conversation/app_conversation_service_base.py @@ -28,18 +28,18 @@ from openhands.app_server.app_conversation.skill_loader import ( from openhands.app_server.sandbox.sandbox_models import SandboxInfo from openhands.app_server.user.user_context import UserContext from openhands.sdk import Agent -from openhands.sdk.context.agent_context import AgentContext +from openhands.sdk.context import AgentContext from openhands.sdk.context.condenser import LLMSummarizingCondenser from openhands.sdk.context.skills import Skill from openhands.sdk.llm import LLM -from openhands.sdk.security.analyzer import SecurityAnalyzerBase -from openhands.sdk.security.confirmation_policy import ( +from openhands.sdk.security import ( AlwaysConfirm, ConfirmationPolicyBase, ConfirmRisky, + LLMSecurityAnalyzer, NeverConfirm, + SecurityAnalyzerBase, ) -from openhands.sdk.security.llm_analyzer import LLMSecurityAnalyzer from openhands.sdk.workspace.remote.async_remote_workspace import AsyncRemoteWorkspace _logger = logging.getLogger(__name__) diff --git a/openhands/app_server/app_conversation/skill_loader.py b/openhands/app_server/app_conversation/skill_loader.py index 3638c6e681..629ca37dfc 100644 --- a/openhands/app_server/app_conversation/skill_loader.py +++ b/openhands/app_server/app_conversation/skill_loader.py @@ -19,8 +19,7 @@ from openhands.app_server.sandbox.sandbox_models import SandboxInfo from openhands.app_server.user.user_context import UserContext from openhands.integrations.provider import ProviderType from openhands.integrations.service_types import AuthenticationError -from openhands.sdk.context.skills import Skill -from openhands.sdk.context.skills.trigger import KeywordTrigger, TaskTrigger +from openhands.sdk.context.skills import KeywordTrigger, Skill, TaskTrigger _logger = logging.getLogger(__name__) diff --git a/openhands/app_server/app_conversation/sql_app_conversation_info_service.py b/openhands/app_server/app_conversation/sql_app_conversation_info_service.py index af4528c9a4..a5576b890f 100644 --- a/openhands/app_server/app_conversation/sql_app_conversation_info_service.py +++ b/openhands/app_server/app_conversation/sql_app_conversation_info_service.py @@ -55,7 +55,7 @@ from openhands.app_server.utils.sql_utils import ( create_json_type_decorator, ) from openhands.integrations.provider import ProviderType -from openhands.sdk.conversation.conversation_stats import ConversationStats +from openhands.sdk import ConversationStats from openhands.sdk.event import ConversationStateUpdateEvent from openhands.sdk.llm import MetricsSnapshot from openhands.sdk.llm.utils.metrics import TokenUsage 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 cc966fe2cc..84e5924420 100644 --- a/openhands/app_server/event_callback/event_callback_result_models.py +++ b/openhands/app_server/event_callback/event_callback_result_models.py @@ -5,7 +5,7 @@ from uuid import uuid4 from pydantic import BaseModel, Field from openhands.agent_server.utils import OpenHandsUUID, utc_now -from openhands.sdk.event.types import EventID +from openhands.sdk.event import EventID class EventCallbackResultStatus(Enum): diff --git a/openhands/server/routes/manage_conversations.py b/openhands/server/routes/manage_conversations.py index 547ca6e252..f4d35c7a94 100644 --- a/openhands/server/routes/manage_conversations.py +++ b/openhands/server/routes/manage_conversations.py @@ -71,7 +71,7 @@ from openhands.integrations.service_types import ( ) from openhands.runtime import get_runtime_cls from openhands.runtime.runtime_status import RuntimeStatus -from openhands.sdk.conversation.state import ConversationExecutionStatus +from openhands.sdk.conversation import ConversationExecutionStatus from openhands.server.data_models.agent_loop_info import AgentLoopInfo from openhands.server.data_models.conversation_info import ConversationInfo from openhands.server.data_models.conversation_info_result_set import ( diff --git a/tests/unit/app_server/test_app_conversation_service_base.py b/tests/unit/app_server/test_app_conversation_service_base.py index f1d0711416..a019c3637d 100644 --- a/tests/unit/app_server/test_app_conversation_service_base.py +++ b/tests/unit/app_server/test_app_conversation_service_base.py @@ -470,7 +470,7 @@ def test_create_security_analyzer_returns_llm_analyzer(): result = service._create_security_analyzer_from_string(security_analyzer_str) # Assert - from openhands.sdk.security.llm_analyzer import LLMSecurityAnalyzer + from openhands.sdk.security import LLMSecurityAnalyzer assert isinstance(result, LLMSecurityAnalyzer) @@ -507,7 +507,7 @@ def test_select_confirmation_policy_when_disabled_returns_never_confirm(): policy = service._select_confirmation_policy(confirmation_mode, security_analyzer) # Assert - from openhands.sdk.security.confirmation_policy import NeverConfirm + from openhands.sdk.security import NeverConfirm assert isinstance(policy, NeverConfirm) @@ -525,7 +525,7 @@ def test_select_confirmation_policy_llm_returns_confirm_risky(): policy = service._select_confirmation_policy(confirmation_mode, security_analyzer) # Assert - from openhands.sdk.security.confirmation_policy import ConfirmRisky + from openhands.sdk.security import ConfirmRisky assert isinstance(policy, ConfirmRisky) @@ -545,7 +545,7 @@ def test_select_confirmation_policy_non_llm_returns_always_confirm( policy = service._select_confirmation_policy(confirmation_mode, security_analyzer) # Assert - from openhands.sdk.security.confirmation_policy import AlwaysConfirm + from openhands.sdk.security import AlwaysConfirm assert isinstance(policy, AlwaysConfirm) diff --git a/tests/unit/app_server/test_webhook_router_parent_conversation.py b/tests/unit/app_server/test_webhook_router_parent_conversation.py index 4d6252ff5d..41c022ccf0 100644 --- a/tests/unit/app_server/test_webhook_router_parent_conversation.py +++ b/tests/unit/app_server/test_webhook_router_parent_conversation.py @@ -23,7 +23,7 @@ from openhands.app_server.sandbox.sandbox_models import SandboxInfo, SandboxStat from openhands.app_server.user.specifiy_user_context import SpecifyUserContext from openhands.app_server.utils.sql_utils import Base from openhands.integrations.provider import ProviderType -from openhands.sdk.conversation.state import ConversationExecutionStatus +from openhands.sdk.conversation import ConversationExecutionStatus from openhands.storage.data_models.conversation_metadata import ConversationTrigger diff --git a/tests/unit/app_server/test_webhook_router_stats.py b/tests/unit/app_server/test_webhook_router_stats.py index 70d51dee31..9f93ea32ed 100644 --- a/tests/unit/app_server/test_webhook_router_stats.py +++ b/tests/unit/app_server/test_webhook_router_stats.py @@ -22,9 +22,10 @@ from openhands.app_server.app_conversation.sql_app_conversation_info_service imp ) from openhands.app_server.user.specifiy_user_context import SpecifyUserContext from openhands.app_server.utils.sql_utils import Base -from openhands.sdk.conversation.conversation_stats import ConversationStats +from openhands.sdk import ConversationStats from openhands.sdk.event import ConversationStateUpdateEvent -from openhands.sdk.llm.utils.metrics import Metrics, TokenUsage +from openhands.sdk.llm import Metrics +from openhands.sdk.llm.utils.metrics import TokenUsage # --------------------------------------------------------------------------- # Fixtures @@ -506,7 +507,7 @@ class TestOnEventStatsProcessing: # Set up process_stats_event to call update_conversation_statistics async def process_stats_event_side_effect(event, conversation_id): # Simulate what process_stats_event does - call update_conversation_statistics - from openhands.sdk.conversation.conversation_stats import ConversationStats + from openhands.sdk import ConversationStats if isinstance(event.value, dict): stats = ConversationStats.model_validate(event.value) diff --git a/tests/unit/server/data_models/test_conversation.py b/tests/unit/server/data_models/test_conversation.py index fc305d170e..b48541bc47 100644 --- a/tests/unit/server/data_models/test_conversation.py +++ b/tests/unit/server/data_models/test_conversation.py @@ -40,8 +40,8 @@ from openhands.integrations.service_types import ( TaskType, ) from openhands.runtime.runtime_status import RuntimeStatus -from openhands.sdk.conversation.state import ConversationExecutionStatus -from openhands.sdk.workspace.models import FileOperationResult +from openhands.sdk.conversation import ConversationExecutionStatus +from openhands.sdk.workspace import FileOperationResult from openhands.sdk.workspace.remote.async_remote_workspace import ( AsyncRemoteWorkspace, ) diff --git a/tests/unit/server/routes/test_conversation_routes.py b/tests/unit/server/routes/test_conversation_routes.py index 9b1e08bc7e..bb7a462097 100644 --- a/tests/unit/server/routes/test_conversation_routes.py +++ b/tests/unit/server/routes/test_conversation_routes.py @@ -28,7 +28,7 @@ from openhands.core.config.mcp_config import MCPConfig, MCPStdioServerConfig from openhands.microagent.microagent import KnowledgeMicroagent, RepoMicroagent from openhands.microagent.types import MicroagentMetadata, MicroagentType from openhands.runtime.runtime_status import RuntimeStatus -from openhands.sdk.conversation.state import ConversationExecutionStatus +from openhands.sdk.conversation import ConversationExecutionStatus from openhands.server.data_models.agent_loop_info import AgentLoopInfo from openhands.server.data_models.conversation_info import ConversationStatus from openhands.server.data_models.conversation_info_result_set import (