Skip to main content

systemprompt_runtime/context/
repositories.rs

1//! Repository accessors: the composition root builds each repository once
2//! and every consumer reaches it through `AppContext`.
3//!
4//! Copyright (c) systemprompt.io — Business Source License 1.1.
5//! See <https://systemprompt.io> for licensing details.
6
7use std::sync::Arc;
8
9use systemprompt_agent::repository::A2ARepositories;
10use systemprompt_ai::repository::AiRepositories;
11use systemprompt_analytics::repository::AnalyticsRepositories;
12use systemprompt_content::repository::ContentRepositories;
13use systemprompt_database::ServiceRepository;
14use systemprompt_files::FileRepository;
15use systemprompt_marketplace::managed::ManagedRepository;
16use systemprompt_mcp::repository::McpSessionRepository;
17use systemprompt_oauth::repository::OAuthRepositories;
18use systemprompt_users::UserRepository;
19
20use super::AppContext;
21
22impl AppContext {
23    pub const fn a2a_repositories(&self) -> &Arc<A2ARepositories> {
24        &self.data.a2a_repositories
25    }
26
27    pub const fn content_repositories(&self) -> &Arc<ContentRepositories> {
28        &self.data.content_repositories
29    }
30
31    pub const fn oauth_repositories(&self) -> &Arc<OAuthRepositories> {
32        &self.data.oauth_repositories
33    }
34
35    pub const fn user_repository(&self) -> &Arc<UserRepository> {
36        &self.data.user_repository
37    }
38
39    pub const fn service_repository(&self) -> &Arc<ServiceRepository> {
40        &self.data.service_repository
41    }
42
43    pub const fn ai_repositories(&self) -> &Arc<AiRepositories> {
44        &self.data.ai_repositories
45    }
46
47    #[must_use]
48    pub fn tool_call_intents(&self) -> systemprompt_traits::DynToolCallIntentClaims {
49        Arc::new(self.data.ai_repositories.requests.clone())
50    }
51
52    pub const fn analytics_repositories(&self) -> &Arc<AnalyticsRepositories> {
53        &self.data.analytics_repositories
54    }
55
56    pub const fn file_repository(&self) -> &Arc<FileRepository> {
57        &self.data.file_repository
58    }
59
60    pub const fn mcp_session_repository(&self) -> &Arc<McpSessionRepository> {
61        &self.data.mcp_session_repository
62    }
63
64    pub const fn managed_repository(&self) -> &Arc<ManagedRepository> {
65        &self.data.managed_repository
66    }
67}