mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-14 09:03:16 +00:00
* refactor(rust): extract litellm-host-native as the shared Rust host driver Move service and hook dispatch out of host-http into a Driver that owns the machine and Rust handlers, returning at completion or a stream boundary and holding the demand reply until the consumer advances. Move the in-process runner onto the same driver. host-http now layers encoding, SSE, body polling and lifecycle observation over it. host-python keeps driving litellm-host directly Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(rust): interrupt the machine when the in-process stream consumer fails Restores the pre-refactor interruption path for StreamConsumer errors via Driver::fail and ports the generic run lifecycle tests into host-native. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * refactor(rust): separate the machine contract from coroutine execution * auth update * refactor(rust): use standard flow control for host requests * style(rust): keep host driver imports formatted * chores * mostly relocation * refactor(rust): separate interceptors from queued observers * refactor(rust): centralize legacy callback mappings and lifecycle * docs: define Python host boundaries and migration plan * refactor: enforce Python host and bridge boundaries * refactor(rust): separate operations from callback composition * refactor(rust): compose SDK policy through call hooks --------- Co-authored-by: Yujong Lee <yujong@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
25 lines
707 B
Rust
25 lines
707 B
Rust
use std::{convert::Infallible, future::Future};
|
|
|
|
use litellm_host::protocol::Protocol;
|
|
|
|
pub trait HostCallHandler<P: Protocol>: Send + Sync {
|
|
fn handle_host_call(
|
|
&self,
|
|
call: P::HostCall,
|
|
) -> impl Future<Output = Result<(), P::Error>> + Send;
|
|
}
|
|
|
|
impl<P: Protocol, T: HostCallHandler<P> + ?Sized> HostCallHandler<P> for &T {
|
|
fn handle_host_call(
|
|
&self,
|
|
call: P::HostCall,
|
|
) -> impl Future<Output = Result<(), P::Error>> + Send {
|
|
(**self).handle_host_call(call)
|
|
}
|
|
}
|
|
|
|
impl<P: Protocol<HostCall = Infallible>> HostCallHandler<P> for () {
|
|
async fn handle_host_call(&self, call: Infallible) -> Result<(), P::Error> {
|
|
match call {}
|
|
}
|
|
}
|