fix(core): handle optional response fields from code assist API (#20345)

This commit is contained in:
Sehoon Shon
2026-02-27 11:52:37 -05:00
committed by GitHub
parent 514d431049
commit e709789067
5 changed files with 58 additions and 24 deletions
+21 -4
View File
@@ -18,6 +18,7 @@ import type { AuthClient } from 'google-auth-library';
import type { ValidationHandler } from '../fallback/types.js';
import { ChangeAuthRequestedError } from '../utils/errors.js';
import { ValidationRequiredError } from '../utils/googleQuotaErrors.js';
import { debugLogger } from '../utils/debugLogger.js';
export class ProjectIdRequiredError extends Error {
constructor() {
@@ -130,11 +131,20 @@ export async function setupUser(
}
if (loadRes.currentTier) {
if (!loadRes.paidTier?.id && !loadRes.currentTier.id) {
debugLogger.warn(
'Warning: Code Assist API did not return a user tier ID. Defaulting to STANDARD tier.',
);
}
if (!loadRes.cloudaicompanionProject) {
if (projectId) {
return {
projectId,
userTier: loadRes.paidTier?.id ?? loadRes.currentTier.id,
userTier:
loadRes.paidTier?.id ??
loadRes.currentTier.id ??
UserTierId.STANDARD,
userTierName: loadRes.paidTier?.name ?? loadRes.currentTier.name,
};
}
@@ -144,13 +154,20 @@ export async function setupUser(
}
return {
projectId: loadRes.cloudaicompanionProject,
userTier: loadRes.paidTier?.id ?? loadRes.currentTier.id,
userTier:
loadRes.paidTier?.id ?? loadRes.currentTier.id ?? UserTierId.STANDARD,
userTierName: loadRes.paidTier?.name ?? loadRes.currentTier.name,
};
}
const tier = getOnboardTier(loadRes);
if (!tier.id) {
debugLogger.warn(
'Warning: Code Assist API did not return an onboarding tier ID. Defaulting to STANDARD tier.',
);
}
let onboardReq: OnboardUserRequest;
if (tier.id === UserTierId.FREE) {
// The free tier uses a managed google cloud project. Setting a project in the `onboardUser` request causes a `Precondition Failed` error.
@@ -183,7 +200,7 @@ export async function setupUser(
if (projectId) {
return {
projectId,
userTier: tier.id,
userTier: tier.id ?? UserTierId.STANDARD,
userTierName: tier.name,
};
}
@@ -193,7 +210,7 @@ export async function setupUser(
return {
projectId: lroRes.response.cloudaicompanionProject.id,
userTier: tier.id,
userTier: tier.id ?? UserTierId.STANDARD,
userTierName: tier.name,
};
}