pub async fn extract_with_opencode( binary: &Path, model: &str, body: &str, memory_name: &str, timeout_secs: u64, ) -> Result<(ExtractionResult, f64, u64), AppError>