Fix excessive error logging for missing org-level microagents (#11425)

Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
Graham Neubig
2025-10-19 13:41:28 -04:00
committed by GitHub
parent 640f50d525
commit 7525a95af0
2 changed files with 18 additions and 6 deletions

View File

@@ -449,7 +449,10 @@ class ProviderHandler:
return f'{provider.value}_token'.lower()
async def verify_repo_provider(
self, repository: str, specified_provider: ProviderType | None = None
self,
repository: str,
specified_provider: ProviderType | None = None,
is_optional: bool = False,
) -> Repository:
errors = []
@@ -468,19 +471,22 @@ class ProviderHandler:
errors.append(f'{provider.value}: {str(e)}')
# Log detailed error based on whether we had tokens or not
# For optional repositories (like org-level microagents), use debug level
log_fn = logger.debug if is_optional else logger.error
if not self.provider_tokens:
logger.error(
log_fn(
f'Failed to access repository {repository}: No provider tokens available. '
f'provider_tokens dict is empty.'
)
elif errors:
logger.error(
log_fn(
f'Failed to access repository {repository} with all available providers. '
f'Tried providers: {list(self.provider_tokens.keys())}. '
f'Errors: {"; ".join(errors)}'
)
else:
logger.error(
log_fn(
f'Failed to access repository {repository}: Unknown error (no providers tried, no errors recorded)'
)
raise AuthenticationError(f'Unable to access repo {repository}')
@@ -626,17 +632,22 @@ class ProviderHandler:
f'Microagent file {file_path} not found in {repository}'
)
async def get_authenticated_git_url(self, repo_name: str) -> str:
async def get_authenticated_git_url(
self, repo_name: str, is_optional: bool = False
) -> str:
"""Get an authenticated git URL for a repository.
Args:
repo_name: Repository name (owner/repo)
is_optional: If True, logs at debug level instead of error level when repo not found
Returns:
Authenticated git URL if credentials are available, otherwise regular HTTPS URL
"""
try:
repository = await self.verify_repo_provider(repo_name)
repository = await self.verify_repo_provider(
repo_name, is_optional=is_optional
)
except AuthenticationError:
raise Exception('Git provider authentication issue when getting remote URL')