import type { WorkspaceMergePreview } from "agent-relay-sdk"; import { prMergedState } from "../workspace-pr"; // Populate a preview's PR fields from `gh` ground truth; returns whether the PR is merged // (#168/#304). One home for the PR-landing rule so the worktree- and repoRoot-based previews // can't drift. On a merge it stamps the merge SHA so the relay can finalize a parked pr land. export async function applyPrMergeState(base: WorkspaceMergePreview, cwd: string, branch: string | undefined): Promise { const pr = await prMergedState(cwd, branch); if (!pr) return false; base.prState = pr.state; if (pr.url) base.prUrl = pr.url; if (pr.number) base.prNumber = pr.number; if (pr.reviewDecision) base.reviewDecision = pr.reviewDecision; if (pr.statusCheckRollup) base.statusCheckRollup = pr.statusCheckRollup; if (pr.mergeable) base.mergeable = pr.mergeable; if (pr.mergeStateStatus) base.mergeStateStatus = pr.mergeStateStatus; if (pr.state !== "merged") return false; base.prMerged = true; if (pr.sha) base.prMergeSha = pr.sha; if (pr.title) base.prMergeSubject = pr.title; return true; }