"""
Tools module for MK3.

Provides tool-use capabilities:
- Tool schemas and registry
- Tool execution engine
- ReAct (Reasoning + Acting)
- PAL (Program-Aided Language Models)
- Self-Ask decomposition
- Chain-of-Thought reasoning
"""

from .tool_schema import (
    Tool,
    ToolSchema,
    ToolRegistry,
    ParameterSpec,
    ParameterType,
    ToolType,
    create_default_registry,
    calculator_tool,
    search_tool,
    qa_tool,
    code_executor_tool
)

from .tool_executor import (
    ToolExecutor,
    ToolCall,
    ToolResult,
    ExecutionTrace,
    ExecutionStatus,
    ToolCallParser,
    ToolLearner,
    AdaptiveToolExecutor
)

from .react import (
    ReActAgent,
    ReActTrace,
    ReActStep,
    StepType,
    ThoughtGenerator,
    ActionSelector,
    SelfAskAgent,
    ChainOfThought
)

from .pal import (
    PAL,
    ProgramGenerator,
    ProgramExecutor,
    ProgramVerifier,
    ProgramResult,
    ProgrammingLanguage,
    MathPAL,
    SQLPAL
)

__all__ = [
    # Tool schema
    'Tool',
    'ToolSchema',
    'ToolRegistry',
    'ParameterSpec',
    'ParameterType',
    'ToolType',
    'create_default_registry',
    'calculator_tool',
    'search_tool',
    'qa_tool',
    'code_executor_tool',

    # Tool executor
    'ToolExecutor',
    'ToolCall',
    'ToolResult',
    'ExecutionTrace',
    'ExecutionStatus',
    'ToolCallParser',
    'ToolLearner',
    'AdaptiveToolExecutor',

    # ReAct
    'ReActAgent',
    'ReActTrace',
    'ReActStep',
    'StepType',
    'ThoughtGenerator',
    'ActionSelector',
    'SelfAskAgent',
    'ChainOfThought',

    # PAL
    'PAL',
    'ProgramGenerator',
    'ProgramExecutor',
    'ProgramVerifier',
    'ProgramResult',
    'ProgrammingLanguage',
    'MathPAL',
    'SQLPAL',
]
