"""AgentKit Core - 基础组件"""

from agentkit.core.base import BaseAgent
from agentkit.core.compressor import CompressionStrategy, ContextCompressor, create_compressor
from agentkit.core.config_driven import AgentConfig, ConfigDrivenAgent
from agentkit.core.exceptions import (
    AgentAlreadyRegisteredError,
    AgentFrameworkError,
    AgentNotFoundError,
    AgentNotReadyError,
    AgentUnavailableError,
    ConfigValidationError,
    EvolutionError,
    HandoffError,
    LLMError,
    LLMProviderError,
    ModelNotFoundError,
    NoAvailableAgentError,
    SchemaValidationError,
    TaskCancelledError,
    TaskDispatchError,
    TaskExecutionError,
    TaskNotFoundError,
    TaskTimeoutError,
    ToolExecutionError,
    ToolNotFoundError,
)
from agentkit.core.protocol import (
    AgentCapability,
    AgentStatus,
    CancellationToken,
    EvolutionEvent,
    HandoffMessage,
    TaskMessage,
    TaskProgress,
    TaskResult,
    TaskStatus,
)

# Optional: HeadroomCompressor — only available when headroom-ai is installed
try:
    from agentkit.core.headroom_compressor import HeadroomCompressor
except ImportError:
    HeadroomCompressor = None  # type: ignore[misc,assignment]

__all__ = [
    "BaseAgent",
    "AgentConfig",
    "ConfigDrivenAgent",
    "CompressionStrategy",
    "ContextCompressor",
    "create_compressor",
    "HeadroomCompressor",
    "AgentCapability",
    "AgentStatus",
    "CancellationToken",
    "AgentFrameworkError",
    "AgentNotFoundError",
    "AgentAlreadyRegisteredError",
    "AgentUnavailableError",
    "AgentNotReadyError",
    "TaskNotFoundError",
    "TaskDispatchError",
    "TaskExecutionError",
    "TaskTimeoutError",
    "TaskCancelledError",
    "NoAvailableAgentError",
    "ConfigValidationError",
    "SchemaValidationError",
    "HandoffError",
    "EvolutionError",
    "ToolNotFoundError",
    "ToolExecutionError",
    "LLMError",
    "LLMProviderError",
    "ModelNotFoundError",
    "HandoffMessage",
    "EvolutionEvent",
    "TaskMessage",
    "TaskProgress",
    "TaskResult",
    "TaskStatus",
]
