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}