From 49653c2d50008c675df162a79ba3eeb5a5e01e83 Mon Sep 17 00:00:00 2001 From: sujini kudipudi Date: Tue, 26 May 2026 13:04:30 +0530 Subject: [PATCH 1/3] fix: correctly handle issues relation array in linkPrToClaim --- src/inngest/functions/process-pr-event.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/inngest/functions/process-pr-event.ts b/src/inngest/functions/process-pr-event.ts index e62a6256..5ec48aab 100644 --- a/src/inngest/functions/process-pr-event.ts +++ b/src/inngest/functions/process-pr-event.ts @@ -170,12 +170,11 @@ async function linkPrToClaim( .is('linked_pr_url', null); for (const claim of claims ?? []) { - const issuesField = claim['issues'] as unknown as { - repo_full_name: string; - github_issue_number: number; - }; - const issue = issuesField; - if (!issue) continue; + const raw = (claim as unknown as { issues: unknown }).issues; + const issue = Array.isArray(raw) + ? (raw[0] as { repo_full_name?: string; github_issue_number?: number } | undefined) + : (raw as { repo_full_name?: string; github_issue_number?: number } | undefined); + if (!issue?.repo_full_name || typeof issue.github_issue_number !== 'number') continue; if (issue.repo_full_name === repo && issueRefs.includes(issue.github_issue_number)) { await sb.from('recommendations').update({ linked_pr_url: prUrl }).eq('id', claim.id); return { linked: true, recId: claim.id }; From 07a608eb224948e0b35d29370e219b5500053bf7 Mon Sep 17 00:00:00 2001 From: sujini kudipudi Date: Thu, 28 May 2026 16:19:11 +0530 Subject: [PATCH 2/3] fix(webhook): ignore bare issue references for xp awards --- src/inngest/functions/process-pr-event.test.ts | 6 +++--- src/inngest/functions/process-pr-event.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/inngest/functions/process-pr-event.test.ts b/src/inngest/functions/process-pr-event.test.ts index e5ca9654..d9498ab2 100644 --- a/src/inngest/functions/process-pr-event.test.ts +++ b/src/inngest/functions/process-pr-event.test.ts @@ -10,12 +10,12 @@ describe('extractIssueNumbers', () => { expect(extractIssueNumbers('fixes #45 and resolves #67')).toEqual([45, 67]); }); - it('finds bare "#7" references', () => { - expect(extractIssueNumbers('related to #7')).toEqual([7]); + it('ignores bare "#7" references', () => { + expect(extractIssueNumbers('related to #7')).toEqual([]); }); it('dedupes repeated numbers', () => { - expect(extractIssueNumbers('#5 #5 closes #5')).toEqual([5]); + expect(extractIssueNumbers('closes #5 fixes #5')).toEqual([5]); }); it('ignores non-issue # like #foo', () => { diff --git a/src/inngest/functions/process-pr-event.ts b/src/inngest/functions/process-pr-event.ts index 5ec48aab..7c73a543 100644 --- a/src/inngest/functions/process-pr-event.ts +++ b/src/inngest/functions/process-pr-event.ts @@ -49,13 +49,13 @@ type PrPayload = { }; }; -const ISSUE_REF = /(?:close[sd]?|fixe[sd]?|resolve[sd]?)\s+#(\d+)|#(\d+)/gi; +const ISSUE_REF = /(?:close[sd]?|fixe[sd]?|resolve[sd]?)\s+#(\d+)/gi; export function extractIssueNumbers(text: string | null | undefined): number[] { if (!text) return []; const found = new Set(); for (const m of text.matchAll(ISSUE_REF)) { - const n = parseInt(m[1] ?? m[2] ?? '', 10); + const n = parseInt(m[1] ?? '', 10); if (Number.isFinite(n)) found.add(n); } return [...found]; From 30cf0fba0adbeb56d389dd9be132ae3251182e42 Mon Sep 17 00:00:00 2001 From: sujini kudipudi Date: Thu, 28 May 2026 16:21:35 +0530 Subject: [PATCH 3/3] test: fix process-pr-event test expectations --- src/inngest/functions/process-pr-event.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/inngest/functions/process-pr-event.test.ts b/src/inngest/functions/process-pr-event.test.ts index d9498ab2..1a80c8d7 100644 --- a/src/inngest/functions/process-pr-event.test.ts +++ b/src/inngest/functions/process-pr-event.test.ts @@ -19,7 +19,7 @@ describe('extractIssueNumbers', () => { }); it('ignores non-issue # like #foo', () => { - expect(extractIssueNumbers('section #foo and #1')).toEqual([1]); + expect(extractIssueNumbers('section #foo and #1')).toEqual([]); }); it('returns empty on null/empty', () => {