diff --git a/openhands/server/listen_socket.py b/openhands/server/listen_socket.py index 4f6e0bbcc1..20a96c9f81 100644 --- a/openhands/server/listen_socket.py +++ b/openhands/server/listen_socket.py @@ -48,6 +48,34 @@ def create_provider_tokens_object( return MappingProxyType(provider_information) +async def setup_init_convo_settings( + user_id: str | None, providers_set: list[ProviderType] +) -> ConversationInitData: + settings_store = await SettingsStoreImpl.get_instance(config, user_id) + settings = await settings_store.load() + + secrets_store = await SecretsStoreImpl.get_instance(config, user_id) + user_secrets: UserSecrets | None = await secrets_store.load() + + if not settings: + raise ConnectionRefusedError( + 'Settings not found', {'msg_id': 'CONFIGURATION$SETTINGS_NOT_FOUND'} + ) + + session_init_args: dict = {} + session_init_args = {**settings.__dict__, **session_init_args} + + git_provider_tokens = create_provider_tokens_object(providers_set) + if server_config.app_mode != AppMode.SAAS and user_secrets: + git_provider_tokens = user_secrets.provider_tokens + + session_init_args['git_provider_tokens'] = git_provider_tokens + if user_secrets: + session_init_args['custom_secrets'] = user_secrets.custom_secrets + + return ConversationInitData(**session_init_args) + + @sio.event async def connect(connection_id: str, environ: dict) -> None: try: @@ -85,30 +113,7 @@ async def connect(connection_id: str, environ: dict) -> None: conversation_id, cookies_str, authorization_header ) - settings_store = await SettingsStoreImpl.get_instance(config, user_id) - settings = await settings_store.load() - - secrets_store = await SecretsStoreImpl.get_instance(config, user_id) - user_secrets: UserSecrets | None = await secrets_store.load() - - if not settings: - raise ConnectionRefusedError( - 'Settings not found', {'msg_id': 'CONFIGURATION$SETTINGS_NOT_FOUND'} - ) - session_init_args: dict = {} - if settings: - session_init_args = {**settings.__dict__, **session_init_args} - - git_provider_tokens = create_provider_tokens_object(providers_set) - if server_config.app_mode != AppMode.SAAS and user_secrets: - git_provider_tokens = user_secrets.provider_tokens - - session_init_args['git_provider_tokens'] = git_provider_tokens - if user_secrets: - session_init_args['custom_secrets'] = user_secrets.custom_secrets - - conversation_init_data = ConversationInitData(**session_init_args) - + conversation_init_data = await setup_init_convo_settings(user_id, providers_set) agent_loop_info = await conversation_manager.join_conversation( conversation_id, connection_id,