@oss-autopilot/core - v1.6.3
    Preparing search index...

    Class PRMonitor

    Fetches and enriches open PRs from GitHub for the configured user.

    In v2, all PR data is fetched fresh on each run — no local PR tracking. CI status, reviews, merge conflicts, and maintainer comments are enriched for each PR to compute a FetchedPRStatus.

    Index

    Constructors

    Methods

    • Fetch PRs closed without merge in the last N days.

      Parameters

      • days: number = 7

        Lookback window in days (default: 7)

      Returns Promise<
          {
              closedAt: string;
              closedBy?: string;
              number: number;
              repo: string;
              title: string;
              url: string;
          }[],
      >

      Recently closed PRs

    • Fetch PRs merged in the last N days.

      Parameters

      • days: number = 7

        Lookback window in days (default: 7)

      Returns Promise<
          {
              mergedAt: string;
              number: number;
              repo: string;
              title: string;
              url: string;
          }[],
      >

      Recently merged PRs

    • Fetch metadata (star count and primary language) for a list of repositories. Both fields come from the same repos.get() call — zero additional API cost.

      Parameters

      • repos: string[]

      Returns Promise<Map<string, { language: string | null; stars: number }>>

    • Fetch closed-without-merge PR counts per repository for the configured user.

      Parameters

      • OptionalstarFilter: StarFilter

        Optional filter to exclude low-star repos

      Returns Promise<PRCountsResult<number>>

      Per-repo closed counts with monthly breakdowns

    • Fetch merged PR counts and latest merge dates per repository for the configured user.

      Parameters

      • OptionalstarFilter: StarFilter

        Optional filter to exclude low-star repos

      Returns Promise<PRCountsResult<{ count: number; lastMergedAt: string }>>

      Per-repo merged counts with monthly breakdowns

    • Fetch all open PRs for the configured user fresh from GitHub. This is the main entry point for the v2 architecture.

      Returns Promise<FetchPRsResult>

      All open PRs enriched with status, plus any failures

      If no GitHub username is configured

      import { PRMonitor, requireGitHubToken } from '@oss-autopilot/core';

      const monitor = new PRMonitor(requireGitHubToken());
      const { prs, failures } = await monitor.fetchUserOpenPRs();
      console.log(`Found ${prs.length} open PRs, ${failures.length} failures`);
    • Generate a daily digest from fetched PRs.

      Parameters

      • prs: FetchedPR[]

        All open PRs (active + shelved)

      • recentlyClosedPRs: {
            closedAt: string;
            closedBy?: string;
            number: number;
            repo: string;
            title: string;
            url: string;
        }[] = []

        PRs closed without merge in the last 7 days

      • recentlyMergedPRs: { mergedAt: string; number: number; repo: string; title: string; url: string }[] = []

        PRs merged in the last 7 days

      Returns {
          autoUnshelvedPRs: {
              daysSinceActivity: number;
              number: number;
              repo: string;
              status: "needs_addressing" | "waiting_on_maintainer";
              title: string;
              url: string;
          }[];
          generatedAt: string;
          needsAddressingPRs: any[];
          openPRs: any[];
          recentlyClosedPRs: {
              closedAt: string;
              closedBy?: string;
              number: number;
              repo: string;
              title: string;
              url: string;
          }[];
          recentlyMergedPRs: {
              mergedAt: string;
              number: number;
              repo: string;
              title: string;
              url: string;
          }[];
          shelvedPRs: {
              daysSinceActivity: number;
              number: number;
              repo: string;
              status: "needs_addressing"
              | "waiting_on_maintainer";
              title: string;
              url: string;
          }[];
          summary: {
              mergeRate: number;
              totalActivePRs: number;
              totalMergedAllTime: number;
              totalNeedingAttention: number;
          };
          waitingOnMaintainerPRs: any[];
      }

      Daily digest with categorized PRs and summary stats

    • Update repository scores based on observed PR (called when we detect merged/closed PRs).

      Parameters

      • repo: string

        Repository in "owner/repo" format

      • wasMerged: boolean

        true if the PR was merged, false if closed without merge

      Returns Promise<void>