diff --git a/src/app/(dashboard)/dashboard/resilience/connections/page.tsx b/src/app/(dashboard)/dashboard/resilience/connections/page.tsx
index d0351813a123..f138d3f5d227 100644
--- a/src/app/(dashboard)/dashboard/resilience/connections/page.tsx
+++ b/src/app/(dashboard)/dashboard/resilience/connections/page.tsx
@@ -7,7 +7,39 @@ export default async function ResilienceConnectionsPage() {
const t = await getTranslations("resilienceConnections");
return (
-
{t("title")}
+
+
{t("title")}
+
+ {t("reassuranceTitle")} {t("reassuranceDetail")}
+
+
+ -
+ {t("table.healthy")} — {t("plainStates.healthy")}
+
+ -
+ {t("table.coolingDown")} — {t("plainStates.coolingDown")}
+
+ -
+ {t("table.circuitOpen")} — {t("plainStates.lockedOut")}
+
+
+
);
diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json
index 1d1ae38830bc..d5bbab9c8248 100644
--- a/src/i18n/messages/ar.json
+++ b/src/i18n/messages/ar.json
@@ -2218,6 +2218,10 @@
"fullAccess": "الوصول الكامل",
"keyManagement": "إدارة مفاتيح API",
"keyManagementDesc": "قم بإنشاء وإدارة مفاتيح API لمصادقة الطلبات إلى نقطة النهاية الخاصة بك",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "مجموع المفاتيح",
"restricted": "مقيد",
"totalRequests": "إجمالي الطلبات",
diff --git a/src/i18n/messages/az.json b/src/i18n/messages/az.json
index 0a0254b70a3a..4b54699ca78a 100644
--- a/src/i18n/messages/az.json
+++ b/src/i18n/messages/az.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/bg.json b/src/i18n/messages/bg.json
index 3450855c1c79..7d3e400d420c 100644
--- a/src/i18n/messages/bg.json
+++ b/src/i18n/messages/bg.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Пълен достъп",
"keyManagement": "Управление на API ключове",
"keyManagementDesc": "Създавайте и управлявайте API ключове за удостоверяване на заявки към вашата крайна точка",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Общо ключове",
"restricted": "Ограничен",
"totalRequests": "Общо заявки",
diff --git a/src/i18n/messages/bn.json b/src/i18n/messages/bn.json
index 8d5a26b3ab20..8e6f83d491e0 100644
--- a/src/i18n/messages/bn.json
+++ b/src/i18n/messages/bn.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/cs.json b/src/i18n/messages/cs.json
index c35c6140c437..1591f8eed540 100644
--- a/src/i18n/messages/cs.json
+++ b/src/i18n/messages/cs.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Plný přístup",
"keyManagement": "Správa API Klíčů",
"keyManagementDesc": "Vytvářejte a spravujte API klíče pro ověřování požadavků na váš koncový bod",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Celkem Klíčů",
"restricted": "Omezený",
"totalRequests": "Celkově žádostí",
diff --git a/src/i18n/messages/da.json b/src/i18n/messages/da.json
index 764400b58b29..9a8dd7e095a1 100644
--- a/src/i18n/messages/da.json
+++ b/src/i18n/messages/da.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Fuld adgang",
"keyManagement": "API nøglestyring",
"keyManagementDesc": "Opret og administrer API-nøgler til godkendelse af anmodninger til dit slutpunkt",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Totalnøgler",
"restricted": "Begrænset",
"totalRequests": "Samlet antal anmodninger",
diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json
index 6a33f039f3c0..6ec519905cdd 100644
--- a/src/i18n/messages/de.json
+++ b/src/i18n/messages/de.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Voller Zugriff",
"keyManagement": "API-Schlüsselverwaltung",
"keyManagementDesc": "Erstellen und verwalten Sie API-Schlüssel zur Authentifizierung von Anfragen an Ihren Endpunkt",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Gesamtschlüssel",
"restricted": "Eingeschränkt",
"totalRequests": "Gesamtzahl der Anfragen",
diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json
index 930f5b595875..a1b934e50bbf 100644
--- a/src/i18n/messages/en.json
+++ b/src/i18n/messages/en.json
@@ -805,6 +805,13 @@
"batchConceptBenefit50pct": "50% discount on input + output tokens",
"batchConceptAsync24h": "Async with a 24h completion window",
"batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings",
+ "batchHeaderSubtitle": "Run many requests as one job",
+ "batchStep1": "1 · Upload JSONL",
+ "batchStep1Desc": "Add requests",
+ "batchStep2": "2 · Create batch",
+ "batchStep2Desc": "Run job",
+ "batchStep3": "3 · Get results",
+ "batchStep3Desc": "Download output",
"filesConceptTitle": "Batch files",
"filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.",
"filesConceptInput": "Input — your JSONL with one request per line",
@@ -1012,7 +1019,7 @@
"apiManager": "API Keys",
"apiManagerSubtitle": "Manage API keys and access",
"embeddedServices": "Embedded Services",
- "embeddedServicesSubtitle": "Manage local proxy services",
+ "embeddedServicesSubtitle": "Optional local services",
"logs": "Logs",
"webhooks": "Webhooks",
"webhooksSubtitle": "Get notified of events",
@@ -1214,6 +1221,12 @@
"consoleLogsSubtitle": "Console output",
"logsActivitySubtitle": "User activity log",
"healthSubtitle": "System health check",
+ "healthVerdictReady": "OmniRoute is ready",
+ "healthVerdictActionRequired": "Action required to restore full operation",
+ "healthVerdictCoolingDown": "Cooling down after recent changes",
+ "advancedDiagnosticsTitle": "Advanced diagnostics",
+ "hide": "Hide",
+ "show": "Show",
"costsPricingSubtitle": "Per-model pricing rules",
"costsBudgetSubtitle": "Budget limits",
"costsQuotaShareSubtitle": "Share provider quotas across keys",
@@ -2223,6 +2236,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
@@ -8677,7 +8694,7 @@
},
"embeddedServices": {
"title": "Embedded Services",
- "description": "Local engines managed on demand — CLIProxyAPI, 9Router, Mux, and Bifrost. Accessible on loopback only.",
+ "description": "Optional helpers that run on your machine. Most users can start without them — install one only when an integration needs it.",
"stateRunning": "Running",
"stateStopped": "Stopped",
"stateStarting": "Starting",
@@ -12029,7 +12046,8 @@
},
"acp": {
"title": "ACP Agents",
- "phrase": "CLIs that OmniRoute spawns as execution backend (reverse flow)",
+ "phrase": "Run complex, long-running logic in the backend",
+ "warning": "Most users can ignore this — use only when an integration requires it.",
"flow": "Client → OmniRoute → spawn CLI (stdio/ACP) → response",
"seeOther": "See →"
}
@@ -13337,6 +13355,13 @@
},
"resilienceConnections": {
"title": "Connection Resilience",
+ "reassuranceTitle": "Your connections recover automatically",
+ "reassuranceDetail": "Usually no action is needed. OmniRoute temporarily rests a connection after failures, then safely tries it again.",
+ "plainStates": {
+ "healthy": "Requests can be sent",
+ "coolingDown": "Trying again soon",
+ "lockedOut": "Needs your attention"
+ },
"table": {
"status": "Status",
"provider": "Provider",
diff --git a/src/i18n/messages/es.json b/src/i18n/messages/es.json
index 3ecd2c839cf3..32ab36caa503 100644
--- a/src/i18n/messages/es.json
+++ b/src/i18n/messages/es.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Acceso completo",
"keyManagement": "Gestión de claves API",
"keyManagementDesc": "Cree y administre claves API para autenticar solicitudes en su punto final",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Claves totales",
"restricted": "Restringido",
"totalRequests": "Solicitudes totales",
diff --git a/src/i18n/messages/fa.json b/src/i18n/messages/fa.json
index 4483a7ee845d..97f294c6728f 100644
--- a/src/i18n/messages/fa.json
+++ b/src/i18n/messages/fa.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/fi.json b/src/i18n/messages/fi.json
index 31f38e04a143..c8d4b923eb37 100644
--- a/src/i18n/messages/fi.json
+++ b/src/i18n/messages/fi.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Täysi pääsy",
"keyManagement": "API-avainten hallinta",
"keyManagementDesc": "Luo ja hallitse API-avaimia päätepisteesi pyyntöjen todentamiseksi",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Avaimet yhteensä",
"restricted": "Rajoitettu",
"totalRequests": "Pyyntöjä yhteensä",
diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json
index b065a34fee32..216bf0342df2 100644
--- a/src/i18n/messages/fr.json
+++ b/src/i18n/messages/fr.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Accès complet",
"keyManagement": "Gestion des clés API",
"keyManagementDesc": "Créez et gérez des clés API pour authentifier les requêtes sur votre point de terminaison",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Clés totales",
"restricted": "Restreint",
"totalRequests": "Total des demandes",
diff --git a/src/i18n/messages/gu.json b/src/i18n/messages/gu.json
index ce257984a0aa..7a0073172fa0 100644
--- a/src/i18n/messages/gu.json
+++ b/src/i18n/messages/gu.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/he.json b/src/i18n/messages/he.json
index 5281e5292c97..9bb51d10097c 100644
--- a/src/i18n/messages/he.json
+++ b/src/i18n/messages/he.json
@@ -2218,6 +2218,10 @@
"fullAccess": "גישה מלאה",
"keyManagement": "ניהול מפתחות API",
"keyManagementDesc": "צור ונהל מפתחות API לאימות בקשות לנקודת הקצה שלך",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "סך הכל מפתחות",
"restricted": "מוגבל",
"totalRequests": "סך כל הבקשות",
diff --git a/src/i18n/messages/hi.json b/src/i18n/messages/hi.json
index d74d2919ca9d..eb248f8be9cd 100644
--- a/src/i18n/messages/hi.json
+++ b/src/i18n/messages/hi.json
@@ -2218,6 +2218,10 @@
"fullAccess": "पूर्ण प्रवेश",
"keyManagement": "एपीआई कुंजी प्रबंधन",
"keyManagementDesc": "अपने एंडपॉइंट पर अनुरोधों को प्रमाणित करने के लिए एपीआई कुंजियाँ बनाएं और प्रबंधित करें",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "कुल कुंजियाँ",
"restricted": "प्रतिबंधित",
"totalRequests": "कुल अनुरोध",
diff --git a/src/i18n/messages/hu.json b/src/i18n/messages/hu.json
index 11d3327c80c2..fff9f5addb4e 100644
--- a/src/i18n/messages/hu.json
+++ b/src/i18n/messages/hu.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Teljes hozzáférés",
"keyManagement": "API kulcskezelés",
"keyManagementDesc": "API-kulcsok létrehozása és kezelése a végponthoz intézett kérések hitelesítéséhez",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Összes kulcs",
"restricted": "Korlátozott",
"totalRequests": "Összes kérés",
diff --git a/src/i18n/messages/id.json b/src/i18n/messages/id.json
index 2bf5fdccdd94..7ec0228f65b3 100644
--- a/src/i18n/messages/id.json
+++ b/src/i18n/messages/id.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Akses Penuh",
"keyManagement": "Manajemen Kunci API",
"keyManagementDesc": "Buat dan kelola kunci API untuk mengautentikasi permintaan ke titik akhir Anda",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Jumlah Kunci",
"restricted": "Terbatas",
"totalRequests": "Jumlah Permintaan",
diff --git a/src/i18n/messages/in.json b/src/i18n/messages/in.json
index afb01d57e8f7..cf057a2e835e 100644
--- a/src/i18n/messages/in.json
+++ b/src/i18n/messages/in.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json
index dd69eeb4894e..6648e4e923ac 100644
--- a/src/i18n/messages/it.json
+++ b/src/i18n/messages/it.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Accesso completo",
"keyManagement": "Gestione delle chiavi API",
"keyManagementDesc": "Crea e gestisci le chiavi API per autenticare le richieste al tuo endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Chiavi totali",
"restricted": "Limitato",
"totalRequests": "Richieste totali",
diff --git a/src/i18n/messages/ja.json b/src/i18n/messages/ja.json
index 371263c8eb1c..1a7f63eefa50 100644
--- a/src/i18n/messages/ja.json
+++ b/src/i18n/messages/ja.json
@@ -2218,6 +2218,10 @@
"fullAccess": "フルアクセス",
"keyManagement": "APIキー管理",
"keyManagementDesc": "エンドポイントへのリクエストを認証するための API キーを作成および管理する",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "キーの総数",
"restricted": "制限付き",
"totalRequests": "総リクエスト数",
diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json
index fe5ba64093db..31e36073156a 100644
--- a/src/i18n/messages/ko.json
+++ b/src/i18n/messages/ko.json
@@ -2218,6 +2218,10 @@
"fullAccess": "전체 액세스",
"keyManagement": "API 키 관리",
"keyManagementDesc": "엔드포인트에 대한 요청을 인증하기 위한 API 키 생성 및 관리",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "총 키",
"restricted": "제한됨",
"totalRequests": "총 요청",
diff --git a/src/i18n/messages/mr.json b/src/i18n/messages/mr.json
index 487cd7ff2fcc..429433ffabcd 100644
--- a/src/i18n/messages/mr.json
+++ b/src/i18n/messages/mr.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/ms.json b/src/i18n/messages/ms.json
index e317f33fdadc..aab6f28ec3d8 100644
--- a/src/i18n/messages/ms.json
+++ b/src/i18n/messages/ms.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Akses Penuh",
"keyManagement": "Pengurusan Kunci API",
"keyManagementDesc": "Buat dan urus kunci API untuk mengesahkan permintaan ke titik akhir anda",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Jumlah Kunci",
"restricted": "Terhad",
"totalRequests": "Jumlah Permintaan",
diff --git a/src/i18n/messages/nl.json b/src/i18n/messages/nl.json
index 04e88d349cff..ade739863e2c 100644
--- a/src/i18n/messages/nl.json
+++ b/src/i18n/messages/nl.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Volledige toegang",
"keyManagement": "API-sleutelbeheer",
"keyManagementDesc": "Maak en beheer API-sleutels voor het verifiëren van verzoeken aan uw eindpunt",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Totaal aantal sleutels",
"restricted": "Beperkt",
"totalRequests": "Totaal aantal verzoeken",
diff --git a/src/i18n/messages/no.json b/src/i18n/messages/no.json
index f07811a42bec..8b72ee6b9fef 100644
--- a/src/i18n/messages/no.json
+++ b/src/i18n/messages/no.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full tilgang",
"keyManagement": "API Key Management",
"keyManagementDesc": "Opprett og administrer API-nøkler for autentisering av forespørsler til endepunktet ditt",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Totalnøkler",
"restricted": "Begrenset",
"totalRequests": "Totalt antall forespørsler",
diff --git a/src/i18n/messages/phi.json b/src/i18n/messages/phi.json
index ba2811fe4071..f230f4206b2d 100644
--- a/src/i18n/messages/phi.json
+++ b/src/i18n/messages/phi.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Buong Access",
"keyManagement": "Pamamahala ng Key ng API",
"keyManagementDesc": "Gumawa at mamahala ng mga API key para sa pag-authenticate ng mga kahilingan sa iyong endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Kabuuang Mga Susi",
"restricted": "Pinaghihigpitan",
"totalRequests": "Kabuuang Mga Kahilingan",
diff --git a/src/i18n/messages/pl.json b/src/i18n/messages/pl.json
index 9eaba5246659..377ae53a09a5 100644
--- a/src/i18n/messages/pl.json
+++ b/src/i18n/messages/pl.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Pełen dostęp",
"keyManagement": "Zarządzanie kluczami API",
"keyManagementDesc": "Tworzenie i zarządzanie kluczami API do uwierzytelniania żądań do endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Łączna liczba kluczy",
"restricted": "Ograniczony",
"totalRequests": "Łączna liczba żądań",
diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json
index 8df20f0f9dfa..e444d7110592 100644
--- a/src/i18n/messages/pt-BR.json
+++ b/src/i18n/messages/pt-BR.json
@@ -2223,6 +2223,10 @@
"fullAccess": "Acesso Total",
"keyManagement": "Gerenciamento de Chaves de API",
"keyManagementDesc": "Crie e gerencie chaves de API para autenticar requisições ao seu endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total de Chaves",
"restricted": "Restrita",
"totalRequests": "Total de Requisições",
diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json
index 1921f3fba7fb..7cc966465594 100644
--- a/src/i18n/messages/pt.json
+++ b/src/i18n/messages/pt.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Acesso total",
"keyManagement": "Gerenciamento de chaves de API",
"keyManagementDesc": "Crie e gerencie chaves de API para autenticar solicitações em seu endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total de chaves",
"restricted": "Restrito",
"totalRequests": "Total de solicitações",
diff --git a/src/i18n/messages/ro.json b/src/i18n/messages/ro.json
index 4ae651a40a6f..67050a3ee665 100644
--- a/src/i18n/messages/ro.json
+++ b/src/i18n/messages/ro.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Acces complet",
"keyManagement": "Managementul cheilor API",
"keyManagementDesc": "Creați și gestionați cheile API pentru autentificarea solicitărilor către punctul dvs. final",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total chei",
"restricted": "Restricţionat",
"totalRequests": "Total cereri",
diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json
index 94f6c651e050..e6678b106a94 100644
--- a/src/i18n/messages/ru.json
+++ b/src/i18n/messages/ru.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Полный доступ",
"keyManagement": "Управление ключами API",
"keyManagementDesc": "Создавайте ключи API для аутентификации запросов к вашей конечной точке и управляйте ими.",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Всего ключей",
"restricted": "Ограниченный",
"totalRequests": "Всего запросов",
diff --git a/src/i18n/messages/sk.json b/src/i18n/messages/sk.json
index a6c823a524d2..ec507df997c1 100644
--- a/src/i18n/messages/sk.json
+++ b/src/i18n/messages/sk.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Úplný prístup",
"keyManagement": "Správa kľúčov API",
"keyManagementDesc": "Vytvárajte a spravujte kľúče API na autentifikáciu požiadaviek na váš koncový bod",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Celkový počet kľúčov",
"restricted": "Obmedzené",
"totalRequests": "Celkový počet žiadostí",
diff --git a/src/i18n/messages/sv.json b/src/i18n/messages/sv.json
index dd61134b1c65..f4d50231299a 100644
--- a/src/i18n/messages/sv.json
+++ b/src/i18n/messages/sv.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full tillgång",
"keyManagement": "API-nyckelhantering",
"keyManagementDesc": "Skapa och hantera API-nycklar för autentisering av förfrågningar till din slutpunkt",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Totalt nycklar",
"restricted": "Begränsad",
"totalRequests": "Totalt antal förfrågningar",
diff --git a/src/i18n/messages/sw.json b/src/i18n/messages/sw.json
index 7042ca73e993..598a1666df4f 100644
--- a/src/i18n/messages/sw.json
+++ b/src/i18n/messages/sw.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/ta.json b/src/i18n/messages/ta.json
index 28eef20efcba..3c24b93c2f47 100644
--- a/src/i18n/messages/ta.json
+++ b/src/i18n/messages/ta.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/te.json b/src/i18n/messages/te.json
index acecbfb40358..67d1fc28cd29 100644
--- a/src/i18n/messages/te.json
+++ b/src/i18n/messages/te.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/th.json b/src/i18n/messages/th.json
index 9fb3122583fe..636c3451a4ee 100644
--- a/src/i18n/messages/th.json
+++ b/src/i18n/messages/th.json
@@ -2218,6 +2218,10 @@
"fullAccess": "การเข้าถึงแบบเต็ม",
"keyManagement": "การจัดการคีย์ API",
"keyManagementDesc": "สร้างและจัดการคีย์ API สำหรับการตรวจสอบคำขอไปยังปลายทางของคุณ",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "คีย์ทั้งหมด",
"restricted": "ถูกจำกัด",
"totalRequests": "คำขอทั้งหมด",
diff --git a/src/i18n/messages/tr.json b/src/i18n/messages/tr.json
index c05cb34b228e..2b1c0f9e09cf 100644
--- a/src/i18n/messages/tr.json
+++ b/src/i18n/messages/tr.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Tam Erişim",
"keyManagement": "API Anahtar Yönetimi",
"keyManagementDesc": "Uç noktanıza yönelik isteklerin kimliğini doğrulamak için API anahtarları oluşturun ve yönetin",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Toplam Anahtar",
"restricted": "Kısıtlı",
"totalRequests": "Toplam İstek",
diff --git a/src/i18n/messages/uk-UA.json b/src/i18n/messages/uk-UA.json
index 7eb5a5e56783..ba1391c36535 100644
--- a/src/i18n/messages/uk-UA.json
+++ b/src/i18n/messages/uk-UA.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Повний доступ",
"keyManagement": "Керування ключами API",
"keyManagementDesc": "Створюйте та керуйте ключами API для автентифікації запитів до кінцевої точки",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Всього ключів",
"restricted": "Обмежений",
"totalRequests": "Загальна кількість запитів",
diff --git a/src/i18n/messages/ur.json b/src/i18n/messages/ur.json
index 5d5e2b1c84b8..dcdcec4c3e8c 100644
--- a/src/i18n/messages/ur.json
+++ b/src/i18n/messages/ur.json
@@ -2218,6 +2218,10 @@
"fullAccess": "Full Access",
"keyManagement": "API Key Management",
"keyManagementDesc": "Create and manage API keys for authenticating requests to your endpoint",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Total Keys",
"restricted": "Restricted",
"totalRequests": "Total Requests",
diff --git a/src/i18n/messages/vi.json b/src/i18n/messages/vi.json
index 04c90228b211..583036073166 100644
--- a/src/i18n/messages/vi.json
+++ b/src/i18n/messages/vi.json
@@ -974,7 +974,14 @@
"batchFileUsedByCount": "{count, plural, one {# batch} other {# batch}}",
"batchFilePreview": "Bản xem trước",
"batchFilePreviewTruncated": "Hiển thị {shown} dòng đầu tiên (tổng cộng {total} dòng)",
- "batchFileDownloadFull": "Tải xuống toàn bộ tệp"
+ "batchFileDownloadFull": "Tải xuống toàn bộ tệp",
+ "batchHeaderSubtitle": "Chạy nhiều yêu cầu như một job duy nhất",
+ "batchStep1": "1 · Tải lên JSONL",
+ "batchStep1Desc": "Thêm yêu cầu",
+ "batchStep2": "2 · Tạo batch",
+ "batchStep2Desc": "Chạy job",
+ "batchStep3": "3 · Nhận kết quả",
+ "batchStep3Desc": "Tải xuống đầu ra"
},
"disabled": "Đã tắt",
"featureFlagOmnirouteEmergencyFallbackDescription": "Định tuyến các yêu cầu đã hết ngân sách đến nhà cung cấp/mô hình dự phòng khẩn cấp miễn phí.",
@@ -1293,7 +1300,13 @@
"open": "mở",
"close": "đóng"
},
- "noResults": "Không có kết quả"
+ "noResults": "Không có kết quả",
+ "healthVerdictReady": "OmniRoute đã sẵn sàng",
+ "healthVerdictActionRequired": "Cần hành động để khôi phục hoạt động đầy đủ",
+ "healthVerdictCoolingDown": "Đang nguội sau các thay đổi gần đây",
+ "advancedDiagnosticsTitle": "Chẩn đoán nâng cao",
+ "hide": "Ẩn",
+ "show": "Hiện"
},
"webhooks": {
"title": "Webhook",
@@ -2223,6 +2236,10 @@
"fullAccess": "Toàn quyền truy cập",
"keyManagement": "Quản lý khóa API",
"keyManagementDesc": "Tạo và quản lý khóa API để xác thực các yêu cầu tới endpoint của bạn",
+ "requestFlowAria": "Ứng dụng của bạn gửi yêu cầu qua một API key tới OmniRoute",
+ "requestFlowYourApp": "Ứng dụng của bạn",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "Tổng số khóa",
"restricted": "Bị hạn chế",
"totalRequests": "Tổng số yêu cầu",
@@ -12031,7 +12048,8 @@
"title": "Các tác nhân ACP",
"phrase": "Các CLI mà OmniRoute khởi chạy làm phần phụ trợ thực thi (luồng ngược)",
"flow": "Ứng dụng khách → OmniRoute → khởi chạy CLI (stdio/ACP) → phản hồi",
- "seeOther": "See →"
+ "seeOther": "See →",
+ "warning": "Hầu hết người dùng có thể bỏ qua — chỉ dùng khi một tích hợp yêu cầu."
}
},
"comparison": {
@@ -13431,6 +13449,13 @@
"modelLockouts": "Khóa Mô Hình",
"count": "Số Lượng Kết Nối"
}
+ },
+ "reassuranceTitle": "Kết nối của bạn tự khôi phục",
+ "reassuranceDetail": "Thường không cần hành động. OmniRoute tạm cho kết nối nghỉ sau lỗi, rồi thử lại an toàn.",
+ "plainStates": {
+ "healthy": "Có thể gửi yêu cầu",
+ "coolingDown": "Sắp thử lại",
+ "lockedOut": "Cần bạn xử lý"
}
},
"featureFlagCapabilityFilterEnabledDescription": "Từ chối yêu cầu trước khi gửi đi khi mô hình đích thiếu các khả năng bắt buộc (thị giác, công cụ, đầu ra có cấu trúc, cửa sổ ngữ cảnh). Bảo vệ các yêu cầu trực tiếp đến một nhà cung cấp khi chúng bỏ qua bộ lọc tương thích của combo.",
diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json
index 7a96cd92b331..11f666368aa6 100644
--- a/src/i18n/messages/zh-CN.json
+++ b/src/i18n/messages/zh-CN.json
@@ -2218,6 +2218,10 @@
"fullAccess": "完全访问",
"keyManagement": "API 密钥管理",
"keyManagementDesc": "创建和管理用于访问端点的 API 密钥",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "密钥总数",
"restricted": "受限",
"totalRequests": "请求总数",
diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json
index 101fdbb94892..a5c126d2a898 100644
--- a/src/i18n/messages/zh-TW.json
+++ b/src/i18n/messages/zh-TW.json
@@ -2218,6 +2218,10 @@
"fullAccess": "完全訪問",
"keyManagement": "API 金鑰管理",
"keyManagementDesc": "建立和管理用於訪問端點的 API 金鑰",
+ "requestFlowAria": "Your app sends requests through an API key to OmniRoute",
+ "requestFlowYourApp": "Your app",
+ "requestFlowApiKey": "API key",
+ "requestFlowOmniRoute": "OmniRoute",
"totalKeys": "金鑰總數",
"restricted": "受限",
"totalRequests": "請求總數",
diff --git a/src/shared/components/cli/CliConceptCard.tsx b/src/shared/components/cli/CliConceptCard.tsx
index b6719957ee38..65926c04d66b 100644
--- a/src/shared/components/cli/CliConceptCard.tsx
+++ b/src/shared/components/cli/CliConceptCard.tsx
@@ -2,6 +2,8 @@
import Link from "next/link";
import { useTranslations } from "next-intl";
+
+import Badge from "@/shared/components/Badge";
import { cn } from "@/shared/utils/cn";
export type CliConceptType = "code" | "agent" | "acp";
@@ -23,19 +25,25 @@ export default function CliConceptCard({ currentType }: CliConceptCardProps) {
return (
{/* Current type — highlighted */}
-
- {t(`concept.${currentType}.title`)}
-
+
+
+ {t(`concept.${currentType}.title`)}
+
+ {currentType === "acp" && (
+
+ {t("concept.acp.warning")}
+
+ )}
+
{t(`concept.${currentType}.phrase`)}
-
{t(`concept.${currentType}.flow`)}
+
+ {t(`concept.${currentType}.flow`)}
+
{/* Other types as chips */}
diff --git a/tests/unit/api-manager-page-static.test.ts b/tests/unit/api-manager-page-static.test.ts
index d211d23f2532..37d70062fd19 100644
--- a/tests/unit/api-manager-page-static.test.ts
+++ b/tests/unit/api-manager-page-static.test.ts
@@ -39,6 +39,26 @@ test("permissions modal uses i18n for management access description", () => {
assert.doesNotMatch(managementBlock, /Allow this API key to manage OmniRoute configuration\./);
});
+test("API manager page renders purpose-first header", () => {
+ const source = readApiManagerPage();
+ const headerBlock = source.slice(
+ source.indexOf('
\s*Your app\s*);
+ assert.doesNotMatch(headerBlock, />\s*API key\s*);
+ assert.doesNotMatch(headerBlock, />\s*OmniRoute\s*);
+ assert.match(headerBlock, /setShowAddModal\(true\)/);
+ assert.match(headerBlock, /\{t\("createKey"\)\}/);
+});
+
test("permissions modal converts API key expiration ISO timestamps to local datetime input values", () => {
const source = readApiManagerPage();
const expirationBlock = source.slice(
diff --git a/tests/unit/batch-page-static.test.ts b/tests/unit/batch-page-static.test.ts
new file mode 100644
index 000000000000..878b2960504c
--- /dev/null
+++ b/tests/unit/batch-page-static.test.ts
@@ -0,0 +1,74 @@
+import test from "node:test";
+import assert from "node:assert/strict";
+import fs from "node:fs";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
+const pagePath = path.join(
+ repoRoot,
+ "src/app/(dashboard)/dashboard/batch/page.tsx"
+);
+const enPath = path.join(repoRoot, "src/i18n/messages/en.json");
+
+function readBatchPage() {
+ return fs.readFileSync(pagePath, "utf8");
+}
+
+function readEnKeys() {
+ return Object.keys(JSON.parse(fs.readFileSync(enPath, "utf8")));
+}
+
+test("batch page stable header uses t() for subtitle", () => {
+ const source = readBatchPage();
+ assert.match(source, /batchHeaderSubtitle/);
+});
+
+test("batch page stable header uses t() for three-step strip", () => {
+ const source = readBatchPage();
+ assert.match(source, /batchStep1/);
+ assert.match(source, /batchStep2/);
+ assert.match(source, /batchStep3/);
+ assert.match(source, /batchStep1Desc/);
+ assert.match(source, /batchStep2Desc/);
+ assert.match(source, /batchStep3Desc/);
+});
+
+test("batch page stable header keeps Create batch CTA using t()", () => {
+ const source = readBatchPage();
+ assert.match(source, /batchListNewButton/);
+});
+
+test("batch page still renders collapsible BatchConceptCard as optional deeper explanation", () => {
+ const source = readBatchPage();
+ assert.match(source, /BatchConceptCard/);
+});
+
+test("batch page stable header does not contain hardcoded English", () => {
+ const source = readBatchPage();
+ assert.doesNotMatch(source, /Run many requests as one job/);
+ assert.doesNotMatch(source, /1 \· Upload JSONL/);
+ assert.doesNotMatch(source, /2 \· Create batch/);
+ assert.doesNotMatch(source, /3 \· Get results/);
+});
+
+test("new i18n keys exist in en.json common namespace", () => {
+ const enKeys = JSON.parse(
+ fs.readFileSync(
+ path.join(repoRoot, "src/i18n/messages/en.json"),
+ "utf8"
+ )
+ ).common || {};
+ const requiredKeys = [
+ "batchHeaderSubtitle",
+ "batchStep1",
+ "batchStep2",
+ "batchStep3",
+ "batchStep1Desc",
+ "batchStep2Desc",
+ "batchStep3Desc",
+ ];
+ for (const key of requiredKeys) {
+ assert.ok(key in enKeys, `Missing i18n key in en.json common namespace: ${key}`);
+ }
+});
\ No newline at end of file
diff --git a/tests/unit/health-page-static.test.ts b/tests/unit/health-page-static.test.ts
new file mode 100644
index 000000000000..8520901ad56f
--- /dev/null
+++ b/tests/unit/health-page-static.test.ts
@@ -0,0 +1,29 @@
+import test from "node:test";
+import assert from "node:assert/strict";
+import fs from "node:fs";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
+const pagePath = path.join(repoRoot, "src/app/(dashboard)/dashboard/health/page.tsx");
+
+function readPage() {
+ return fs.readFileSync(pagePath, "utf8");
+}
+
+test("health page leads with a plain-language verdict and a collapsible advanced section", () => {
+ const source = readPage();
+
+ // Verdict header with plain-language states
+ assert.match(source, /healthVerdictReady/);
+ assert.match(source, /healthVerdictCoolingDown/);
+ assert.match(source, /healthVerdictActionRequired/);
+
+ // No hardcoded English outcomes in the verdict header
+ assert.doesNotMatch(source, /OmniRoute is ready/);
+
+ // Collapsible "Advanced diagnostics" section
+ assert.match(source, /advancedDiagnosticsTitle/);
+ assert.match(source, /setShowAdvanced/);
+ assert.match(source, /showAdvanced \? t\("hide"\) : t\("show"\)/);
+});
diff --git a/tests/unit/resilience-connections-page-static.test.ts b/tests/unit/resilience-connections-page-static.test.ts
index 55359d29a9e8..d2ee8be29560 100644
--- a/tests/unit/resilience-connections-page-static.test.ts
+++ b/tests/unit/resilience-connections-page-static.test.ts
@@ -139,3 +139,23 @@ test("no hardcoded English labels in component files (all via t(...))", () => {
assert.doesNotMatch(src, />\s*No connections\s*, `${f}: hardcoded empty title`);
}
});
+
+test("page leads with plain-language reassurance before mechanics", () => {
+ const src = read(componentFiles[0]);
+ assert.match(src, /reassuranceTitle/, "reassurance heading missing from page.tsx");
+ assert.match(src, /reassuranceDetail/, "reassurance detail missing from page.tsx");
+ // Plain-language state legend renders before the client component
+ const legendPos = src.indexOf("plainStates");
+ const clientPos = src.indexOf("
-1 && legendPos < clientPos, "state legend must render before the table");
+});
+
+test("en.json carries plain-language state copy", () => {
+ const messages = JSON.parse(read("src/i18n/messages/en.json"));
+ const block = messages.resilienceConnections;
+ assert.equal(block.reassuranceTitle, "Your connections recover automatically");
+ assert.match(block.reassuranceDetail, /no action is needed/i);
+ assert.equal(block.plainStates.healthy, "Requests can be sent");
+ assert.equal(block.plainStates.coolingDown, "Trying again soon");
+ assert.equal(block.plainStates.lockedOut, "Needs your attention");
+});
diff --git a/tests/unit/ui/CliConceptCard.test.tsx b/tests/unit/ui/CliConceptCard.test.tsx
index 8d14b42ac1b0..0821eb64836e 100644
--- a/tests/unit/ui/CliConceptCard.test.tsx
+++ b/tests/unit/ui/CliConceptCard.test.tsx
@@ -46,8 +46,9 @@ function renderCard(currentType: CliConceptType): HTMLElement {
// ── Lifecycle ─────────────────────────────────────────────────────────────────
beforeEach(() => {
- (globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }).IS_REACT_ACT_ENVIRONMENT =
- true;
+ (
+ globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }
+ ).IS_REACT_ACT_ENVIRONMENT = true;
});
afterEach(() => {
@@ -74,8 +75,17 @@ describe("CliConceptCard", () => {
it("renders with currentType=acp", () => {
const container = renderCard("acp");
expect(container.textContent).toContain("concept.acp.title");
+ expect(container.textContent).toContain("concept.acp.warning");
});
+ it.each(["code", "agent"] satisfies CliConceptType[])(
+ "does not show the ACP warning for currentType=%s",
+ (type) => {
+ const container = renderCard(type);
+ expect(container.textContent).not.toContain("concept.acp.warning");
+ }
+ );
+
it("for currentType=code, card has primary bg class", () => {
const container = renderCard("code");
// The root card div should have primary/5 styling