alou 0.1.0

High-performance Rust implementation of Alou AI agent with MCP tool integration and DeepSeek API support
Documentation
use alou::cli::*;
use alou::tool_registry::ToolRegistry;
use anyhow::Result;
use clap::Parser;

/// 处理MCP命令的独立函数
async fn handle_mcp_command_independent(args: MCPArgs) -> Result<()> {
    let tool_registry = ToolRegistry::new();
    
    match args.subcommand {
        MCPSubcommand::Discover => {
            let configs = tool_registry.discover_npm_mcp_servers().await?;
            
            if configs.is_empty() {
                println!("❌ 未发现任何可用的MCP服务器");
                println!("💡 提示: 确保已安装Node.js和npm,并且网络连接正常");
            } else {
                println!("🎉 发现 {} 个可用的MCP服务器:", configs.len());
                for config in configs {
                    if let Some(command) = &config.command {
                        println!("{} - {}", "server", command);
                    }
                }
            }
        }
        MCPSubcommand::Test { server } => {
            let configs = tool_registry.discover_npm_mcp_servers().await?;
            
            let found_config = configs.iter().find(|config| {
                config.command.as_ref().map(|cmd| cmd.contains(&server)).unwrap_or(false) ||
                config.args.as_ref().map(|args| args.contains(&server)).unwrap_or(false)
            });
            
            match found_config {
                Some(config) => {
                    println!("✅ 服务器测试成功: {}", server);
                    if let Some(command) = &config.command {
                        println!("   命令: {}", command);
                    }
                    if let Some(args) = &config.args {
                        println!("   参数: {:?}", args);
                    }
                }
                None => {
                    println!("❌ 服务器测试失败: 未找到服务器 {}", server);
                    println!("💡 提示: 检查服务器名称是否正确,或尝试使用完整包名");
                }
            }
        }
        MCPSubcommand::Export { output } => {
            let configs = tool_registry.discover_npm_mcp_servers().await?;
            
            if configs.is_empty() {
                println!("❌ 没有可用的MCP服务器配置可导出");
                return Ok(());
            }

            tool_registry.export_mcp_config(configs.clone(), &output)?;
            println!("✅ 已导出 {} 个MCP服务器配置到: {}", configs.len(), output);
        }
        MCPSubcommand::Auto { output } => {
            tool_registry.auto_discover_and_export(&output).await?;
        }
    }
    
    Ok(())
}

/// 主函数
#[tokio::main]
async fn main() -> Result<()> {
    // 解析命令行参数
    let cli = Cli::parse();

    // 检查是否是MCP命令,如果是则独立处理
    if let Some(Commands::MCP(args)) = cli.subcommand {
        return handle_mcp_command_independent(args).await;
    }

    // 创建CLI应用程序
    let mut app = CliApp::new().await?;

    // 运行应用程序
    app.run(cli).await?;

    Ok(())
}