"""Thryve – a modular framework for multi-LLM agents, tools, and workflows."""

__version__ = "0.1.1"
__author__ = "SyJarvis"
__url__ = "https://github.com/SyJarvis/thryve"

# Top-level public API
from thryve.config import (
    AgentConfig,
    ContextConfig,
    EmbeddingConfig,
    LLMConfig,
    MemoryConfig,
    ThryveConfig,
)
from thryve.core.agent import Agent, AgentLoop, LoopConfig, MultiAgentOrchestrator, StopReason, TurnResult
from thryve.core.backends.adapter import BackendAdapter
from thryve.core.context import (
    ChatResponse,
    ContextManager,
    Message,
    ToolCall,
    ToolResult,
)
from thryve.core.graph import Graph, GraphExecutor, FunctionNode, LLMNode, AgentNode, ToolNode
from thryve.core.memory import MemoryChunk, MemoryManager
from thryve.core.tools import Tool, ToolParameter, ToolRegistry, ToolExecutor, tool
from thryve.thryve import Thryve

__all__ = [
    # Entry point
    "Thryve",
    # Config
    "ThryveConfig",
    "LLMConfig",
    "EmbeddingConfig",
    "MemoryConfig",
    "AgentConfig",
    "ContextConfig",
    # Models
    "Message",
    "ChatResponse",
    "ToolCall",
    "ToolResult",
    "MemoryChunk",
    # Backends
    "BackendAdapter",
    # Tools
    "Tool",
    "ToolParameter",
    "ToolRegistry",
    "ToolExecutor",
    "tool",
    # Agent
    "Agent",
    "AgentLoop",
    "LoopConfig",
    "StopReason",
    "TurnResult",
    "MultiAgentOrchestrator",
    # Context
    "ContextManager",
    # Memory
    "MemoryManager",
    # Graph
    "Graph",
    "GraphExecutor",
    "FunctionNode",
    "LLMNode",
    "AgentNode",
    "ToolNode",
]
