From 8d19be486eb7d043981222fb4708767bc7cd058c Mon Sep 17 00:00:00 2001 From: Codeflash Bot Date: Wed, 21 Jan 2026 15:56:15 +0200 Subject: [PATCH] Enhance error handling for GitHub App installation checks in code context hash endpoints. Added specific exceptions for installation not found and installation errors, improving logging and user guidance for installation issues. --- js/cf-api/endpoints/code-context-hash.ts | 30 ++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/js/cf-api/endpoints/code-context-hash.ts b/js/cf-api/endpoints/code-context-hash.ts index 7c52fc97e..652e56dc0 100644 --- a/js/cf-api/endpoints/code-context-hash.ts +++ b/js/cf-api/endpoints/code-context-hash.ts @@ -12,6 +12,8 @@ import { validationFailure, internalServerError, conflict, + githubInstallationNotFound, + githubInstallationError, } from "../exceptions/index.js" export async function is_code_being_optimized_again(req: Request, res: Response) { @@ -28,7 +30,19 @@ export async function is_code_being_optimized_again(req: Request, res: Response) } const octokit = await getInstallationOctokitByOwner(githubApp, owner, repo, userId) if (octokit instanceof Error) { - throw internalServerError(octokit.message) + const errorMessage = octokit.message + if (errorMessage.includes("not installed")) { + const installationLink = "https://github.com/apps/codeflash-ai/installations/select_target" + logger.warn("GitHub App not installed on repository", req, { + repo: `${owner}/${repo}`, + installationLink, + }) + throw githubInstallationNotFound( + `${owner}/${repo}. Please install the GitHub App at: ${installationLink}`, + ) + } else { + throw githubInstallationError(errorMessage) + } } // Check collaborator status with error handling @@ -164,7 +178,19 @@ export async function add_optimized_code_context(req: Request, res: Response) { const octokit = await getInstallationOctokitByOwner(githubApp, owner, repo, userId) if (octokit instanceof Error) { - throw internalServerError(octokit.message) + const errorMessage = octokit.message + if (errorMessage.includes("not installed")) { + const installationLink = "https://github.com/apps/codeflash-ai/installations/select_target" + logger.warn("GitHub App not installed on repository", req, { + repo: `${owner}/${repo}`, + installationLink, + }) + throw githubInstallationNotFound( + `${owner}/${repo}. Please install the GitHub App at: ${installationLink}`, + ) + } else { + throw githubInstallationError(errorMessage) + } } // Check collaborator status with error handling