mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: record and expose terminal upstream interception errors (#26961)
Categorises the terminal error of a failed interception and persists it on the interception record, then surfaces it on the AI Gateway API. - Categorise into an enum (`bad_request`, `unauthorized`, `rate_limited`, `overloaded`, `server_error`, `unknown`), unwrapping the ResponseError envelope, the upstream Anthropic/OpenAI SDK errors, and key-pool exhaustion so blocking and streaming paths agree. - Thread the type and raw message through the recorder dRPC into the `aibridge_interceptions` row (optional proto fields; NULL on success). - Expose the error on the AI Gateway thread API from the root interception. *This PR was produced by opencode (agent) using the `anthropic/claude-opus-4-8` model, under human direction and review.*
This commit is contained in:
@@ -15,7 +15,11 @@ UPDATE aibridge_interceptions
|
||||
credential_hint = CASE
|
||||
WHEN credential_kind = 'centralized' THEN @credential_hint::text
|
||||
ELSE credential_hint
|
||||
END
|
||||
END,
|
||||
-- Terminal upstream error, only set when the interception failed.
|
||||
-- NULL leaves the columns empty for successful interceptions.
|
||||
error_type = sqlc.narg('error_type')::aibridge_interception_error_type,
|
||||
error_message = sqlc.narg('error_message')::text
|
||||
WHERE
|
||||
id = @id::uuid
|
||||
AND ended_at IS NULL
|
||||
|
||||
Reference in New Issue
Block a user