Files
gemini-cli/tools/gemini-cli-bot/metrics/scripts/open_prs.ts
T
gemini-cli-robot ee347a76fd # Fix: 1000-issue metric cap for accurate repository health tracking
## Description
This change updates the `open_issues` and `open_prs` metric scripts to use the GitHub Search API (`gh api search/issues`) instead of `gh issue list` and `gh pr list`.

## Why it is recommended
The current scripts use a hardcoded `--limit 1000`, which caused the `open_issues` metric to cap at 1000. This masks the true size of the repository backlog and prevents accurate analysis of maintenance burden and throughput.

## Expected Metric Improvement
- `open_issues` and `open_prs` will now reflect the true total counts, even if they exceed 1000.
- This will allow for more accurate delta calculations and historical trends.

## Impact
This is a low-risk change that significantly improves data quality for the Gemini CLI Bot Brain, enabling better-informed decisions regarding stale issue management and contributor latency.
2026-04-27 20:05:40 +00:00

34 lines
950 B
TypeScript

/**
* @license
* Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { execSync } from 'node:child_process';
import { GITHUB_OWNER, GITHUB_REPO, type MetricOutput } from '../types.js';
try {
const repo = process.env.GITHUB_REPOSITORY || `${GITHUB_OWNER}/${GITHUB_REPO}`;
const count = execSync(
`gh api "search/issues?q=repo:${repo}+is:pr+is:open" --jq .total_count`,
{
encoding: 'utf-8',
},
).trim();
const metric: MetricOutput = {
metric: 'open_prs',
value: parseInt(count, 10) || 0,
timestamp: new Date().toISOString(),
};
process.stdout.write(JSON.stringify(metric) + '\n');
} catch (err) {
process.stderr.write(`Error fetching open PRs: ${err instanceof Error ? err.message : String(err)}\n`);
const fallback: MetricOutput = {
metric: 'open_prs',
value: 0,
timestamp: new Date().toISOString(),
};
process.stdout.write(JSON.stringify(fallback) + '\n');
}