fix: add provider tokens to resume conversation endpoint (#11155)

This commit is contained in:
Alona
2025-09-30 17:20:48 -05:00
committed by GitHub
parent 4c89b5ad91
commit d099c21f5d
5 changed files with 374 additions and 11 deletions

View File

@@ -462,6 +462,7 @@ async def start_conversation(
providers_set: ProvidersSetModel,
conversation_id: str = Depends(validate_conversation_id),
user_id: str = Depends(get_user_id),
provider_tokens: PROVIDER_TOKEN_TYPE = Depends(get_provider_tokens),
settings: Settings = Depends(get_user_settings),
conversation_store: ConversationStore = Depends(get_conversation_store),
) -> ConversationResponse:
@@ -471,7 +472,22 @@ async def start_conversation(
to start a conversation. If the conversation is already running, it will
return the existing agent loop info.
"""
logger.info(f'Starting conversation: {conversation_id}')
logger.info(
f'Starting conversation: {conversation_id}',
extra={'session_id': conversation_id},
)
# Log token fetch status
if provider_tokens:
logger.info(
f'/start endpoint: Fetched provider tokens: {list(provider_tokens.keys())}',
extra={'session_id': conversation_id},
)
else:
logger.warning(
'/start endpoint: No provider tokens fetched (provider_tokens is None/empty)',
extra={'session_id': conversation_id},
)
try:
# Check that the conversation exists
@@ -488,7 +504,7 @@ async def start_conversation(
# Set up conversation init data with provider information
conversation_init_data = await setup_init_conversation_settings(
user_id, conversation_id, providers_set.providers_set or []
user_id, conversation_id, providers_set.providers_set or [], provider_tokens
)
# Start the agent loop

View File

@@ -215,7 +215,10 @@ def create_provider_tokens_object(
async def setup_init_conversation_settings(
user_id: str | None, conversation_id: str, providers_set: list[ProviderType]
user_id: str | None,
conversation_id: str,
providers_set: list[ProviderType],
provider_tokens: PROVIDER_TOKEN_TYPE | None = None,
) -> ConversationInitData:
"""Set up conversation initialization data with provider tokens.
@@ -223,6 +226,7 @@ async def setup_init_conversation_settings(
user_id: The user ID
conversation_id: The conversation ID
providers_set: List of provider types to set up tokens for
provider_tokens: Optional provider tokens to use (for SAAS mode resume)
Returns:
ConversationInitData with provider tokens configured
@@ -243,11 +247,30 @@ async def setup_init_conversation_settings(
session_init_args: dict = {}
session_init_args = {**settings.__dict__, **session_init_args}
git_provider_tokens = create_provider_tokens_object(providers_set)
logger.info(f'Git provider scaffold: {git_provider_tokens}')
# Use provided tokens if available (for SAAS resume), otherwise create scaffold
if provider_tokens:
logger.info(
f'Using provided provider_tokens: {list(provider_tokens.keys())}',
extra={'session_id': conversation_id},
)
git_provider_tokens = provider_tokens
else:
logger.info(
f'No provider_tokens provided, creating scaffold for: {providers_set}',
extra={'session_id': conversation_id},
)
git_provider_tokens = create_provider_tokens_object(providers_set)
logger.info(
f'Git provider scaffold: {git_provider_tokens}',
extra={'session_id': conversation_id},
)
if server_config.app_mode != AppMode.SAAS and user_secrets:
git_provider_tokens = user_secrets.provider_tokens
if server_config.app_mode != AppMode.SAAS and user_secrets:
logger.info(
f'Non-SaaS mode: Overriding with user_secrets provider tokens: {list(user_secrets.provider_tokens.keys())}',
extra={'session_id': conversation_id},
)
git_provider_tokens = user_secrets.provider_tokens
session_init_args['git_provider_tokens'] = git_provider_tokens
if user_secrets: