Skip to content

fix(agent): loginless compile fix — tuple variant pattern + error messages #164

fix(agent): loginless compile fix — tuple variant pattern + error messages

fix(agent): loginless compile fix — tuple variant pattern + error messages #164

# ======================================================================================
# Workflow: Label External Contributors
# ======================================================================================
# Usage:
# - Runs whenever a pull request is opened.
# - Adds the `external-contributor` label to the PR if the PR head repository is
# a fork (i.e. it does not belong to the same repository as the base), and the
# PR is not authored by a bot.
#
# Notes:
# - The workflow triggers on `pull_request_target` rather than `pull_request` so
# that it has the `pull-requests: write` permission needed to apply labels even
# when the PR is opened from a fork. Because we never check out the PR's code
# and only read the event payload, this trigger is safe.
# ======================================================================================
name: Label External Contributors
on:
pull_request_target:
types: [opened]
# Default to a read-only token. The job below widens permissions explicitly.
permissions:
contents: read
jobs:
label-external-contributor:
name: Label external-contributor PRs
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Determine and apply external-contributor label
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const pr = context.payload.pull_request;
const author = pr.user.login;
// Ignore PRs authored by bots.
if (pr.user.type === 'Bot' || author.endsWith('[bot]')) {
console.log(`Skipping bot user: ${author}`);
return;
}
// The PR comes from a fork if its head repo differs from its base repo.
const isFork =
!pr.head.repo ||
pr.head.repo.full_name !== pr.base.repo.full_name;
console.log(
`PR #${pr.number} by ${author}: isFork=${isFork}`,
);
if (!isFork) {
return;
}
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: ['external-contributor'],
});
console.log(`Labeled PR #${pr.number} as external-contributor`);