# ============================================================
#  generateur.py — Génération et vérification de code
#  rolax1212 v1.0 by Roland
# ============================================================

import re
from pathlib import Path

# ─────────────────────────────────────────────────────────────
# Imports – on accepte à la fois les imports relatifs (si le
# fichier est dans le package) et les imports absolus (si le
# fichier a été dupliqué à la racine).  Cela évite l’ambiguïté
# d’import et garantit que le bon module est chargé.
# ─────────────────────────────────────────────────────────────
try:
    from .ui import (
        console, ok, info, warn, err, separateur, confirmer,
        projet_termine, projet_termine_avertissement,
    )
except (ImportError, ValueError):
    # Fallback when the file is executed from the project root
    from ui import (
        console, ok, info, warn, err, separateur, confirmer,
        projet_termine, projet_termine_avertissement,
    )

try:
    from .llm import demander, demander_conversation
except (ImportError, ValueError):
    from llm import demander, demander_conversation

try:
    from .projet import (
        extraire_blocs, sauvegarder, executer, nom_par_defaut,
        construire_contexte, extraire_taches, marquer_tache_faite,
    )
except (ImportError, ValueError):
    from projet import (
        extraire_blocs, sauvegarder, executer, nom_par_defaut,
        construire_contexte, extraire_taches, marquer_tache_faite,
    )

try:
    from .frameworks import prompt_framework
except (ImportError, ValueError):
    try:
        from frameworks import prompt_framework
    except Exception:
        prompt_framework = lambda _: ""  # safe fallback

# ─────────────────────────────────────────────────────────────

MODELES_FAIBLES = ["1.5b", "0.5b", "1b"]

PROMPT_SYSTEME = """Tu es rolax1212, un agent de développement expert.
Tu travailles sur ce projet :

{contexte}

RÈGLES ABSOLUES :
1. Pour CHAQUE fichier généré, écris OBLIGATOIREMENT sur sa propre ligne :
   FICHIER: nom_exact.ext
   Puis immédiatement le bloc de code :