use serde_json::{json, Value}; use crate::sidecar::messages::IPCMessage; use crate::sidecar::sidecar; /// Export transcript to caption/text format via the Python sidecar. #[tauri::command] pub fn export_transcript( segments: Value, speakers: Value, format: String, output_path: String, title: Option, ) -> Result { let manager = sidecar(); manager.ensure_running()?; let request_id = uuid::Uuid::new_v4().to_string(); let msg = IPCMessage::new( &request_id, "export.start", json!({ "segments": segments, "speakers": speakers, "format": format, "output_path": output_path, "title": title.unwrap_or_default(), }), ); let response = manager.send_and_receive(&msg)?; if response.msg_type == "error" { return Err(format!( "Export error: {}", response .payload .get("message") .and_then(|v| v.as_str()) .unwrap_or("unknown") )); } Ok(response.payload) }