Surface GitHub auto-merge actions (#1001)

* Surface GitHub auto-merge actions

* Namespace GitHub auto-merge RPC

* Update workspace git refresh test expectation

* Avoid redundant GitHub refresh queue
This commit is contained in:
Mohamed Boudra
2026-05-14 17:48:05 +08:00
committed by GitHub
parent 44292b2b69
commit eb7fa02ac8
27 changed files with 3029 additions and 105 deletions
+23 -6
View File
@@ -11,6 +11,8 @@ import {
GitHubCommandError,
createGitHubService,
resolveGitHubRepo,
type GitHubCurrentPullRequestStatus,
type GitHubPullRequestStatusFacts,
type GitHubService,
type PullRequestMergeable,
} from "../services/github-service.js";
@@ -2318,6 +2320,7 @@ export interface PullRequestStatus {
checks?: PullRequestCheck[];
checksStatus?: ChecksStatus;
reviewDecision?: ReviewDecision;
github?: GitHubPullRequestStatusFacts;
}
export interface PullRequestStatusResult {
@@ -2402,7 +2405,7 @@ export async function getPullRequestStatus(
return status;
})
.catch((error) => {
if (error instanceof GitHubCommandError) {
if (!options?.force && error instanceof GitHubCommandError) {
const stale = lastSuccessfulPullRequestStatus.get(cacheKey);
if (stale) {
return stale;
@@ -2433,11 +2436,25 @@ async function getPullRequestStatusUncached(
}
try {
const lookupTarget = await resolvePullRequestStatusLookupTarget(cwd, head);
const status = await github.getCurrentPullRequestStatus({
cwd,
...lookupTarget,
reason: options?.reason,
});
let status: GitHubCurrentPullRequestStatus | null;
if (options?.force) {
const reason = options.reason;
if (!reason) {
throw new Error("Forced PR status read requires a reason");
}
status = await github.getCurrentPullRequestStatus({
cwd,
...lookupTarget,
force: true,
reason,
});
} else {
status = await github.getCurrentPullRequestStatus({
cwd,
...lookupTarget,
reason: options?.reason,
});
}
return {
status,
githubFeaturesEnabled: true,