extension.rs

 1use extension::{ExtensionLanguageModelProviderProxy, LanguageModelProviderRegistration};
 2use gpui::{App, Entity};
 3use language_model::{LanguageModelProviderId, LanguageModelRegistry};
 4use std::sync::Arc;
 5
 6/// Proxy implementation that registers extension-based language model providers
 7/// with the LanguageModelRegistry.
 8pub struct ExtensionLanguageModelProxy {
 9    registry: Entity<LanguageModelRegistry>,
10}
11
12impl ExtensionLanguageModelProxy {
13    pub fn new(registry: Entity<LanguageModelRegistry>) -> Self {
14        Self { registry }
15    }
16}
17
18impl ExtensionLanguageModelProviderProxy for ExtensionLanguageModelProxy {
19    fn register_language_model_provider(
20        &self,
21        provider_id: Arc<str>,
22        register_fn: LanguageModelProviderRegistration,
23        cx: &mut App,
24    ) {
25        let _ = provider_id;
26        register_fn(cx);
27    }
28
29    fn unregister_language_model_provider(&self, provider_id: Arc<str>, cx: &mut App) {
30        self.registry.update(cx, |registry, cx| {
31            registry.unregister_provider(LanguageModelProviderId::from(provider_id), cx);
32        });
33    }
34}