"""
IGNY8 AI Framework
Unified framework for all AI functions with consistent lifecycle, progress tracking, and logging.
"""

from igny8_core.ai.registry import register_function, get_function, list_functions
from igny8_core.ai.engine import AIEngine
from igny8_core.ai.base import BaseAIFunction
from igny8_core.ai.ai_core import AICore
from igny8_core.ai.validators import (
    validate_ids,
    validate_keywords_exist,
    validate_cluster_limits,
    validate_cluster_exists,
    validate_tasks_exist,
    validate_api_key,
    validate_model,
    validate_image_size,
)
from igny8_core.ai.constants import (
    MODEL_RATES,
    IMAGE_MODEL_RATES,
    VALID_OPENAI_IMAGE_MODELS,
    VALID_SIZES_BY_MODEL,
    DEFAULT_AI_MODEL,
    JSON_MODE_MODELS,
)
from igny8_core.ai.prompts import PromptRegistry, get_prompt
from igny8_core.ai.settings import (
    MODEL_CONFIG,
    get_model_config,
    get_model,
    get_max_tokens,
    get_temperature,
)

# Don't auto-import functions here - let apps.py handle it lazily
# This prevents circular import issues during Django startup

__all__ = [
    'AIEngine',
    'BaseAIFunction',
    'AICore',
    'register_function',
    'get_function',
    'list_functions',
    # Validators
    'validate_ids',
    'validate_keywords_exist',
    'validate_cluster_limits',
    'validate_cluster_exists',
    'validate_tasks_exist',
    'validate_api_key',
    'validate_model',
    'validate_image_size',
    # Constants
    'MODEL_RATES',
    'IMAGE_MODEL_RATES',
    'VALID_OPENAI_IMAGE_MODELS',
    'VALID_SIZES_BY_MODEL',
    'DEFAULT_AI_MODEL',
    'JSON_MODE_MODELS',
    # Prompts
    'PromptRegistry',
    'get_prompt',
    # Settings
    'MODEL_CONFIG',
    'get_model_config',
    'get_model',
    'get_max_tokens',
    'get_temperature',
]

