Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 132 additions & 132 deletions .i18n-state.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions changelog.d/fixes/15260-kiro-reasoning-liveness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- **fix(kiro):** Preserve activity from native signature-only reasoning frames so the stream content watchdog can wait for the answer without exposing signatures. Metadata-only stalls, the active-stream deadline, and client cancellation remain enforced ([#15260](https://github.com/diegosouzapw/OmniRoute/issues/15260)).
6 changes: 6 additions & 0 deletions docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ turn. They are still not model output, so a turn that ends with reasoning only i
reported as empty, and a turn that stops reasoning and only sends heartbeats still trips
the watchdog.

Kiro's binary `reasoningContentEvent` frames with a non-empty signature preserve this
reasoning activity through the executor as an empty `reasoning_content` delta. The signature is
not forwarded. Metadata, incomplete frames and empty signatures do not restart the
content budget; the independent active-stream timeout and client cancellation still
apply (`open-sse/executors/kiro/reasoning.ts`).

**Terminal states (NOT cooldowns):**

- `banned` — set by banned-keyword / account-ban detection (see [BAN_DETECTION](../security/BAN_DETECTION.md)), and by three consecutive upstream per-request refusals (`request_rejected`, e.g. Anthropic OAuth 403 "Request not allowed" — `open-sse/services/requestRejectedStreak.ts`); a single refusal only cools the connection down
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/am/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ OmniRoute ሦስት የተለያዩ ግን ተዛማጅ የመቋቋም ዘዴ

**የተመሳሳይ ጊዜ ጫና መከላከያ:** በአንድ ጊዜ የሚከሰቱ አለመሳካቶች የማቀዝቀዣ ጊዜውን ከመጠን በላይ እንዳያራዝሙ ወይም `backoffLevel`ን ሁለት ጊዜ እንዳይጨምሩ ይከላከላል።

ባዶ ያልሆነ ፊርማ ያላቸው የKiro ሁለትዮሽ `reasoningContentEvent` ፍሬሞች የማሰብ እንቅስቃሴን በአስፈጻሚው በኩል እንደ ባዶ `reasoning_content` ዴልታ ያስቀጥላሉ። ፊርማው ወደ ደንበኛው አይተላለፍም። ሜታዳታ፣ ያልተሟሉ ፍሬሞች እና ባዶ ፊርማዎች የይዘት መጠበቂያ ጊዜን እንደገና አያስጀምሩም፤ ገለልተኛው የንቁ ዥረት ጊዜ ገደብ እና የደንበኛ ስረዛ አሁንም ተግባራዊ ናቸው። (`open-sse/executors/kiro/reasoning.ts`).

**የመጨረሻ ሁኔታዎች (የማቀዝቀዣ ጊዜያት አይደሉም):**

- `banned` — የታገደ ቁልፍ ቃል / የመለያ እገዳ ሲገኝ ይዘጋጃል ([BAN_DETECTION](../security/BAN_DETECTION.md)ን ይመልከቱ)፤ እንዲሁም በሦስት ተከታታይ ከውጫዊው አገልግሎት በእያንዳንዱ ጥያቄ ላይ በሚደርሱ እምቢታዎች (`request_rejected`፣ ለምሳሌ Anthropic OAuth 403 "ጥያቄው አልተፈቀደም" — `open-sse/services/requestRejectedStreak.ts`)፤ አንድ እምቢታ ብቻ ግንኙነቱን ለማቀዝቀዣ ጊዜ ብቻ ያስገባል
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/ar/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@

**آلية منع الاندفاع المتزامن:** تمنع حالات الفشل المتزامنة من إطالة فترة التهدئة أكثر من اللازم أو زيادة `backoffLevel` مرتين.

تحافظ إطارات Kiro الثنائية من نوع `reasoningContentEvent` ذات التوقيع غير الفارغ على نشاط الاستدلال عبر المنفّذ، باستخدام فرق `reasoning_content` فارغ. لا يُمرَّر التوقيع. لا تعيد البيانات الوصفية والإطارات غير المكتملة والتوقيعات الفارغة بدء مهلة المحتوى؛ ويظل حد مدة البث النشط المستقل وإلغاء العميل ساريين. (`open-sse/executors/kiro/reasoning.ts`).

**الحالات النهائية (ليست فترات تهدئة):**

- `banned` — تُعيَّن عند اكتشاف كلمة محظورة/حظر حساب (راجع [BAN_DETECTION](../security/BAN_DETECTION.md))، وكذلك بعد ثلاث حالات رفض متتالية من المنبع لكل طلب (`request_rejected`، مثل خطأ Anthropic OAuth ‏403 "الطلب غير مسموح" — `open-sse/services/requestRejectedStreak.ts`)؛ لا يؤدي الرفض الواحد إلا إلى وضع الاتصال في فترة تهدئة
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/az/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ Reqressiyadan qorunma testi: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Eyni anda sorğu axınının qarşısını alan qoruyucu mexanizm:** paralel xətaların gözləmə müddətini həddən artıq uzatmasının və ya `backoffLevel` dəyərini iki dəfə artırmasının qarşısını alır.

Kiro-nun boş olmayan imzalı ikili `reasoningContentEvent` kadrları icraçı vasitəsilə boş `reasoning_content` deltası kimi mühakimə fəaliyyətini qoruyur. İmza ötürülmür. Metaməlumatlar, natamam kadrlar və boş imzalar məzmun üçün vaxt limitini yenidən başlatmır; aktiv axının ayrıca vaxt limiti və müştərinin ləğvi qüvvədə qalır. (`open-sse/executors/kiro/reasoning.ts`).

**Terminal vəziyyətlər (gözləmə müddəti DEYİL):**

- `banned` — qadağan edilmiş açar söz / hesab qadağası aşkarlanması ilə (baxın: [BAN_DETECTION](../security/BAN_DETECTION.md)), həmçinin yuxarı axından hər sorğu üzrə ardıcıl üç imtina ilə təyin edilir (`request_rejected`, məsələn, Anthropic OAuth 403 "Sorğuya icazə verilmir" — `open-sse/services/requestRejectedStreak.ts`); tək bir imtina yalnız bağlantını gözləmə rejiminə keçirir
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/bg/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ OmniRoute има три отделни, но свързани механизма

**Защита срещу лавинообразни едновременни заявки:** предотвратява прекомерното удължаване на периода на изчакване или двойното увеличаване на `backoffLevel` при едновременни грешки.

Двоичните кадри `reasoningContentEvent` на Kiro с непразен подпис запазват активността на разсъждение през изпълнителя като празна делта `reasoning_content`. Подписът не се препраща. Метаданните, непълните кадри и празните подписи не рестартират времевия лимит за съдържание; независимият лимит за продължителността на активния поток и отмяната от клиента остават в сила. (`open-sse/executors/kiro/reasoning.ts`).

**Крайни състояния (НЕ са периоди на изчакване):**

- `banned` — задава се при откриване на забранена ключова дума/блокиране на акаунт (вижте [BAN_DETECTION](../security/BAN_DETECTION.md)), както и при три последователни отказа от сървъра за отделна заявка (`request_rejected`, напр. Anthropic OAuth 403 "Request not allowed" — `open-sse/services/requestRejectedStreak.ts`); единичен отказ само поставя връзката в период на изчакване
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/bn/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ OmniRoute-এ তিনটি স্বতন্ত্র কিন্তু স

**থান্ডারিং-হার্ড প্রতিরোধ ব্যবস্থা:** সমসাময়িক ব্যর্থতার কারণে কুলডাউন অতিরিক্ত বাড়ানো বা `backoffLevel` দুইবার বৃদ্ধি করা প্রতিরোধ করে।

অখালি স্বাক্ষরযুক্ত Kiro-এর বাইনারি `reasoningContentEvent` ফ্রেমগুলো এক্সিকিউটরের মধ্য দিয়ে খালি `reasoning_content` ডেল্টা হিসেবে যুক্তিচিন্তার সক্রিয়তা বজায় রাখে। স্বাক্ষরটি পাঠানো হয় না। মেটাডেটা, অসম্পূর্ণ ফ্রেম এবং খালি স্বাক্ষর কনটেন্টের জন্য নির্ধারিত সময়সীমা পুনরায় শুরু করে না; সক্রিয় স্ট্রিমের স্বাধীন সময়সীমা এবং ক্লায়েন্টের বাতিলকরণ কার্যকর থাকে। (`open-sse/executors/kiro/reasoning.ts`).

**টার্মিনাল অবস্থা (কুলডাউন নয়):**

- `banned` — নিষিদ্ধ-কীওয়ার্ড / অ্যাকাউন্ট-ব্যান শনাক্তকরণ (দেখুন [BAN_DETECTION](../security/BAN_DETECTION.md)) এবং পরপর তিনটি আপস্ট্রিম প্রতি-অনুরোধ প্রত্যাখ্যানের (`request_rejected`, যেমন Anthropic OAuth 403 "Request not allowed" — `open-sse/services/requestRejectedStreak.ts`) ক্ষেত্রে সেট করা হয়; একটি মাত্র প্রত্যাখ্যান শুধু সংযোগটিকে কুলডাউনে রাখে
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/bs/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ Zaštita od regresije: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Zaštita od stampeda zahtjeva:** sprečava da istovremeni kvarovi pretjerano produže hlađenje ili dvaput povećaju `backoffLevel`.

Kiro binarni okviri `reasoningContentEvent` s nepraznim potpisom čuvaju aktivnost rezonovanja kroz izvršitelj kao praznu deltu `reasoning_content`. Potpis se ne prosljeđuje. Metapodaci, nepotpuni okviri i prazni potpisi ne pokreću ponovo vremenski limit za sadržaj; nezavisni limit trajanja aktivnog toka i otkazivanje od strane klijenta ostaju na snazi. (`open-sse/executors/kiro/reasoning.ts`).

**Završna stanja (NISU hlađenja):**

- `banned` — postavlja se otkrivanjem zabranjene ključne riječi / zabrane računa (pogledajte [BAN_DETECTION](../security/BAN_DETECTION.md)) i nakon tri uzastopna uzvodna odbijanja pojedinačnih zahtjeva (`request_rejected`, npr. Anthropic OAuth 403 "Zahtjev nije dozvoljen" — `open-sse/services/requestRejectedStreak.ts`); jedno odbijanje samo stavlja vezu na hlađenje
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/cs/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ Ochrana proti regresím: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Ochrana proti lavinovému souběhu:** zabraňuje tomu, aby souběžná selhání nadměrně prodloužila dobu blokování nebo zvýšila `backoffLevel` vícekrát.

Binární rámce Kiro `reasoningContentEvent` s neprázdným podpisem zachovávají aktivitu uvažování při průchodu executorem jako prázdnou deltu `reasoning_content`. Podpis se nepředává. Metadata, neúplné rámce a prázdné podpisy neobnovují časový limit pro obsah; nezávislý limit délky aktivního streamu a zrušení klientem zůstávají platné. (`open-sse/executors/kiro/reasoning.ts`).

**Koncové stavy (NEJDE o doby blokování):**

- `banned` — nastaveno při detekci klíčového slova zákazu / zablokování účtu (viz [BAN_DETECTION](../security/BAN_DETECTION.md)) a při třech po sobě jdoucích odmítnutích jednotlivých požadavků nadřazenou službou (`request_rejected`, např. Anthropic OAuth 403 „Požadavek není povolen“ — `open-sse/services/requestRejectedStreak.ts`); jediné odmítnutí pouze dočasně zablokuje připojení
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/da/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ Regressionsbeskyttelse: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Beskyttelse mod stampede-effekt:** forhindrer samtidige fejl i at forlænge nedkølingen for meget eller forøge `backoffLevel` to gange.

Kiros binære `reasoningContentEvent`-rammer med en ikke-tom signatur bevarer ræsonneringsaktiviteten gennem eksekutoren som en tom `reasoning_content`-delta. Signaturen videresendes ikke. Metadata, ufuldstændige rammer og tomme signaturer genstarter ikke tidsbudgettet for indhold; den uafhængige tidsgrænse for den aktive stream og klientens annullering gælder stadig. (`open-sse/executors/kiro/reasoning.ts`).

**Terminaltilstande (IKKE nedkølinger):**

- `banned` — angives ved registrering af forbudte nøgleord/kontoudelukkelse (se [BAN_DETECTION](../security/BAN_DETECTION.md)) og ved tre på hinanden følgende upstream-afvisninger pr. forespørgsel (`request_rejected`, f.eks. Anthropic OAuth 403 "Request not allowed" — `open-sse/services/requestRejectedStreak.ts`); en enkelt afvisning nedkøler kun forbindelsen
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/de/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ Regressionsschutz: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Schutz vor einer Anfragelawine:** verhindert, dass gleichzeitige Fehler den Cooldown übermäßig verlängern oder `backoffLevel` doppelt erhöhen.

Binäre `reasoningContentEvent`-Frames von Kiro mit einer nicht leeren Signatur erhalten die Denkaktivität beim Durchlaufen des Executors als leeres `reasoning_content`-Delta. Die Signatur wird nicht weitergegeben. Metadaten, unvollständige Frames und leere Signaturen starten das Zeitbudget für Inhalte nicht neu; das unabhängige Zeitlimit für den aktiven Stream und der Abbruch durch den Client gelten weiterhin. (`open-sse/executors/kiro/reasoning.ts`).

**Endzustände (KEINE Cooldowns):**

- `banned` — wird durch die Erkennung gesperrter Schlüsselwörter/Kontensperren (siehe [BAN_DETECTION](../security/BAN_DETECTION.md)) sowie durch drei aufeinanderfolgende vorgelagerte Ablehnungen pro Anfrage gesetzt (`request_rejected`, z. B. Anthropic OAuth 403 „Request not allowed“ — `open-sse/services/requestRejectedStreak.ts`); eine einzelne Ablehnung versetzt die Verbindung lediglich in den Cooldown
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/el/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@

**Προστασία κατά του φαινομένου thundering herd:** αποτρέπει τις ταυτόχρονες αποτυχίες από το να παρατείνουν υπερβολικά την περίοδο αναμονής ή να αυξήσουν δύο φορές το `backoffLevel`.

Τα δυαδικά πλαίσια `reasoningContentEvent` του Kiro με μη κενή υπογραφή διατηρούν τη δραστηριότητα συλλογισμού μέσω του εκτελεστή ως κενό δέλτα `reasoning_content`. Η υπογραφή δεν προωθείται. Τα μεταδεδομένα, τα ελλιπή πλαίσια και οι κενές υπογραφές δεν επανεκκινούν το χρονικό όριο περιεχομένου· το ανεξάρτητο όριο διάρκειας της ενεργής ροής και η ακύρωση από τον πελάτη εξακολουθούν να ισχύουν. (`open-sse/executors/kiro/reasoning.ts`).

**Τερματικές καταστάσεις (ΟΧΙ περίοδοι αναμονής):**

- `banned` — ορίζεται από τον εντοπισμό απαγορευμένης λέξης-κλειδιού / αποκλεισμού λογαριασμού (βλ. [BAN_DETECTION](../security/BAN_DETECTION.md)) και από τρεις διαδοχικές ανάντη απορρίψεις ανά αίτημα (`request_rejected`, π.χ. Anthropic OAuth 403 "Request not allowed" — `open-sse/services/requestRejectedStreak.ts`)· μία μόνο απόρριψη απλώς θέτει τη σύνδεση σε περίοδο αναμονής
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/es/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ Protección contra regresiones: `tests/unit/provider-cooldown-window-gate.test.t

**Protección contra avalanchas de solicitudes:** evita que los fallos simultáneos prolonguen en exceso el tiempo de espera o incrementen dos veces `backoffLevel`.

Los frames binarios `reasoningContentEvent` de Kiro con una firma no vacía conservan la actividad de razonamiento al pasar por el ejecutor como un delta `reasoning_content` vacío. La firma no se reenvía. Los metadatos, los frames incompletos y las firmas vacías no reinician el plazo para contenido; el límite independiente de duración del flujo activo y la cancelación del cliente siguen vigentes. (`open-sse/executors/kiro/reasoning.ts`).

**Estados terminales (NO son tiempos de espera):**

- `banned` — establecido por la detección de palabras clave de bloqueo o de cuentas bloqueadas (consulte [BAN_DETECTION](../security/BAN_DETECTION.md)), así como por tres rechazos consecutivos por solicitud del servicio ascendente (`request_rejected`, p. ej., el error 403 de OAuth de Anthropic «Request not allowed» — `open-sse/services/requestRejectedStreak.ts`); un único rechazo solo pone la conexión en tiempo de espera
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/et/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ Regressioonikaitse: `tests/unit/provider-cooldown-window-gate.test.ts`.

**Päringutulva vastane kaitse:** takistab samaaegsetel tõrgetel ooteaega liigselt pikendada või `backoffLevel`-it topelt suurendada.

Kiro mittetühja allkirjaga binaarsed `reasoningContentEvent`-kaadrid säilitavad täituri kaudu arutlustegevuse tühja `reasoning_content` deltana. Allkirja edasi ei saadeta. Metaandmed, poolikud kaadrid ja tühjad allkirjad ei taaskäivita sisu ajalimiiti; aktiivse voo sõltumatu ajalimiit ja kliendi tühistamine kehtivad endiselt. (`open-sse/executors/kiro/reasoning.ts`).

**Lõppolekud (EI OLE ooteajad):**

- `banned` — määratakse keelatud märksõna / konto blokeerimise tuvastamisel (vt [BAN_DETECTION](../security/BAN_DETECTION.md)) ning kolme järjestikuse ülesvoolu päringupõhise keeldumise korral (`request_rejected`, nt Anthropic OAuth 403 „Request not allowed” — `open-sse/services/requestRejectedStreak.ts`); üksik keeldumine paneb ühenduse ainult ooteajale
Expand Down
2 changes: 2 additions & 0 deletions docs/i18n/fa/docs/architecture/RESILIENCE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ OmniRoute سه سازوکار تابآوری متمایز اما مرتبط دا

**محافظ جلوگیری از هجوم همزمان:** مانع میشود خطاهای همزمان، وقفه را بیشازحد تمدید کنند یا `backoffLevel` را دو بار افزایش دهند.

فریمهای دودویی `reasoningContentEvent` در Kiro که امضای غیرخالی دارند، فعالیت استدلال را هنگام عبور از اجراکننده به صورت دلتای خالی `reasoning_content` حفظ میکنند. امضا ارسال نمیشود. فراداده، فریمهای ناقص و امضاهای خالی مهلت محتوا را از نو آغاز نمیکنند؛ محدودیت زمانی مستقل جریان فعال و لغو از سوی کلاینت همچنان برقرار هستند. (`open-sse/executors/kiro/reasoning.ts`).

**وضعیتهای نهایی (وقفه نیستند):**

- `banned` — با تشخیص کلیدواژهٔ مسدودسازی / مسدودشدن حساب تنظیم میشود (به [BAN_DETECTION](../security/BAN_DETECTION.md) مراجعه کنید) و همچنین پس از سه رد متوالی هر درخواست از سمت بالادست (`request_rejected`، برای مثال پاسخ 403 مربوط به Anthropic OAuth با پیام «Request not allowed» — `open-sse/services/requestRejectedStreak.ts`)؛ یک رد منفرد فقط اتصال را وارد وقفه میکند
Expand Down
Loading
Loading