fix(core): retry on failed as well as timeout; only auth stops the run (#104)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Yaowei Zheng
2026-07-29 16:57:05 +08:00
committed by GitHub
parent 8dc560eedd
commit 5b22ad06da
30 changed files with 603 additions and 174 deletions
+10 -7
View File
@@ -147,13 +147,16 @@ export interface GenerativeModelParameters {
* - `malformed`: AgentHub response failed JSON parsing, needs reconnect — also retried by
* `context_engine`;
* - `aborted`: user-initiated interruption — stop and hand back to the user;
* - `failed`: other non-retryable errors (params, etc.) — stop and hand back to the user
* (`message` provides the display text);
* - `auth`: the provider rejected the credentials (see `isAuthenticationError`) — behaves
* like `failed` in the engine (direct stop, never retried), but hosts key on the status
* to disable input until the model's API key is updated (only the model reference is
* fixed at Session creation; credentials come from the current Project config, so a key
* update lets the Session continue).
* - `failed`: an error the retry classifier did not judge transient (params, etc.) — still
* retried by `context_engine` within the same run (`message` provides the display text).
* The classification stays honest — this is reported as `failed`, not relabelled a
* timeout — while the *policy* retries it, because that classifier is an allowlist and a
* gateway phrasing a transient fault its own way lands here;
* - `auth`: the provider rejected the credentials (see `isAuthenticationError`) — the one
* status that stops the run outright, since no retry can turn a rejected credential into
* a working one; hosts also key on it to disable input until the model's API key is
* updated (only the model reference is fixed at Session creation; credentials come from
* the current Project config, so a key update lets the Session continue).
* Docs: /docs/interfaces § "LLMOutcome semantics".
*/
export interface LLMOutcome {