feat(rag): retry a failed LLM request before the first token lands — BOR_LLM_RETRIES/BOR_LLM_RETRY_DELAY with a live 'retrying' status
This commit is contained in:
@@ -108,6 +108,30 @@ class ChatErrorEvent(BaseModel):
|
||||
detail: str
|
||||
|
||||
|
||||
class ChatRetryEvent(BaseModel):
|
||||
"""SSE retry event: an LLM request is restarted before the first token
|
||||
(phase 67, owner-locked 2026-09-01).
|
||||
|
||||
Sibling of :class:`ChatErrorEvent`, but transient — the client shows a
|
||||
live status on the existing ``#send-status`` line (locked A4:
|
||||
"Communication interrupted — retrying (n of N)…") and the send button
|
||||
stays the Stop control; it never flips the state machine to error. It
|
||||
is only ever sent when the failed attempt had NOT streamed a single
|
||||
output frame yet (locked A2: no thinking/tool/delta emitted) — once
|
||||
tokens are flowing, a failure is terminal (the ``error`` frame) and
|
||||
this event cannot appear.
|
||||
|
||||
``attempt`` is the 1-based number of the attempt the endpoint is about
|
||||
to try next (what the endpoint sends — the first failure of a
|
||||
4-attempt budget carries ``attempt=2``); ``max_attempts`` is the total
|
||||
attempt budget (``llm_retries + 1``).
|
||||
"""
|
||||
|
||||
type: Literal["retry"] = "retry"
|
||||
attempt: int
|
||||
max_attempts: int
|
||||
|
||||
|
||||
class DocSummary(BaseModel):
|
||||
"""One indexed document as shown on the Sources page / API."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user