1use std::sync::Arc;
2
3use client::{Client, UserStore};
4use gpui::{App, Context, Entity};
5use language_model::LanguageModelRegistry;
6use provider::deepseek::DeepSeekLanguageModelProvider;
7
8pub mod provider;
9mod settings;
10pub mod ui;
11
12use crate::provider::anthropic::AnthropicLanguageModelProvider;
13use crate::provider::bedrock::BedrockLanguageModelProvider;
14use crate::provider::cloud::CloudLanguageModelProvider;
15use crate::provider::copilot_chat::CopilotChatLanguageModelProvider;
16use crate::provider::google::GoogleLanguageModelProvider;
17use crate::provider::lmstudio::LmStudioLanguageModelProvider;
18use crate::provider::mistral::MistralLanguageModelProvider;
19use crate::provider::ollama::OllamaLanguageModelProvider;
20use crate::provider::open_ai::OpenAiLanguageModelProvider;
21use crate::provider::open_router::OpenRouterLanguageModelProvider;
22use crate::provider::vercel::VercelLanguageModelProvider;
23pub use crate::settings::*;
24
25pub fn init(user_store: Entity<UserStore>, client: Arc<Client>, cx: &mut App) {
26 crate::settings::init(cx);
27 let registry = LanguageModelRegistry::global(cx);
28 registry.update(cx, |registry, cx| {
29 register_language_model_providers(registry, user_store, client, cx);
30 });
31}
32
33fn register_language_model_providers(
34 registry: &mut LanguageModelRegistry,
35 user_store: Entity<UserStore>,
36 client: Arc<Client>,
37 cx: &mut Context<LanguageModelRegistry>,
38) {
39 registry.register_provider(
40 CloudLanguageModelProvider::new(user_store.clone(), client.clone(), cx),
41 cx,
42 );
43
44 registry.register_provider(
45 AnthropicLanguageModelProvider::new(client.http_client(), cx),
46 cx,
47 );
48 registry.register_provider(
49 OpenAiLanguageModelProvider::new(client.http_client(), cx),
50 cx,
51 );
52 registry.register_provider(
53 OllamaLanguageModelProvider::new(client.http_client(), cx),
54 cx,
55 );
56 registry.register_provider(
57 LmStudioLanguageModelProvider::new(client.http_client(), cx),
58 cx,
59 );
60 registry.register_provider(
61 DeepSeekLanguageModelProvider::new(client.http_client(), cx),
62 cx,
63 );
64 registry.register_provider(
65 GoogleLanguageModelProvider::new(client.http_client(), cx),
66 cx,
67 );
68 registry.register_provider(
69 MistralLanguageModelProvider::new(client.http_client(), cx),
70 cx,
71 );
72 registry.register_provider(
73 BedrockLanguageModelProvider::new(client.http_client(), cx),
74 cx,
75 );
76 registry.register_provider(
77 OpenRouterLanguageModelProvider::new(client.http_client(), cx),
78 cx,
79 );
80 registry.register_provider(
81 VercelLanguageModelProvider::new(client.http_client(), cx),
82 cx,
83 );
84 registry.register_provider(CopilotChatLanguageModelProvider::new(cx), cx);
85}