"""
Agent Status integrations for popular AI frameworks.

Available integrations:
- langchain: expose() for outside-in monitoring, AgentStatusCallbackHandler for local metrics
- crewai: AgentStatusEventListener for event tracking, expose() for outside-in monitoring
"""

from agent_status.integrations.langchain import expose, AgentStatusCallbackHandler

# Backward compatibility alias
RoraCallbackHandler = AgentStatusCallbackHandler

__all__ = ["expose", "AgentStatusCallbackHandler", "RoraCallbackHandler"]

try:
    from agent_status.integrations.crewai import AgentStatusEventListener as CrewAIEventListener
    from agent_status.integrations.crewai import expose as crewai_expose
    __all__.extend(["CrewAIEventListener", "crewai_expose"])
except ImportError:
    pass

try:
    from agent_status.integrations.autogen import AgentStatusAgentWrapper, AgentStatusConversationTracker
    from agent_status.integrations.autogen import expose as autogen_expose
    # Backward compatibility aliases
    RoraAgentWrapper = AgentStatusAgentWrapper
    RoraConversationTracker = AgentStatusConversationTracker
    __all__.extend([
        "AgentStatusAgentWrapper", "AgentStatusConversationTracker", "autogen_expose",
        "RoraAgentWrapper", "RoraConversationTracker",
    ])
except ImportError:
    pass

try:
    from agent_status.integrations.openai_wrapper import AgentStatusOpenAI, AgentStatusAsyncOpenAI
    # Backward compatibility aliases
    RoraOpenAI = AgentStatusOpenAI
    RoraAsyncOpenAI = AgentStatusAsyncOpenAI
    __all__.extend([
        "AgentStatusOpenAI", "AgentStatusAsyncOpenAI",
        "RoraOpenAI", "RoraAsyncOpenAI",
    ])
except ImportError:
    pass

try:
    from agent_status.integrations.anthropic_wrapper import AgentStatusAnthropic, AgentStatusAsyncAnthropic
    # Backward compatibility aliases
    RoraAnthropic = AgentStatusAnthropic
    RoraAsyncAnthropic = AgentStatusAsyncAnthropic
    __all__.extend([
        "AgentStatusAnthropic", "AgentStatusAsyncAnthropic",
        "RoraAnthropic", "RoraAsyncAnthropic",
    ])
except ImportError:
    pass
