@@ -41642,6 +41642,24 @@ async function getPRDiff(octokit, context) {
4164241642 }
4164341643}
4164441644
41645+ async function shouldReviewPR(octokit, context, requiredLabel) {
41646+ if (!requiredLabel) {
41647+ return true;
41648+ }
41649+
41650+ try {
41651+ const { data: labels } = await octokit.rest.issues.listLabelsOnIssue({
41652+ owner: context.repo.owner,
41653+ repo: context.repo.repo,
41654+ issue_number: context.payload.pull_request.number,
41655+ });
41656+
41657+ return labels.some((label) => label.name === requiredLabel);
41658+ } catch (error) {
41659+ throw new Error(`Failed to fetch PR labels: ${error.message}`);
41660+ }
41661+ }
41662+
4164541663async function analyzeDiff(diff, modelId, openRouterKey, customPrompt) {
4164641664 const defaultPrompt = `You are a highly skilled staff software engineer reviewing a pull request.
4164741665
@@ -41740,11 +41758,23 @@ async function run() {
4174041758 const openRouterKey = core.getInput('open_router_key', { required: true });
4174141759 const modelId = core.getInput('model_id', { required: true });
4174241760 const customPrompt = core.getInput('custom_prompt');
41761+ const reviewLabel = core.getInput('review_label');
4174341762
4174441763 // Get GitHub token and create octokit client
4174541764 const token = core.getInput('github_token', { required: true });
4174641765 const octokit = github.getOctokit(token);
4174741766
41767+ // Check if we should review this PR based on label
41768+ const shouldReview = await shouldReviewPR(
41769+ octokit,
41770+ github.context,
41771+ reviewLabel
41772+ );
41773+ if (!shouldReview) {
41774+ core.info('Skipping review - required label not found on PR');
41775+ return;
41776+ }
41777+
4174841778 // Get PR diff
4174941779 const diff = await getPRDiff(octokit, github.context);
4175041780
0 commit comments