Fix Gemini local execution and diagnostics

This commit is contained in:
Dotta
2026-03-14 21:36:05 -05:00
parent 5814249ea9
commit c44dbf79cb
5 changed files with 90 additions and 10 deletions

View File

@@ -231,6 +231,8 @@ export function describeGeminiFailure(parsed: Record<string, unknown>): string |
}
const GEMINI_AUTH_REQUIRED_RE = /(?:not\s+authenticated|please\s+authenticate|api[_ ]?key\s+(?:required|missing|invalid)|authentication\s+required|unauthorized|invalid\s+credentials|not\s+logged\s+in|login\s+required|run\s+`?gemini\s+auth(?:\s+login)?`?\s+first)/i;
const GEMINI_QUOTA_EXHAUSTED_RE =
/(?:resource_exhausted|quota|rate[-\s]?limit|too many requests|\b429\b|billing details)/i;
export function detectGeminiAuthRequired(input: {
parsed: Record<string, unknown> | null;
@@ -248,6 +250,22 @@ export function detectGeminiAuthRequired(input: {
return { requiresAuth };
}
export function detectGeminiQuotaExhausted(input: {
parsed: Record<string, unknown> | null;
stdout: string;
stderr: string;
}): { exhausted: boolean } {
const errors = extractGeminiErrorMessages(input.parsed ?? {});
const messages = [...errors, input.stdout, input.stderr]
.join("\n")
.split(/\r?\n/)
.map((line) => line.trim())
.filter(Boolean);
const exhausted = messages.some((line) => GEMINI_QUOTA_EXHAUSTED_RE.test(line));
return { exhausted };
}
export function isGeminiTurnLimitResult(
parsed: Record<string, unknown> | null | undefined,
exitCode?: number | null,