use std::future::Future;
use std::pin::Pin;
use codex_protocol::models::ResponseInputItem;
pub type ResponseItemInjectionFuture<'a> =
Pin<Box<dyn Future<Output = Result<(), Vec<ResponseInputItem>>> + Send + 'a>>;
pub trait ResponseItemInjector: Send + Sync {
fn inject_response_items<'a>(
&'a self,
items: Vec<ResponseInputItem>,
) -> ResponseItemInjectionFuture<'a>;
}
#[derive(Debug, Default, Clone, Copy)]
pub struct NoopResponseItemInjector;
impl ResponseItemInjector for NoopResponseItemInjector {
fn inject_response_items<'a>(
&'a self,
items: Vec<ResponseInputItem>,
) -> ResponseItemInjectionFuture<'a> {
Box::pin(std::future::ready(Err(items)))
}
}