mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-01-09 14:57:59 -05:00
Use the same event stream instance for conversations as sessions (#9545)
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
@@ -15,6 +15,7 @@ class ServerConversation:
|
||||
event_stream: EventStream
|
||||
runtime: Runtime
|
||||
user_id: str | None
|
||||
_attach_to_existing: bool = False
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -22,30 +23,43 @@ class ServerConversation:
|
||||
file_store: FileStore,
|
||||
config: OpenHandsConfig,
|
||||
user_id: str | None,
|
||||
event_stream: EventStream | None = None,
|
||||
runtime: Runtime | None = None,
|
||||
):
|
||||
self.sid = sid
|
||||
self.config = config
|
||||
self.file_store = file_store
|
||||
self.user_id = user_id
|
||||
self.event_stream = EventStream(sid, file_store, user_id)
|
||||
|
||||
if event_stream is None:
|
||||
event_stream = EventStream(sid, file_store, user_id)
|
||||
self.event_stream = event_stream
|
||||
|
||||
if config.security.security_analyzer:
|
||||
self.security_analyzer = options.SecurityAnalyzers.get(
|
||||
config.security.security_analyzer, SecurityAnalyzer
|
||||
)(self.event_stream)
|
||||
|
||||
runtime_cls = get_runtime_cls(self.config.runtime)
|
||||
self.runtime = runtime_cls(
|
||||
config=config,
|
||||
event_stream=self.event_stream,
|
||||
sid=self.sid,
|
||||
attach_to_existing=True,
|
||||
headless_mode=False,
|
||||
)
|
||||
if runtime:
|
||||
self._attach_to_existing = True
|
||||
else:
|
||||
runtime_cls = get_runtime_cls(self.config.runtime)
|
||||
runtime = runtime_cls(
|
||||
config=config,
|
||||
event_stream=self.event_stream,
|
||||
sid=self.sid,
|
||||
attach_to_existing=True,
|
||||
headless_mode=False,
|
||||
)
|
||||
self.runtime = runtime
|
||||
|
||||
async def connect(self) -> None:
|
||||
await self.runtime.connect()
|
||||
if not self._attach_to_existing:
|
||||
await self.runtime.connect()
|
||||
|
||||
async def disconnect(self) -> None:
|
||||
if self._attach_to_existing:
|
||||
return
|
||||
if self.event_stream:
|
||||
self.event_stream.close()
|
||||
asyncio.create_task(call_sync_from_async(self.runtime.close))
|
||||
|
||||
Reference in New Issue
Block a user