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}