use std::sync::Arc;
use async_trait::async_trait;
use everruns_core::error::Result;
use everruns_core::events::Event;
use everruns_core::message::Message;
use everruns_core::message_retriever::{InputMessage, MessageRetriever};
use everruns_core::traits::EventEmitter;
use everruns_core::typed_id::SessionId;
pub use everruns_host::HostBackends as RuntimeBackends;
pub use everruns_host::*;
#[deprecated(
since = "0.17.25",
note = "execution is event-authoritative; use everruns_host::EventLog and EventHistory"
)]
#[async_trait]
pub trait RuntimeMessageStore: MessageRetriever + Send + Sync {
async fn add_input_message(
&self,
session_id: SessionId,
input: InputMessage,
) -> Result<Message>;
async fn store_message(&self, session_id: SessionId, message: Message) -> Result<()>;
}
#[allow(deprecated)]
#[async_trait]
impl RuntimeMessageStore for everruns_core::in_memory::InMemoryMessageRetriever {
async fn add_input_message(
&self,
session_id: SessionId,
input: InputMessage,
) -> Result<Message> {
self.add(session_id, input).await
}
async fn store_message(&self, session_id: SessionId, message: Message) -> Result<()> {
self.store(session_id, message).await
}
}
#[deprecated(
since = "0.17.25",
note = "use everruns_host::EventSink and EventReader"
)]
#[async_trait]
pub trait EventBus: EventEmitter {
async fn collected_events(&self) -> Vec<Event> {
Vec::new()
}
}
#[allow(deprecated)]
#[async_trait]
impl<T: EventBus + ?Sized> EventBus for Arc<T> {
async fn collected_events(&self) -> Vec<Event> {
(**self).collected_events().await
}
}
#[allow(deprecated)]
#[async_trait]
impl EventBus for everruns_core::in_memory::InMemoryEventEmitter {
async fn collected_events(&self) -> Vec<Event> {
self.events().await
}
}