@dataclass
class EvolutionConfig:
task_sys_msg: Optional[str] = None
patch_types: List[str] = field(default_factory=lambda: ["diff"])
patch_type_probs: List[float] = field(default_factory=lambda: [1.0])
num_generations: int = 10
max_parallel_jobs: int = 2
max_patch_resamples: int = 3
max_patch_attempts: int = 5
job_type: str = "local"
language: str = "python"
llm_models: List[str] = field(default_factory=lambda: ["azure-gpt-4.1-mini"])
llm_dynamic_selection: Optional[Union[str, BanditBase]] = None
llm_dynamic_selection_kwargs: dict = field(default_factory=lambda: {})
llm_kwargs: dict = field(default_factory=lambda: {})
meta_rec_interval: Optional[int] = None
meta_llm_models: Optional[List[str]] = None
meta_llm_kwargs: dict = field(default_factory=lambda: {})
meta_max_recommendations: int = 5
embedding_model: Optional[str] = None
init_program_path: Optional[str] = "initial.py"
results_dir: Optional[str] = None
max_novelty_attempts: int = 3
code_embed_sim_threshold: float = 1.0
novelty_llm_models: Optional[List[str]] = None
novelty_llm_kwargs: dict = field(default_factory=lambda: {})
use_text_feedback: bool = False
# Web search
web_search_enabled: bool = False
web_search_prob: float = 0.1
# Git tracking and strategy metadata
git_commit_sha: Optional[str] = None
git_dirty: bool = False
git_branch: Optional[str] = None
strategy_name: str = "default"