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        eprintln!(
26            "ExtensionLanguageModelProxy::register_language_model_provider called for {}",
27            provider_id
28        );
29        register_fn(cx);
30        eprintln!(
31            "ExtensionLanguageModelProxy::register_language_model_provider completed for {}",
32            provider_id
33        );
34    }
35
36    fn unregister_language_model_provider(&self, provider_id: Arc<str>, cx: &mut App) {
37        self.registry.update(cx, |registry, cx| {
38            registry.unregister_provider(LanguageModelProviderId::from(provider_id), cx);
39        });
40    }
41}