diff --git a/enterprise/saas_server.py b/enterprise/saas_server.py index 4eaf4a6439..ec1480cbda 100644 --- a/enterprise/saas_server.py +++ b/enterprise/saas_server.py @@ -37,8 +37,12 @@ from server.routes.mcp_patch import patch_mcp_server # noqa: E402 from server.routes.oauth_device import oauth_device_router # noqa: E402 from server.routes.readiness import readiness_router # noqa: E402 from server.routes.user import saas_user_router # noqa: E402 -from server.sharing.shared_conversation_router import router as shared_conversation_router # noqa: E402 -from server.sharing.shared_event_router import router as shared_event_router # noqa: E402 +from server.sharing.shared_conversation_router import ( # noqa: E402 + router as shared_conversation_router, +) +from server.sharing.shared_event_router import ( # noqa: E402 + router as shared_event_router, +) from openhands.server.app import app as base_app # noqa: E402 from openhands.server.listen_socket import sio # noqa: E402 diff --git a/enterprise/server/sharing/filesystem_shared_event_service.py b/enterprise/server/sharing/filesystem_shared_event_service.py index 2042d40c97..5807f11403 100644 --- a/enterprise/server/sharing/filesystem_shared_event_service.py +++ b/enterprise/server/sharing/filesystem_shared_event_service.py @@ -15,11 +15,7 @@ from typing import AsyncGenerator from uuid import UUID from fastapi import Request - -from openhands.agent_server.models import EventPage, EventSortOrder -from openhands.app_server.event.event_service import EventService -from openhands.app_server.event_callback.event_callback_models import EventKind -from openhands.app_server.services.injector import InjectorState +from enterprise.server.sharing.sql_shared_conversation_info_service import SQLSharedConversationInfoService from server.sharing.shared_conversation_info_service import ( SharedConversationInfoService, ) @@ -27,6 +23,11 @@ from server.sharing.shared_event_service import ( SharedEventService, SharedEventServiceInjector, ) + +from openhands.agent_server.models import EventPage, EventSortOrder +from openhands.app_server.event.event_service import EventService +from openhands.app_server.event_callback.event_callback_models import EventKind +from openhands.app_server.services.injector import InjectorState from openhands.sdk import Event logger = logging.getLogger(__name__) @@ -122,15 +123,14 @@ class SharedEventServiceImplInjector(SharedEventServiceInjector): # Define inline to prevent circular lookup from openhands.app_server.config import ( get_event_service, - get_shared_conversation_info_service, + get_db_session, ) async with ( - get_shared_conversation_info_service( - state, request - ) as shared_conversation_info_service, + get_db_session(state, request) as db_session, get_event_service(state, request) as event_service, ): + shared_conversation_info_service = SQLSharedConversationInfoService(db_session=db_session) service = SharedEventServiceImpl( shared_conversation_info_service=shared_conversation_info_service, event_service=event_service, diff --git a/enterprise/server/sharing/shared_conversation_info_service.py b/enterprise/server/sharing/shared_conversation_info_service.py index bd2842fcff..a1fdec6718 100644 --- a/enterprise/server/sharing/shared_conversation_info_service.py +++ b/enterprise/server/sharing/shared_conversation_info_service.py @@ -3,12 +3,13 @@ from abc import ABC, abstractmethod from datetime import datetime from uuid import UUID -from openhands.app_server.services.injector import Injector from server.sharing.shared_conversation_models import ( SharedConversation, SharedConversationPage, SharedConversationSortOrder, ) + +from openhands.app_server.services.injector import Injector from openhands.sdk.utils.models import DiscriminatedUnionMixin diff --git a/enterprise/server/sharing/shared_conversation_router.py b/enterprise/server/sharing/shared_conversation_router.py index 7ad941f94b..789933b149 100644 --- a/enterprise/server/sharing/shared_conversation_router.py +++ b/enterprise/server/sharing/shared_conversation_router.py @@ -5,8 +5,6 @@ from typing import Annotated from uuid import UUID from fastapi import APIRouter, Depends, Query - -from enterprise.server.sharing.sql_shared_conversation_info_service import SQLSharedConversationInfoServiceInjector from server.sharing.shared_conversation_info_service import ( SharedConversationInfoService, ) @@ -16,6 +14,10 @@ from server.sharing.shared_conversation_models import ( SharedConversationSortOrder, ) +from enterprise.server.sharing.sql_shared_conversation_info_service import ( + SQLSharedConversationInfoServiceInjector, +) + router = APIRouter(prefix='/api/shared-conversations', tags=['Sharing']) shared_conversation_info_service_dependency = Depends( SQLSharedConversationInfoServiceInjector().depends diff --git a/enterprise/server/sharing/shared_event_router.py b/enterprise/server/sharing/shared_event_router.py index c2179b6920..4048bf63a8 100644 --- a/enterprise/server/sharing/shared_event_router.py +++ b/enterprise/server/sharing/shared_event_router.py @@ -5,17 +5,17 @@ from typing import Annotated from uuid import UUID from fastapi import APIRouter, Depends, Query - -from openhands.agent_server.models import EventPage, EventSortOrder -from enterprise.server.sharing.filesystem_shared_event_service import SharedEventServiceImplInjector -from openhands.app_server.event_callback.event_callback_models import EventKind from server.sharing.shared_event_service import SharedEventService + +from enterprise.server.sharing.filesystem_shared_event_service import ( + SharedEventServiceImplInjector, +) +from openhands.agent_server.models import EventPage, EventSortOrder +from openhands.app_server.event_callback.event_callback_models import EventKind from openhands.sdk import Event router = APIRouter(prefix='/api/shared-events', tags=['Sharing']) -shared_event_service_dependency = Depends( - SharedEventServiceImplInjector().depends -) +shared_event_service_dependency = Depends(SharedEventServiceImplInjector().depends) # Read methods diff --git a/enterprise/server/sharing/sql_shared_conversation_info_service.py b/enterprise/server/sharing/sql_shared_conversation_info_service.py index 6de2f4c60c..f86a6045bb 100644 --- a/enterprise/server/sharing/sql_shared_conversation_info_service.py +++ b/enterprise/server/sharing/sql_shared_conversation_info_service.py @@ -15,13 +15,6 @@ from typing import AsyncGenerator from uuid import UUID from fastapi import Request -from sqlalchemy import select -from sqlalchemy.ext.asyncio import AsyncSession - -from openhands.app_server.app_conversation.sql_app_conversation_info_service import ( - StoredConversationMetadata, -) -from openhands.app_server.services.injector import InjectorState from server.sharing.shared_conversation_info_service import ( SharedConversationInfoService, SharedConversationInfoServiceInjector, @@ -31,6 +24,13 @@ from server.sharing.shared_conversation_models import ( SharedConversationPage, SharedConversationSortOrder, ) +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +from openhands.app_server.app_conversation.sql_app_conversation_info_service import ( + StoredConversationMetadata, +) +from openhands.app_server.services.injector import InjectorState from openhands.integrations.provider import ProviderType from openhands.sdk.llm import MetricsSnapshot from openhands.sdk.llm.utils.metrics import TokenUsage diff --git a/openhands/app_server/app_conversation/app_conversation_router.py b/openhands/app_server/app_conversation/app_conversation_router.py index 0f79be439a..77700114a9 100644 --- a/openhands/app_server/app_conversation/app_conversation_router.py +++ b/openhands/app_server/app_conversation/app_conversation_router.py @@ -29,7 +29,7 @@ else: return await async_iterator.__anext__() -from fastapi import APIRouter,HTTPException, Query, Request, status +from fastapi import APIRouter, HTTPException, Query, Request, status from fastapi.responses import JSONResponse, StreamingResponse from sqlalchemy.ext.asyncio import AsyncSession diff --git a/openhands/app_server/event/filesystem_event_service.py b/openhands/app_server/event/filesystem_event_service.py index f3f42912cd..1f98fcec05 100644 --- a/openhands/app_server/event/filesystem_event_service.py +++ b/openhands/app_server/event/filesystem_event_service.py @@ -1,25 +1,21 @@ """Filesystem-based EventService implementation.""" -import asyncio -import glob import json -import logging from dataclasses import dataclass -from datetime import datetime from pathlib import Path from typing import AsyncGenerator from uuid import UUID from fastapi import Request -from openhands.agent_server.models import EventPage, EventSortOrder from openhands.app_server.app_conversation.app_conversation_info_service import ( AppConversationInfoService, ) from openhands.app_server.errors import OpenHandsError from openhands.app_server.event.event_service import EventService, EventServiceInjector -from openhands.app_server.event.filesystem_event_service_base import FilesystemEventServiceBase -from openhands.app_server.event_callback.event_callback_models import EventKind +from openhands.app_server.event.filesystem_event_service_base import ( + FilesystemEventServiceBase, +) from openhands.app_server.services.injector import InjectorState from openhands.sdk import Event diff --git a/openhands/app_server/event/filesystem_event_service_base.py b/openhands/app_server/event/filesystem_event_service_base.py index 4d6dff6b99..b957f5f24a 100644 --- a/openhands/app_server/event/filesystem_event_service_base.py +++ b/openhands/app_server/event/filesystem_event_service_base.py @@ -1,13 +1,13 @@ -from abc import abstractmethod import asyncio -from datetime import datetime import glob +from abc import abstractmethod +from datetime import datetime from pathlib import Path from uuid import UUID -from openhands.sdk import Event from openhands.agent_server.models import EventPage, EventSortOrder from openhands.app_server.event_callback.event_callback_models import EventKind +from openhands.sdk import Event class FilesystemEventServiceBase: