"""
llama2a - A modular multi-agent framework for building AI development workflows.

Quick Start:
    from llama2a import AgentChain
    
    result = AgentChain() \\
        .requirements("Build a snake game with Python") \\
        .model("deepseek-coder-v2:16b") \\
        .output("./my_game") \\
        .run()

With custom models per agent:
    result = AgentChain() \\
        .requirements("Build a REST API") \\
        .model("llama3:8b") \\
        .configure("planner", model="llama3:70b") \\
        .configure("coder", model="codellama:34b") \\
        .output("./my_api") \\
        .run()

Custom agents:
    from llama2a import agent, AgentContext, AgentResult
    
    @agent(name="tester", role="QA Tester")
    class TesterAgent(Agent):
        def execute(self, context: AgentContext) -> AgentResult:
            # Your testing logic
            return AgentResult.ok("Tests passed")
    
    result = AgentChain() \\
        .requirements("Build and test an app") \\
        .register(TesterAgent) \\
        .run()

"""

__version__ = "0.1.0"
__author__ = "llama2a Contributors"

# Core classes
from .base import Agent, Orchestrator, AgentContext, AgentResult, AgentStatus
from .chain import AgentChain
from .config import ChainConfig, AgentConfig

# Decorators
from .registry import agent, orchestrator, get_registry, get_agent, list_agents

# Events
from .events import Event, EventEmitter, EventData, console_progress_handler

# Task management
from .task import Task, Plan, TaskStatus, TaskPriority, TaskManager

# LLM
from .llm import LLMClient, LLMResponse, OllamaClient

# Default agents
from .agents import Contractor, Planner, Coder


__all__ = [
    # Version
    "__version__",
    
    # Main API
    "AgentChain",
    
    # Base classes
    "Agent",
    "Orchestrator",
    "AgentContext",
    "AgentResult",
    "AgentStatus",
    
    # Config
    "ChainConfig",
    "AgentConfig",
    
    # Decorators
    "agent",
    "orchestrator",
    "get_registry",
    "get_agent",
    "list_agents",
    
    # Events
    "Event",
    "EventEmitter",
    "EventData",
    "console_progress_handler",
    
    # Tasks
    "Task",
    "Plan",
    "TaskStatus",
    "TaskPriority",
    "TaskManager",
    
    # LLM
    "LLMClient",
    "LLMResponse",
    "OllamaClient",
    
    # Default agents
    "Contractor",
    "Planner",
    "Coder",
]
