[Fix]: Ensure provider tokens exist when restarting conversations on local installation (#8313)

This commit is contained in:
Rohit Malhotra 2025-05-06 17:46:51 -04:00 committed by GitHub
parent 59f00e641f
commit e8bd59ec22
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,14 +20,18 @@ from openhands.integrations.provider import PROVIDER_TOKEN_TYPE, ProviderToken
from openhands.integrations.service_types import ProviderType
from openhands.server.session.conversation_init_data import ConversationInitData
from openhands.server.shared import (
SecretsStoreImpl,
SettingsStoreImpl,
config,
conversation_manager,
server_config,
sio,
)
from openhands.server.types import AppMode
from openhands.storage.conversation.conversation_validator import (
create_conversation_validator,
)
from openhands.storage.data_models.user_secrets import UserSecrets
def create_provider_tokens_object(
@ -74,6 +78,9 @@ async def connect(connection_id: str, environ):
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 = await secrets_store.load()
if not settings:
raise ConnectionRefusedError(
'Settings not found', {'msg_id': 'CONFIGURATION$SETTINGS_NOT_FOUND'}
@ -82,9 +89,12 @@ async def connect(connection_id: str, environ):
if settings:
session_init_args = {**settings.__dict__, **session_init_args}
session_init_args['git_provider_tokens'] = create_provider_tokens_object(
providers_set
)
git_provider_tokens = user_secrets.provider_tokens
if server_config.app_mode == AppMode.SAAS:
git_provider_tokens = create_provider_tokens_object(providers_set)
session_init_args['git_provider_tokens'] = git_provider_tokens
conversation_init_data = ConversationInitData(**session_init_args)
event_stream = await conversation_manager.join_conversation(