use crate::{LlmRequest, LlmResponse, Metadata};
use std::collections::{HashMap, HashSet};
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct Context {
pub values: HashMap<String, String>,
excluded_targets: HashSet<String>,
}
impl Context {
pub fn exclude_target(&mut self, target: impl Into<String>) -> bool {
self.excluded_targets.insert(target.into())
}
pub fn is_excluded(&self, target: &str) -> bool {
self.excluded_targets.contains(target)
}
}
#[derive(Clone)]
pub struct Signals {}
#[derive(Clone, Default)]
pub struct Request {
pub llm_request: LlmRequest,
pub raw_request: Option<serde_json::Value>,
pub metadata: Option<Metadata>,
}
impl Request {
pub fn requested_model(&self) -> Option<&str> {
self.llm_request.model.as_deref()
}
}
pub struct Response {
pub llm_response: LlmResponse,
pub metadata: Option<Metadata>,
}
impl Response {
pub fn selected_model(&self) -> Option<&str> {
self.llm_response.selected_model()
}
}