mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-05 14:52:09 +03:00
Move a construção do payload de persistCodexQuotaState para o novo leaf puro open-sse/handlers/chatCore/codexQuota.ts (buildCodexQuotaPersistence): parseia os headers de quota do Codex no snapshot codexQuotaState, faz passthrough do providerSpecificData existente e, num 429 cuja janela (dual-window) passou do threshold de exaustão, registra o cooldown por escopo (codexScopeRateLimitedUntil) + codexExhaustedWindow, retornando a mensagem de debug-log. O handler mantém as partes impuras byte-idênticas e na mesma ordem: emitir o exhaustionLog retornado, invalidateCodexQuotaCache em todo 429 (connectionId é garantido pelo early-return), depois updateProviderConnection + mutação de credentials. Imports órfãos (parseCodexQuotaHeaders/getCodexModelScope/ getCodexDualWindowCooldownMs) migram para o leaf; isCompactResponsesEndpoint permanece (usado no site de passthrough). chatCore.ts 5055->5019 (shrink -36); baseline file-size ratchetado. complexity 1905=1905 (neutro). Coberto por tests/unit/chatcore-codex-quota.test.ts (5 casos: sem-headers null, snapshot+passthrough, 429 cooldown+janela+log, merge do scope-map, 429 abaixo-do-threshold no-op).