"""GEPA scaffold — one module per component.

  population.py        -> GepaCandidatePool               (unbounded pool + Pareto envelope + acceptance)
  selection_policy.py  -> ParetoCandidateSelector         (dominance pruning + frequency sampling)
  prompt_builder.py    -> GepaReflectionPromptBuilder     (the reflection template over ASI feedback)
  proposer.py          -> GepaReflectiveMutationProposer  (one reflection call -> a full replacement)
  evaluator.py         -> GepaEvaluator                   (task-supplied)
  memory.py            -> GepaMemory                      (none)
  scaffold.py          -> GepaScaffold                    (the orchestrator that composes the six)
"""
from .evaluator import GepaEvaluator
from .memory import GepaMemory
from .population import GepaCandidatePool
from .prompt_builder import GepaReflectionPromptBuilder
from .proposer import GepaReflectiveMutationProposer, ReflectiveRewrite
from .scaffold import GepaScaffold
from .selection_policy import ParetoCandidateSelector

__all__ = [
    "GepaScaffold",
    "GepaCandidatePool", "ParetoCandidateSelector", "GepaReflectionPromptBuilder",
    "GepaReflectiveMutationProposer", "ReflectiveRewrite", "GepaEvaluator", "GepaMemory",
]
