mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
Reuse Gemini CLI project ID for usage (#1428)
This commit is contained in:
@@ -58,13 +58,17 @@ const CLAUDE_CONFIG = {
|
||||
* @returns {Object} Usage data with quotas
|
||||
*/
|
||||
export async function getUsageForProvider(connection, proxyOptions = null) {
|
||||
const { provider, accessToken, apiKey, providerSpecificData } = connection;
|
||||
const { provider, accessToken, apiKey, providerSpecificData, projectId } = connection;
|
||||
const providerDataWithProjectId = {
|
||||
...(providerSpecificData || {}),
|
||||
...(projectId ? { projectId } : {}),
|
||||
};
|
||||
|
||||
switch (provider) {
|
||||
case "github":
|
||||
return await getGitHubUsage(accessToken, providerSpecificData, proxyOptions);
|
||||
case "gemini-cli":
|
||||
return await getGeminiUsage(accessToken, providerSpecificData, proxyOptions);
|
||||
return await getGeminiUsage(accessToken, providerDataWithProjectId, proxyOptions);
|
||||
case "antigravity":
|
||||
return await getAntigravityUsage(accessToken, providerSpecificData, proxyOptions);
|
||||
case "claude":
|
||||
@@ -222,18 +226,22 @@ async function getGeminiUsage(accessToken, providerSpecificData, proxyOptions =
|
||||
}
|
||||
|
||||
try {
|
||||
// Resolve project id: prefer connection-stored id, else loadCodeAssist lookup
|
||||
let projectId = providerSpecificData?.projectId || null;
|
||||
// Resolve project id: prefer connection-stored id, else loadCodeAssist lookup.
|
||||
// #1271: OAuth save stores projectId on the connection, not providerSpecificData.
|
||||
let projectId = normalizeCloudCodeProjectId(providerSpecificData?.projectId);
|
||||
let plan = "Free";
|
||||
|
||||
if (!projectId) {
|
||||
const subInfo = await getGeminiSubscriptionInfo(accessToken, proxyOptions);
|
||||
projectId = subInfo?.cloudaicompanionProject || null;
|
||||
projectId = normalizeCloudCodeProjectId(subInfo?.cloudaicompanionProject);
|
||||
plan = subInfo?.currentTier?.name || plan;
|
||||
}
|
||||
|
||||
if (!projectId) {
|
||||
return { plan, message: "Gemini CLI project ID not available." };
|
||||
return {
|
||||
plan,
|
||||
message: "Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota.",
|
||||
};
|
||||
}
|
||||
|
||||
const controller = new AbortController();
|
||||
@@ -289,6 +297,14 @@ async function getGeminiUsage(accessToken, providerSpecificData, proxyOptions =
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeCloudCodeProjectId(project) {
|
||||
if (typeof project === "string") return project.trim() || null;
|
||||
if (project && typeof project === "object" && typeof project.id === "string") {
|
||||
return project.id.trim() || null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Gemini CLI subscription info via loadCodeAssist
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user