"""
Novelty-Driven LLM Agent Loop

An autonomous agent that generates tasks using novelty as the termination condition.
"""

from .agent import (
    NoveltyDrivenTaskAgent,
    ExhaustFrontierAgent,
    CoverageTargetAgent,
    GeneratedTask,
    TaskGenerationResult,
    ExpertProvider,
    DomainProvider,
)

from .novelty_metrics import (
    NoveltyMetrics,
    NoveltyScore,
    NoveltyTrajectory,
    compute_batch_novelty,
    find_most_novel,
)

__all__ = [
    # Agents
    "NoveltyDrivenTaskAgent",
    "ExhaustFrontierAgent",
    "CoverageTargetAgent",
    # Data classes
    "GeneratedTask",
    "TaskGenerationResult",
    "NoveltyScore",
    "NoveltyTrajectory",
    # Providers
    "ExpertProvider",
    "DomainProvider",
    # Metrics
    "NoveltyMetrics",
    "compute_batch_novelty",
    "find_most_novel",
]
