- Changed `pid` field in `SessionInfo` from `string` to `number`/`i32` in TypeScript and Rust. - Updated `activeSessions` map key from `string` to `number` to align with new PID type. - Adjusted process monitoring logic to correctly handle numeric PIDs. - Removed fallback UUID-based PID generation in favor of numeric fallback (-1). - Added PID cleanup logic in `is_process_running` when the process is no longer alive. - Bumped application version from 0.5.16 to 0.6.900 in `tauri.conf.json`.
36 lines
1.3 KiB
Rust
36 lines
1.3 KiB
Rust
use std::{collections::HashMap, sync::Arc};
|
|
|
|
use crate::core::utils::download::DownloadManagerState;
|
|
use rand::{distributions::Alphanumeric, Rng};
|
|
use rmcp::{service::RunningService, RoleClient};
|
|
use tokio::task::JoinHandle;
|
|
|
|
/// Server handle type for managing the proxy server lifecycle
|
|
pub type ServerHandle = JoinHandle<Result<(), Box<dyn std::error::Error + Send + Sync>>>;
|
|
use tokio::{process::Child, sync::Mutex};
|
|
use crate::core::utils::extensions::inference_llamacpp_extension::server::SessionInfo;
|
|
|
|
pub struct LLamaBackendSession {
|
|
pub child: Child,
|
|
pub info: SessionInfo,
|
|
}
|
|
|
|
#[derive(Default)]
|
|
pub struct AppState {
|
|
pub app_token: Option<String>,
|
|
pub mcp_servers: Arc<Mutex<HashMap<String, RunningService<RoleClient, ()>>>>,
|
|
pub download_manager: Arc<Mutex<DownloadManagerState>>,
|
|
pub mcp_restart_counts: Arc<Mutex<HashMap<String, u32>>>,
|
|
pub mcp_active_servers: Arc<Mutex<HashMap<String, serde_json::Value>>>,
|
|
pub mcp_successfully_connected: Arc<Mutex<HashMap<String, bool>>>,
|
|
pub server_handle: Arc<Mutex<Option<ServerHandle>>>,
|
|
pub llama_server_process: Arc<Mutex<HashMap<i32, LLamaBackendSession>>>,
|
|
}
|
|
pub fn generate_app_token() -> String {
|
|
rand::thread_rng()
|
|
.sample_iter(&Alphanumeric)
|
|
.take(32)
|
|
.map(char::from)
|
|
.collect()
|
|
}
|