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;
}
}