async function extractCheckRunLog()

in src/mcp/github-checks-server.ts [160:204]


async function extractCheckRunLog(
    octokit: Octokit,
    owner: string,
    repo: string,
    checkRun: any
): Promise<string | null> {
    try {
        // Extract job ID from details URL
        const jobId = extractJobIdFromUrl(checkRun.html_url, `${owner}/${repo}`);

        if (!jobId) {
            // Fallback to check run output text
            return checkRun.output?.text || null;
        }

        // Try to download workflow job logs
        try {
            const logsResponse = await octokit.rest.actions.downloadJobLogsForWorkflowRun({owner, repo, job_id: jobId});
            let logText: string;
            const data: unknown = (logsResponse as any).data;
            if (typeof data === 'string') {
                logText = data;
            } else {
                logText = String(data);
            }

            const logLines = logText.split('\n');
            const cleanedLogs = clearTimestampFromGhLogs(logLines);
            const relevantInfo = extractRelevantInfo(cleanedLogs);

            return relevantInfo || null;
        } catch (logError) {
            // Fallback to check run output text
            const outputText = checkRun.output?.text;
            if (outputText) {
                const logLines = outputText.split('\n');
                const relevantInfo = extractRelevantInfo(logLines);
                return relevantInfo || null;
            }
            return null;
        }
    } catch (error) {
        return null;
    }
}