|
@@ -10,8 +10,9 @@ from openhands.events.observation.agent import AgentStateChangedObservation
|
|
|
from openhands.events.serialization import event_to_dict
|
|
from openhands.events.serialization import event_to_dict
|
|
|
from openhands.events.stream import AsyncEventStreamWrapper
|
|
from openhands.events.stream import AsyncEventStreamWrapper
|
|
|
from openhands.server.auth import get_sid_from_token, sign_token
|
|
from openhands.server.auth import get_sid_from_token, sign_token
|
|
|
|
|
+from openhands.server.routes.settings import SettingsStoreImpl
|
|
|
from openhands.server.session.session_init_data import SessionInitData
|
|
from openhands.server.session.session_init_data import SessionInitData
|
|
|
-from openhands.server.shared import config, openhands_config, session_manager, sio
|
|
|
|
|
|
|
+from openhands.server.shared import config, session_manager, sio
|
|
|
|
|
|
|
|
|
|
|
|
|
@sio.event
|
|
@sio.event
|
|
@@ -24,15 +25,16 @@ async def oh_action(connection_id: str, data: dict):
|
|
|
# If it's an init, we do it here.
|
|
# If it's an init, we do it here.
|
|
|
action = data.get('action', '')
|
|
action = data.get('action', '')
|
|
|
if action == ActionType.INIT:
|
|
if action == ActionType.INIT:
|
|
|
- await openhands_config.github_auth(data)
|
|
|
|
|
- github_token = data.pop('github_token', None)
|
|
|
|
|
- token = data.pop('token', None)
|
|
|
|
|
- latest_event_id = int(data.pop('latest_event_id', -1))
|
|
|
|
|
- kwargs = {k.lower(): v for k, v in (data.get('args') or {}).items()}
|
|
|
|
|
- session_init_data = SessionInitData(**kwargs)
|
|
|
|
|
- session_init_data.github_token = github_token
|
|
|
|
|
- session_init_data.selected_repository = data.get('selected_repository', None)
|
|
|
|
|
- await init_connection(connection_id, token, session_init_data, latest_event_id)
|
|
|
|
|
|
|
+ await init_connection(
|
|
|
|
|
+ connection_id=connection_id,
|
|
|
|
|
+ token=data.get('token', None),
|
|
|
|
|
+ github_token=data.get('github_token', None),
|
|
|
|
|
+ session_init_args={
|
|
|
|
|
+ k.lower(): v for k, v in (data.get('args') or {}).items()
|
|
|
|
|
+ },
|
|
|
|
|
+ latest_event_id=int(data.get('latest_event_id', -1)),
|
|
|
|
|
+ selected_repository=data.get('selected_repository'),
|
|
|
|
|
+ )
|
|
|
return
|
|
return
|
|
|
|
|
|
|
|
logger.info(f'sio:oh_action:{connection_id}')
|
|
logger.info(f'sio:oh_action:{connection_id}')
|
|
@@ -42,9 +44,19 @@ async def oh_action(connection_id: str, data: dict):
|
|
|
async def init_connection(
|
|
async def init_connection(
|
|
|
connection_id: str,
|
|
connection_id: str,
|
|
|
token: str | None,
|
|
token: str | None,
|
|
|
- session_init_data: SessionInitData,
|
|
|
|
|
|
|
+ github_token: str | None,
|
|
|
|
|
+ session_init_args: dict,
|
|
|
latest_event_id: int,
|
|
latest_event_id: int,
|
|
|
|
|
+ selected_repository: str | None,
|
|
|
):
|
|
):
|
|
|
|
|
+ settings_store = await SettingsStoreImpl.get_instance(config, github_token)
|
|
|
|
|
+ settings = await settings_store.load()
|
|
|
|
|
+ if settings:
|
|
|
|
|
+ session_init_args = {**settings.__dict__, **session_init_args}
|
|
|
|
|
+ session_init_args['github_token'] = github_token
|
|
|
|
|
+ session_init_args['selected_repository'] = selected_repository
|
|
|
|
|
+ session_init_data = SessionInitData(**session_init_args)
|
|
|
|
|
+
|
|
|
if token:
|
|
if token:
|
|
|
sid = get_sid_from_token(token, config.jwt_secret)
|
|
sid = get_sid_from_token(token, config.jwt_secret)
|
|
|
if sid == '':
|
|
if sid == '':
|