xz_skill/types/
context.rs1use std::sync::Arc;
2
3#[derive(Clone)]
5pub struct ExecutionContext {
6 pub user_id: String,
7 pub session_id: String,
8 pub messages: Vec<Message>,
9 pub provider: Option<Arc<dyn xz_provider::LlmProvider>>,
10 pub search: Option<Arc<dyn std::any::Any + Send + Sync>>,
11 pub memory: Option<Arc<dyn std::any::Any + Send + Sync>>,
12}
13
14impl std::fmt::Debug for ExecutionContext {
15 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
16 f.debug_struct("ExecutionContext")
17 .field("user_id", &self.user_id)
18 .field("session_id", &self.session_id)
19 .field("messages", &self.messages)
20 .field("provider", &self.provider.is_some())
21 .field("search", &self.search.is_some())
22 .field("memory", &self.memory.is_some())
23 .finish()
24 }
25}
26
27#[derive(Debug, Clone)]
29pub struct Message {
30 pub role: String,
31 pub content: String,
32}
33
34impl Default for Message {
35 fn default() -> Self {
36 Self {
37 role: "user".into(),
38 content: String::new(),
39 }
40 }
41}