Maintain a fixed-width beam of promising programs; expand one per step, prune by fitness+diversity.
"""Beam Search scaffold — one module per component.
population.py -> BeamPopulation (+ _code_distance)
selection_policy.py -> BeamSelectionPolicy
prompt_builder.py -> BeamSearchPromptBuilder
proposer.py -> BeamSearchProposer
evaluator.py -> BeamSearchEvaluator (task-supplied)
memory.py -> BeamSearchMemory (none)
scaffold.py -> BeamSearchScaffold (the orchestrator that composes the six)
"""
from .evaluator import BeamSearchEvaluator
from .memory import BeamSearchMemory
from .population import BeamPopulation
from .prompt_builder import BeamSearchPromptBuilder
from .proposer import BeamSearchProposer
from .scaffold import BeamSearchScaffold
from .selection_policy import BeamSelectionPolicy
__all__ = [
"BeamSearchScaffold",
"BeamPopulation", "BeamSelectionPolicy", "BeamSearchPromptBuilder", "BeamSearchProposer",
"BeamSearchEvaluator", "BeamSearchMemory",
]