use crate::state::AppState; use tauri::{Manager, WebviewUrl, WebviewWindowBuilder}; use tauri_plugin_positioner::{Position, WindowExt}; use tauri_plugin_store::StoreExt; use tauri_plugin_window_state::{StateFlags, WindowExt as StateWindowExt}; mod cartesia; mod conversation; mod devices; mod letta; mod secrets; mod state; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { let mut builder = tauri::Builder::default() .plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_store::Builder::new().build()) .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_window_state::Builder::new().build()) .plugin(tauri_plugin_positioner::init()); #[cfg(desktop)] { builder = builder.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { use tauri::Manager; let _ = app .get_webview_window("main") .expect("no main window") .set_focus(); })); } builder .setup(|app| { let store = app.store("config.json")?; let app_state = AppState::new(store).expect("failed to initialize application state"); app.manage(app_state); let mut win_builder = WebviewWindowBuilder::new(app, "main", WebviewUrl::default()).title("miwiwi"); #[cfg(desktop)] { win_builder = win_builder .inner_size(600.0, 800.0) .decorations(false) .always_on_top(true) .visible(false) .transparent(true) .shadow(false) .maximizable(false); } let window = win_builder.build().expect("failed to build window"); window .move_window(Position::BottomRight) .expect("could not move window"); window .restore_state(StateFlags::all()) .expect("could not restore window state"); Ok(()) }) .invoke_handler(tauri::generate_handler![ cartesia::commands::start_stt, cartesia::commands::stop_stt, letta::commands::list_agents, letta::commands::get_letta_base_url, letta::commands::set_letta_base_url, letta::commands::get_letta_agent_id, letta::commands::set_letta_agent_id, letta::commands::start_llm_completion, secrets::commands::has_secret, secrets::commands::set_secret, secrets::commands::delete_secret, ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }