systemprompt_extension/
context.rs1use std::sync::Arc;
7use systemprompt_identifiers::InstanceId;
8use systemprompt_traits::{ConfigProvider, DatabaseHandle, FileStorage};
9
10pub trait ExtensionContext: Send + Sync {
11 fn system_owner_id(&self) -> systemprompt_identifiers::UserId;
12
13 fn config(&self) -> Arc<dyn ConfigProvider>;
14
15 fn database(&self) -> Arc<dyn DatabaseHandle>;
16
17 fn file_storage(&self) -> Arc<dyn FileStorage>;
18
19 fn instance_id(&self) -> InstanceId;
20
21 fn get_extension(&self, id: &str) -> Option<Arc<dyn crate::Extension>>;
22
23 fn has_extension(&self, id: &str) -> bool {
24 self.get_extension(id).is_some()
25 }
26}
27
28pub type DynExtensionContext = Arc<dyn ExtensionContext>;