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;
23use crate::provider::x_ai::XAiLanguageModelProvider;
24pub use crate::settings::*;
25
26pub fn init(user_store: Entity<UserStore>, client: Arc<Client>, cx: &mut App) {
27 crate::settings::init(cx);
28 let registry = LanguageModelRegistry::global(cx);
29 registry.update(cx, |registry, cx| {
30 register_language_model_providers(registry, user_store, client, cx);
31 });
32}
33
34fn register_language_model_providers(
35 registry: &mut LanguageModelRegistry,
36 user_store: Entity<UserStore>,
37 client: Arc<Client>,
38 cx: &mut Context<LanguageModelRegistry>,
39) {
40 registry.register_provider(
41 CloudLanguageModelProvider::new(user_store.clone(), client.clone(), cx),
42 cx,
43 );
44
45 registry.register_provider(
46 AnthropicLanguageModelProvider::new(client.http_client(), cx),
47 cx,
48 );
49 registry.register_provider(
50 OpenAiLanguageModelProvider::new(client.http_client(), cx),
51 cx,
52 );
53 registry.register_provider(
54 OllamaLanguageModelProvider::new(client.http_client(), cx),
55 cx,
56 );
57 registry.register_provider(
58 LmStudioLanguageModelProvider::new(client.http_client(), cx),
59 cx,
60 );
61 registry.register_provider(
62 DeepSeekLanguageModelProvider::new(client.http_client(), cx),
63 cx,
64 );
65 registry.register_provider(
66 GoogleLanguageModelProvider::new(client.http_client(), cx),
67 cx,
68 );
69 registry.register_provider(
70 MistralLanguageModelProvider::new(client.http_client(), cx),
71 cx,
72 );
73 registry.register_provider(
74 BedrockLanguageModelProvider::new(client.http_client(), cx),
75 cx,
76 );
77 registry.register_provider(
78 OpenRouterLanguageModelProvider::new(client.http_client(), cx),
79 cx,
80 );
81 registry.register_provider(
82 VercelLanguageModelProvider::new(client.http_client(), cx),
83 cx,
84 );
85 registry.register_provider(XAiLanguageModelProvider::new(client.http_client(), cx), cx);
86 registry.register_provider(CopilotChatLanguageModelProvider::new(cx), cx);
87}