Maintain a fixed-width beam of promising programs; expand one per step, prune by fitness+diversity.
"""Beam Search PromptBuilder component — the standard multi-section template (SkyDiscover default builder)."""
from __future__ import annotations
from ...components.prompt import DefaultPromptBuilder
class BeamSearchPromptBuilder(DefaultPromptBuilder):
"""SkyDiscover's default context builder: task -> metrics -> feedback -> inspirations -> current
program. Beam Search adds nothing of its own, so it renders the canonical multi-section message."""
# BeamSearchDatabase.sample() returns a plain (parent, [programs]) tuple, which the SkyDiscover
# controller wraps as {"": [...]} → DefaultContextBuilder._format_other_context_programs takes the
# DICT branch, whose preamble differs from the list branch ("...may inspire new ideas:").
inspiration_preamble = ("These programs represent diverse approaches and creative solutions "
"that may be relevant to the current task:\n")