| Crates.io | daa-ai |
| lib.rs | daa-ai |
| version | 0.2.1 |
| created_at | 2025-06-24 13:24:09.832799+00 |
| updated_at | 2025-06-25 13:51:52.812985+00 |
| description | AI integration layer for DAA system with MCP protocol |
| homepage | https://github.com/ruvnet/daa |
| repository | https://github.com/ruvnet/daa |
| max_upload_size | |
| id | 1724297 |
| size | 101,172 |
π FULL IMPLEMENTATION - This is the complete, production-ready implementation of the DAA AI module, not a placeholder.
AI integration layer for the Decentralized Autonomous Agents (DAA) system, providing Claude AI integration via QuDAG MCP (Model Context Protocol) for intelligent decision making and task automation.
DAA AI enables autonomous agents to leverage Claude's advanced AI capabilities through QuDAG's MCP integration, providing:
use daa_ai::{AISystem, AIConfig, agents::AgentType};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Configure AI system
let config = AIConfig {
claude: claude::ClaudeConfig {
api_key: "your-anthropic-api-key".to_string(),
model: "claude-3-opus-20240229".to_string(),
..Default::default()
},
..Default::default()
};
// Initialize AI system
let mut ai_system = AISystem::new(config).await?;
ai_system.initialize().await?;
// Spawn an AI agent
let agent_id = ai_system.spawn_agent(
AgentType::Researcher,
Some(vec!["web_search".to_string(), "analysis".to_string()]),
None,
).await?;
println!("Spawned agent: {}", agent_id);
Ok(())
}
use daa_ai::tasks::Task;
// Create a task
let task = Task {
id: uuid::Uuid::new_v4().to_string(),
task_type: "research".to_string(),
description: "Research recent developments in quantum computing".to_string(),
parameters: serde_json::json!({
"topic": "quantum computing",
"time_range": "last_6_months",
"sources": ["arxiv", "nature", "science"]
}),
};
// Execute task with agent
let result = ai_system.execute_task(&agent_id, task).await?;
println!("Task result: {:?}", result);
use std::collections::HashMap;
// Use a tool via MCP
let mut parameters = HashMap::new();
parameters.insert("query".to_string(), serde_json::json!("latest AI research"));
parameters.insert("limit".to_string(), serde_json::json!(10));
let tool_result = ai_system.use_tool(
&agent_id,
"web_search",
parameters,
).await?;
println!("Tool result: {:?}", tool_result);
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β AISystem β β ClaudeClient β β MCPClient β
β β β β β β
β - Agent Mgmt βββββΊβ - API Calls βββββΊβ - Tool Calls β
β - Task Coord β β - Model Config β β - Protocol Mgmt β
β - Memory Mgmt β β - Response Parseβ β - Connection β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β AgentManager β β TaskManager β β ToolRegistry β
β β β β β β
β - Agent Spawn β β - Task Queue β β - Tool Catalog β
β - Capabilities β β - Execution β β - MCP Tools β
β - Lifecycle β β - Results β β - Custom Tools β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
The crate supports several feature flags:
default: Includes MCP and Claude featuresmcp: Enables QuDAG MCP integrationclaude: Claude API support (always enabled)rules-integration: Integration with DAA Rules enginedatabase: Persistent storage for agents and tasksfull: All features enabled[dependencies]
daa-ai = { version = "0.1.0", features = ["full"] }
use daa_ai::claude::ClaudeConfig;
let claude_config = ClaudeConfig {
api_key: std::env::var("ANTHROPIC_API_KEY")?,
model: "claude-3-opus-20240229".to_string(),
endpoint: "https://api.anthropic.com".to_string(),
timeout: 60,
};
use daa_ai::MCPClientConfig;
let mcp_config = MCPClientConfig {
server_url: "http://localhost:3000".to_string(),
timeout: 30,
max_connections: 10,
retry_attempts: 3,
available_tools: vec![
"code_execution".to_string(),
"file_operations".to_string(),
"web_search".to_string(),
],
};
#[cfg(feature = "rules-integration")]
use daa_ai::rules_integration::RulesIntegration;
// AI agents can leverage rules for decision making
let rules_integration = RulesIntegration::new(rules_engine);
ai_system.add_rules_integration(rules_integration).await?;
// AI agents can interact with the economic system
let economic_task = Task {
id: uuid::Uuid::new_v4().to_string(),
task_type: "economic_analysis".to_string(),
description: "Analyze token distribution patterns".to_string(),
parameters: serde_json::json!({
"token": "rUv",
"time_period": "30_days",
"metrics": ["distribution", "velocity", "concentration"]
}),
};
MIT OR Apache-2.0