Files
microdao-daarion/services/router/agent_tools_config.py

162 lines
5.1 KiB
Python

"""
Per-agent tool configuration.
All agents have FULL standard stack + specialized tools.
Each agent is a platform with own site, channels, database, users.
"""
# FULL standard stack - available to ALL agents
FULL_STANDARD_STACK = [
# Search & Knowledge (Priority 1)
"memory_search",
"graph_query",
# Web Research (Priority 2)
"web_search",
"web_extract",
"crawl4ai_scrape",
# Memory
"remember_fact",
# Content Generation
"image_generate",
"tts_speak",
# Presentations
"presentation_create",
"presentation_status",
"presentation_download",
# File artifacts
"file_tool",
]
# Specialized tools per agent (on top of standard stack)
AGENT_SPECIALIZED_TOOLS = {
# Helion - Energy platform
# Specialized: energy calculations, solar/wind analysis
"helion": ['comfy_generate_image', 'comfy_generate_video'],
# Alateya - R&D Lab OS
# Specialized: experiment tracking, hypothesis testing
"alateya": ['comfy_generate_image', 'comfy_generate_video'],
# Nutra - Health & Nutrition
# Specialized: nutrition calculations, supplement analysis
"nutra": ['comfy_generate_image', 'comfy_generate_video'],
# AgroMatrix - Agriculture
# Specialized: crop analysis, weather integration, field mapping
"agromatrix": ['comfy_generate_image', 'comfy_generate_video'],
# GreenFood - Food & Eco
# Specialized: recipe analysis, eco-scoring
"greenfood": ['comfy_generate_image', 'comfy_generate_video'],
# Druid - Knowledge Search
# Specialized: deep RAG, document comparison
"druid": ['comfy_generate_image', 'comfy_generate_video'],
# DaarWizz - DAO Coordination
# Specialized: governance tools, voting, treasury
"daarwizz": ['comfy_generate_image', 'comfy_generate_video'],
# Clan - Community
# Specialized: event management, polls, member tracking
"clan": ['comfy_generate_image', 'comfy_generate_video'],
# Eonarch - Philosophy & Evolution
# Specialized: concept mapping, timeline analysis
"eonarch": ['comfy_generate_image', 'comfy_generate_video'],
# SenpAI (Gordon Senpai) - Trading & Markets
# Specialized: real-time market data, features, signals
"senpai": ['market_data', 'comfy_generate_image', 'comfy_generate_video'],
# 1OK - Window Master Assistant
# Specialized: CRM flow, quoting, PDF docs, scheduling
"oneok": [
"crm_search_client",
"crm_upsert_client",
"crm_upsert_site",
"crm_upsert_window_unit",
"crm_create_quote",
"crm_update_quote",
"crm_create_job",
"calc_window_quote",
"docs_render_quote_pdf",
"docs_render_invoice_pdf",
"schedule_propose_slots",
"schedule_confirm_slot",
],
# Soul / Athena - Spiritual Mentor
"soul": ['comfy_generate_image', 'comfy_generate_video'],
# Yaromir - Tech Lead
"yaromir": ['comfy_generate_image', 'comfy_generate_video'],
# Sofiia - Chief AI Architect
"sofiia": ['comfy_generate_image', 'comfy_generate_video'],
# Daarion - Media Generation
"daarion": ['comfy_generate_image', 'comfy_generate_video'],
}
# CrewAI team structure per agent (future implementation)
AGENT_CREW_TEAMS = {
"helion": {
"team_name": "Energy Specialists",
"agents": ["analyst", "engineer", "market_researcher", "communicator"]
},
"alateya": {
"team_name": "Research Professors",
"agents": ["prof_erudite", "prof_analyst", "prof_creative", "prof_optimizer", "prof_communicator"]
},
"nutra": {
"team_name": "Health Advisors",
"agents": ["nutritionist", "biochemist", "fitness_coach", "communicator"]
},
"agromatrix": {
"team_name": "Agro Experts",
"agents": ["agronomist", "soil_specialist", "weather_analyst", "market_analyst"]
},
"greenfood": {
"team_name": "Food & Eco Team",
"agents": ["chef", "nutritionist", "eco_analyst", "supply_chain"]
},
"druid": {
"team_name": "Knowledge Seekers",
"agents": ["researcher", "fact_checker", "synthesizer", "archivist"]
},
"daarwizz": {
"team_name": "DAO Operations",
"agents": ["governance", "treasury", "community", "tech_ops"]
},
"clan": {
"team_name": "Community Spirits",
"agents": ["welcomer", "mediator", "event_organizer", "historian"]
},
"eonarch": {
"team_name": "Consciousness Guides",
"agents": ["philosopher", "futurist", "integrator", "storyteller"]
},
}
def get_agent_tools(agent_id: str) -> list:
"""Get all tools for an agent: standard stack + specialized."""
specialized = AGENT_SPECIALIZED_TOOLS.get(agent_id, [])
return FULL_STANDARD_STACK + specialized
def is_tool_allowed(agent_id: str, tool_name: str) -> bool:
"""Check if a tool is allowed for an agent."""
allowed = get_agent_tools(agent_id)
return tool_name in allowed
def get_agent_crew(agent_id: str) -> dict:
"""Get CrewAI team configuration for an agent."""
return AGENT_CREW_TEAMS.get(agent_id, {"team_name": "Default", "agents": []})