From 95944dad926ed25b50772868c560d2a034e81365 Mon Sep 17 00:00:00 2001 From: Ramel Tecnologia <146174365+rafacpti23@users.noreply.github.com> Date: Mon, 11 May 2026 21:38:26 -0300 Subject: [PATCH] feat(resilience): expose model cooldown list with manual re-enable (#2146) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Integrated into release/v3.8.0 — adds model cooldowns dashboard card with real-time list and re-enable action. Domain module and unit tests added. --- .../settings/components/ResilienceTab.tsx | 165 ++++++++++-------- src/domain/modelAvailability.ts | 41 +++++ src/i18n/messages/en.json | 8 +- src/i18n/messages/pt-BR.json | 17 +- src/i18n/messages/pt.json | 17 +- tests/unit/model-cooldowns-route.test.ts | 61 +++++++ 6 files changed, 228 insertions(+), 81 deletions(-) create mode 100644 src/domain/modelAvailability.ts create mode 100644 tests/unit/model-cooldowns-route.test.ts diff --git a/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx b/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx index 62ac307345..0bbbc80b9d 100644 --- a/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx +++ b/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx @@ -65,13 +65,13 @@ function SectionDescription({ return (
- This layer only controls queueing and pacing. It does not write cooldowns or open breakers. + Esta camada controla apenas enfileiramento e ritmo. Ela não grava cooldown nem abre circuit + breaker.
- Base cooldown covers retryable connection failures. When upstream retry hints are enabled, - explicit provider wait windows override the local base cooldown. + O cooldown base cobre falhas transitórias de conexão. Quando as dicas de retry do upstream + estão ativas, a janela explícita do provedor sobrescreve o cooldown local.
- Breaker runtime state is shown only on the Health page. Connection-scoped 429 rate limits - stay in Connection Cooldown and do not trip the provider breaker. + O estado em tempo real do breaker aparece apenas na página Saúde. Rate limits 429 no escopo + de conexão ficam no Cooldown de Conexão e não disparam o breaker de provedor.
- This only affects the current request. It does not write connection or provider state. + Isso afeta apenas a requisição atual. Não grava estado de conexão nem de provedor.
Unable to load resilience settings.
++ {tx("failedLoadResilience", "Unable to load resilience settings.")} +
- This page only configures behavior. Live breaker state is shown on the Health page. - Combo-specific retry and round-robin slot control remain on combo settings. + {tx( + "resilienceStructureDesc", + "This page only configures behavior. Live breaker state is shown on the Health page. Combo-specific retry and round-robin slot control remain on combo settings." + )}