Fix diff approval race between CLI and IDE (#7609)

Co-authored-by: Shreya Keshive <skeshive@gmail.com>
This commit is contained in:
Rahat Ahmed
2025-09-03 15:53:57 -05:00
committed by GitHub
parent 876d091602
commit 645133d9dd

View File

@@ -217,12 +217,16 @@ export class IdeClient {
});
}
async closeDiff(filePath: string): Promise<string | undefined> {
async closeDiff(
filePath: string,
options?: { suppressNotification?: boolean },
): Promise<string | undefined> {
try {
const result = await this.client?.callTool({
name: `closeDiff`,
arguments: {
filePath,
suppressNotification: options?.suppressNotification,
},
});
@@ -239,8 +243,13 @@ export class IdeClient {
// Closes the diff. Instead of waiting for a notification,
// manually resolves the diff resolver as the desired outcome.
async resolveDiffFromCli(filePath: string, outcome: 'accepted' | 'rejected') {
const content = await this.closeDiff(filePath);
const resolver = this.diffResponses.get(filePath);
const content = await this.closeDiff(filePath, {
// Suppress notification to avoid race where closing the diff rejects the
// request.
suppressNotification: true,
});
if (resolver) {
if (outcome === 'accepted') {
resolver({ status: 'accepted', content });