fix(antigravity): enhance error handling and support multiple request bodies

This commit is contained in:
Supra4E8C
2026-01-14 17:13:07 +08:00
parent ebb80df24a
commit a44257edda

View File

@@ -116,6 +116,11 @@ const resolveAntigravityProjectId = async (file: AuthFileItem): Promise<string>
return DEFAULT_ANTIGRAVITY_PROJECT_ID; return DEFAULT_ANTIGRAVITY_PROJECT_ID;
}; };
const isAntigravityUnknownFieldError = (message: string): boolean => {
const normalized = message.toLowerCase();
return normalized.includes('unknown name') && normalized.includes('cannot find field');
};
const fetchAntigravityQuota = async ( const fetchAntigravityQuota = async (
file: AuthFileItem, file: AuthFileItem,
t: TFunction t: TFunction
@@ -127,7 +132,7 @@ const fetchAntigravityQuota = async (
} }
const projectId = await resolveAntigravityProjectId(file); const projectId = await resolveAntigravityProjectId(file);
const requestBody = JSON.stringify({ project_id: projectId }); const requestBodies = [JSON.stringify({ projectId }), JSON.stringify({ project: projectId })];
let lastError = ''; let lastError = '';
let lastStatus: number | undefined; let lastStatus: number | undefined;
@@ -135,13 +140,14 @@ const fetchAntigravityQuota = async (
let hadSuccess = false; let hadSuccess = false;
for (const url of ANTIGRAVITY_QUOTA_URLS) { for (const url of ANTIGRAVITY_QUOTA_URLS) {
for (let attempt = 0; attempt < requestBodies.length; attempt++) {
try { try {
const result = await apiCallApi.request({ const result = await apiCallApi.request({
authIndex, authIndex,
method: 'POST', method: 'POST',
url, url,
header: { ...ANTIGRAVITY_REQUEST_HEADERS }, header: { ...ANTIGRAVITY_REQUEST_HEADERS },
data: requestBody data: requestBodies[attempt]
}); });
if (result.statusCode < 200 || result.statusCode >= 300) { if (result.statusCode < 200 || result.statusCode >= 300) {
@@ -150,8 +156,15 @@ const fetchAntigravityQuota = async (
if (result.statusCode === 403 || result.statusCode === 404) { if (result.statusCode === 403 || result.statusCode === 404) {
priorityStatus ??= result.statusCode; priorityStatus ??= result.statusCode;
} }
if (
result.statusCode === 400 &&
isAntigravityUnknownFieldError(lastError) &&
attempt < requestBodies.length - 1
) {
continue; continue;
} }
break;
}
hadSuccess = true; hadSuccess = true;
const payload = parseAntigravityPayload(result.body ?? result.bodyText); const payload = parseAntigravityPayload(result.body ?? result.bodyText);
@@ -179,6 +192,7 @@ const fetchAntigravityQuota = async (
} }
} }
} }
}
if (hadSuccess) { if (hadSuccess) {
return []; return [];