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 register_fn(cx);
26 }
27
28 fn unregister_language_model_provider(&self, provider_id: Arc<str>, cx: &mut App) {
29 self.registry.update(cx, |registry, cx| {
30 registry.unregister_provider(LanguageModelProviderId::from(provider_id), cx);
31 });
32 }
33}