Skip to content

fix(quota): keep Argon out of the Gemini Pro quota group (2.5.1) - #75

Merged
JoshRob297 merged 1 commit into
mainfrom
fix/argon-quota-group
Oct 31, 2026
Merged

JoshRob297 merged 1 commit into
mainfrom
fix/argon-quota-group

Conversation

@JoshRob297

Copy link
Copy Markdown
Owner

Mismo fallo que CodeRabbit encontro en el PR #606 del upstream, presente tambien aca.

Problema

resolveQuotaGroup mapea todo Gemini que no sea flash a gemini-pro:

if (model) return getModelFamily(model);   // "gemini-4-argon-high" -> gemini-pro

Con soft_quota_threshold_percent por debajo de 100, una peticion a Argon consultaba la cuota de Pro. Un Argon agotado bloqueaba Argon por el motivo equivocado, y un Pro agotado podia quedar oculto detras del numero de Argon.

Ademas, ninguno de los tres constructores de cachedQuota guardaba Argon: el bucket se descartaba o se plegaba a Pro. El tipo QuotaGroup no lo contemplaba.

Cambios

  • QuotaGroup gana "argon"; resolveQuotaGroup resuelve Argon antes de la familia generica.
  • Los tres constructores de cachedQuota lo almacenan aparte: grupos de retrieveUserQuotaSummary, modelos de fetchAvailableModels y el refresco del adaptador v2 (que ademas ahora tiene su propio minimo y reset para argon).

Verificacion

  • npx tsc --noEmit limpio.
  • npx vitest run: 44 archivos, 1162 tests (+1), 25 todo.
  • Test nuevo: con grupos Gemini Models 0.75 y Gemini 4 Argon 0.4, cachedQuota.argon queda en 0.4 y gemini-pro en 0.75.
  • Asserts de resolveQuotaGroup para gemini-4-argon-high/low.
  • npm run build y dist/ regenerado.

Nota

Es latente mientras soft_quota_threshold_percent este en 100 (desactivado), pero el tipo y la cache ya quedan correctos para cuando se active.

resolveQuotaGroup mapped every non-flash Gemini id to gemini-pro, so a soft
quota check for gemini-4-argon-* read the Pro bucket: an exhausted Argon bucket
blocked Argon requests, and a real Pro exhaustion could hide behind Argon.
Argon now resolves to its own group and the three cached-quota builders store it
separately.
@github-actions

Copy link
Copy Markdown

Automated verification

Check Result
typecheck success
tests success
build + dist success
branch clean
typecheck

> opencode-antigravity-auth@2.5.1 typecheck
> tsc --noEmit

tests

> opencode-antigravity-auth@2.5.1 test
> vitest run


