use crate::types::{InvokeRequest, InvokeResponse};
pub struct Context<'a> {
req: &'a InvokeRequest,
res: &'a mut InvokeResponse,
}
impl<'a> Context<'a> {
pub fn new(req: &'a InvokeRequest, res: &'a mut InvokeResponse) -> Self {
Context { req, res }
}
pub fn request_id(&self) -> &str { &self.req.request_id }
pub fn trace_id(&self) -> &str { &self.req.trace_id }
pub fn session_id(&self) -> &str { &self.req.session_id }
pub fn llm_session_id(&self) -> &str { &self.req.llm_session_id }
pub fn skill_id(&self) -> &str { &self.req.skill_id }
pub fn caller_id(&self) -> &str { &self.req.caller_id }
pub fn method(&self) -> &str { &self.req.method }
pub fn set_llm_context(&mut self, text: impl Into<String>) {
self.res.llm_context = text.into();
}
pub fn append_llm_context(&mut self, text: impl Into<String>) {
let text = text.into();
if self.res.llm_context.is_empty() {
self.res.llm_context = text;
} else {
self.res.llm_context.push('\n');
self.res.llm_context.push_str(&text);
}
}
}