litellm/litellm-rust/crates/host-python/src
yujonglee 323d3956d6
feat(rust): one typed decline from core up to each host (#47772)
* feat(rust): one typed decline from core up to each host

Rust core says it cannot serve a request with one Decline that travels
unchanged through llms and inference up to the host. The Python bridge
raises RustBridgeDeclined for it in route_failure before the public
exception mapping, so dispatch falls back to legacy Python instead of
failing the call, and the gateway answers 501. Every route collapses
errors after the send with Error::after_send, which keeps a provider
answer and a response fault as they are and nests anything else as the
source of an invalid response, so a billed call can never read as a
decline. Response-side cases that used to decline are now
ErrorDetail::Unhandled response faults.

The rust-error skill documents declined() as the first question both
boundaries ask, and the Python suites pin that a native decline reaches
the dispatcher before any provider IO.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(rust): keep post-provider hook failures terminal

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-28 09:22:11 -07:00
..
hooks/chain refactor(host-python): collect host failures in a thiserror Error enum (#46361) 2026-10-14 17:19:06 -07:00
argument.rs refactor(python-bridge): ship a signature base and read the resolved call (#45450) 2026-10-08 17:20:29 -07:00
binding.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
caller.rs refactor(rust-bridge): generator-style execution protocol with stream step names (#46282) 2026-10-14 17:19:07 -07:00
conversion_cache.rs feat: improve trace ingestion and trace details (#43975) 2026-10-01 13:45:33 -07:00
driver.rs feat(rust): one typed decline from core up to each host (#47772) 2026-10-28 09:22:11 -07:00
error.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
file_reader.rs refactor(host-python): collect host failures in a thiserror Error enum (#46361) 2026-10-14 17:19:06 -07:00
fork_gate.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
gil.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
handle.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
hooks.rs refactor(rust): centralize host execution and compose callbacks (#43515) 2026-09-28 19:20:27 +00:00
lib.rs refactor(rust-bridge): return an unstarted Execution from native entrypoints and drive it in Python (#46299) 2026-10-14 17:50:44 -07:00
marshal.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
native.rs refactor(host-python): collect host failures in a thiserror Error enum (#46361) 2026-10-14 17:19:06 -07:00
owned.rs refactor(rust): share call lifecycle across route-owned inference (#43461) 2026-09-27 16:05:30 -07:00
runtime.rs refactor(rust): adopt one error discipline across litellm-rust with source chains and Report (#48042) 2026-10-28 09:22:11 -07:00
services.rs feat(cache): select Rust caching through explicit cache objects (#43601) 2026-09-29 00:01:44 +00:00