Skip to main content

soma_provider_core/
registry.rs

1mod builder;
2mod dispatch;
3mod fingerprint;
4mod index;
5mod snapshot;
6
7use std::{collections::BTreeMap, sync::Arc};
8
9use crate::Provider;
10
11pub use builder::ProviderRegistryBuilder;
12pub use fingerprint::RegistryFingerprint;
13pub use index::{ProviderIndexes, RegisteredTool};
14pub use snapshot::RegistrySnapshot;
15
16#[derive(Clone)]
17pub struct ProviderRegistry {
18    pub(super) providers: Arc<BTreeMap<String, Arc<dyn Provider>>>,
19    pub(super) snapshot: Arc<RegistrySnapshot>,
20}
21
22impl ProviderRegistry {
23    pub fn builder() -> ProviderRegistryBuilder {
24        ProviderRegistryBuilder::new()
25    }
26
27    pub fn snapshot(&self) -> Arc<RegistrySnapshot> {
28        Arc::clone(&self.snapshot)
29    }
30}