�[1m�[30m�[46m RUN �[49m�[39m�[22m �[36mv5.0.5 �[39m�[90m/home/runner/work/opencode-antigravity-auth/opencode-antigravity-auth�[39m

 �[32m✓�[39m src/plugin/transform/gemini.test.ts �[2m(�[22m�[2m130 tests�[22m�[2m)�[22m�[32m 38�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/request-helpers.test.ts �[2m(�[22m�[2m152 tests�[22m�[2m)�[22m�[32m 67�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/accounts.test.ts �[2m(�[22m�[2m110 tests�[22m�[2m)�[22m�[32m 86�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/quota.test.ts �[2m(�[22m�[2m24 tests�[22m�[2m)�[22m�[32m 55�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/claude.test.ts �[2m(�[22m�[2m67 tests�[22m�[2m)�[22m�[32m 28�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/request.test.ts �[2m(�[22m�[2m110 tests�[22m�[2m)�[22m�[32m 92�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/rotation.test.ts �[2m(�[22m�[2m59 tests�[22m�[2m)�[22m�[32m 35�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/cross-model-sanitizer.test.ts �[2m(�[22m�[2m28 tests�[22m�[2m)�[22m�[32m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/model-resolver.test.ts �[2m(�[22m�[2m55 tests�[22m�[2m)�[22m�[32m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/storage.test.ts �[2m(�[22m�[2m22 tests�[22m�[2m)�[22m�[32m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/updater.test.ts �[2m(�[22m�[2m18 tests�[22m�[2m)�[22m�[32m 58�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/cross-model-integration.test.ts �[2m(�[22m�[2m14 tests�[22m�[2m)�[22m�[32m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/persist-account-pool.test.ts �[2m(�[22m�[2m38 tests�[22m�[2m | �[22m�[90m25 todo�[39m�[2m)�[22m�[32m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/stores/signature-store.test.ts �[2m(�[22m�[2m30 tests�[22m�[2m)�[22m�[32m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/thinking-recovery.test.ts �[2m(�[22m�[2m29 tests�[22m�[2m)�[22m�[32m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/model-discovery.test.ts �[2m(�[22m�[2m44 tests�[22m�[2m)�[22m�[32m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/cache.test.ts �[2m(�[22m�[2m25 tests�[22m�[2m)�[22m�[32m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/hooks/auto-update-checker/index.test.ts �[2m(�[22m�[2m11 tests�[22m�[2m)�[22m�[32m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/antigravity-first-fallback.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[32m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/version.test.ts �[2m(�[22m�[2m15 tests�[22m�[2m)�[22m�[32m 68�[2mms�[22m�[39m
 �[32m✓�[39m src/v2/adapter.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[32m 32�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/usage-ledger.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[32m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/model-entitlements.test.ts �[2m(�[22m�[2m9 tests�[22m�[2m)�[22m�[32m 6�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/recovery.test.ts �[2m(�[22m�[2m30 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/hooks/auto-update-checker/checker.test.ts �[2m(�[22m�[2m12 tests�[22m�[2m)�[22m�[32m 38�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/auth.test.ts �[2m(�[22m�[2m19 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/refresh-queue.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 6�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/quota-fallback.test.ts �[2m(�[22m�[2m10 tests�[22m�[2m)�[22m�[32m 209�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/search.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/debug.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[32m 21�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/errors.test.ts �[2m(�[22m�[2m16 tests�[22m�[2m)�[22m�[32m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/stats.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 61�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/safety.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 36�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/ui/auth-menu.test.ts �[2m(�[22m�[2m12 tests�[22m�[2m)�[22m�[32m 24�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/model-specific-quota.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/logging-utils.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[32m 35�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/core/streaming/safety-shield.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/historical-pruning.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 4�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/token.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 29�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/ui/ansi.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[32m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/models.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/logger.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[32m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/schema.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/constants.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 4�[2mms�[22m�[39m

�[2m Test Files �[22m �[1m�[32m44 passed�[39m�[22m�[90m (44)�[39m
�[2m      Tests �[22m �[1m�[32m1162 passed�[39m�[22m�[2m | �[22m�[90m25 todo�[39m�[90m (1187)�[39m
�[2m   Start at �[22m 17:05:57
�[2m   Duration �[22m 3.82s�[2m (import 36%, transform 35%, tests 23%, worker 6%)�[22m

�[2m    Isolate �[22m �[33m44 workers spawned�[39m�[2m · ~113ms startup each (spawn + environment, per file)�[22m
�[2m            �[22m �[2mat least ~1.55s faster with �[22m�[33misolate: false�[39m�[2m — reuses workers across files instead of one per file�[22m

build

> opencode-antigravity-auth@2.5.1 build
> tsc -p tsconfig.build.json

@JoshRob297
JoshRob297 marked this pull request as ready for review October 31, 2026 17:24
@JoshRob297
JoshRob297 merged commit daf1034 into main Oct 31, 2026
1 check passed
@JoshRob297
JoshRob297 deleted the fix/argon-quota-group branch October 31, 2026 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant