from importlib import import_module

_subject_map = {
    1: "prompts.physics_prompts",
    2: "prompts.algebra_prompts",
    3: "prompts.geometry_prompts",
    4: "prompts.chemistry_prompts",
    5: "prompts.biology_prompts",
    6: "prompts.history_prompts",
    8: "prompts.social_studies_prompts",
    10: "prompts.geography_prompts",
    11: "prompts.english_prompts",
    12: "prompts.informatics_prompts",
    13: "prompts.statistics_prompts",
}

def get_prompts(subject_id: int):
    """Return (explainer_prompt, solver_prompt_or_None, plain_text_prompt_or_None)"""
    module_name = _subject_map.get(subject_id)
    if not module_name:
        return ("", None)
    mod = import_module(module_name)
    explainer = None
    solver = None
    plain_text = None
    # Try standard names
    for attr in dir(mod):
        # Pick explainer prompt: any *_system_prompt that is NOT a reasoner prompt
        # This avoids grabbing e.g. informatics_reasoner_system_prompt for explainer
        if attr.endswith("_system_prompt") and ("reasoner" not in attr):
            explainer = getattr(mod, attr)
        # Pick solver prompt: any reasoner_system_prompt
        if attr.endswith("reasoner_system_prompt") or ("reasoner_system_prompt" in attr):
            solver = getattr(mod, attr)
        if attr.endswith("_tg_prompt"):
            plain_text = getattr(mod, attr)
    return (explainer or "", solver, plain_text or explainer or "")