feat(lsp): implement LSP client and server management

- Added LspClient for handling communication with LSP servers, including methods for initialization, notifications, and requests.
- Introduced LspManager to manage multiple LSP server connections, allowing for connection, disconnection, and retrieval of server capabilities.
- Created tools for connecting to LSP servers, retrieving diagnostics, hover information, code completion, definitions, and references.
- Enhanced UI rendering to display token usage and settings in the overlay.
- Updated status bar to show current token usage and selected provider/model.
This commit is contained in:
asepharyana
2026-07-12 13:40:58 +07:00
parent 8ad042139e
commit abc7a58e31
19 changed files with 1317 additions and 60 deletions
+5 -1
View File
@@ -12,6 +12,7 @@ pub struct AppConfig {
pub model_roles: HashMap<String, ModelRole>,
pub default_provider: String,
pub default_model: String,
pub default_context_window: u32,
}
/// Connection details for a single LLM provider (base URL, API key source).
@@ -30,6 +31,7 @@ pub struct ModelRole {
pub provider: String,
pub model: String,
pub max_tokens: Option<u32>,
pub context_window: Option<u32>,
pub temperature: Option<f32>,
}
@@ -52,7 +54,8 @@ impl Default for AppConfig {
model_roles.insert("default".to_string(), ModelRole {
provider: "zen".to_string(),
model: "deepseek-v4-flash-free".to_string(),
max_tokens: Some(8192),
max_tokens: None,
context_window: None,
temperature: Some(0.7),
});
AppConfig {
@@ -60,6 +63,7 @@ impl Default for AppConfig {
model_roles,
default_provider: "zen".to_string(),
default_model: "deepseek-v4-flash-free".to_string(),
default_context_window: 256_000,
}
}
}
+4 -4
View File
@@ -10,8 +10,8 @@ pub struct Conversation {
pub system_prompt: String,
pub session_id: String,
pub model: String,
pub max_tokens: u32,
pub temperature: f32,
pub max_tokens: Option<u32>,
pub temperature: Option<f32>,
}
impl Conversation {
@@ -23,8 +23,8 @@ impl Conversation {
system_prompt,
session_id,
model: "anthropic/claude-opus-4-8".to_string(),
max_tokens: 8192,
temperature: 0.7,
max_tokens: None,
temperature: None,
}
}
+4 -4
View File
@@ -31,8 +31,8 @@ pub struct Settings {
pub provider: String,
pub model: String,
pub api_keys: std::collections::HashMap<String, String>,
pub max_tokens: u32,
pub temperature: f32,
pub max_tokens: Option<u32>,
pub temperature: Option<f32>,
pub review_enabled: bool,
pub review_max_lessons_per_run: usize,
pub adaptive_review_max_skip: u32,
@@ -49,8 +49,8 @@ impl Default for Settings {
provider: "zen".to_string(),
model: "deepseek-v4-flash-free".to_string(),
api_keys: std::collections::HashMap::new(),
max_tokens: 8192,
temperature: 0.7,
max_tokens: None,
temperature: None,
review_enabled: true,
review_max_lessons_per_run: 5,
adaptive_review_max_skip: 3,