# French phantom-detection configuration
# Phrases are lower-case. Matched against lowercased response text.
intent_phrases = [
"laissez-moi vérifier",
"laissez-moi examiner",
"laissez-moi inspecter",
"laissez-moi contrôler",
"laissez-moi mettre à jour",
"laissez-moi modifier",
"laissez-moi corriger",
"laissez-moi réparer",
"laissez-moi créer",
"laissez-moi ajouter",
"laissez-moi supprimer",
"laissez-moi effacer",
"laissez-moi exécuter",
"laissez-moi lire",
"laissez-moi chercher",
"laissez-moi trouver",
"je vais vérifier",
"je vais examiner",
"je vais mettre à jour",
"je vais modifier",
"je vais corriger",
"je vais réparer",
"je vais créer",
"je vais utiliser",
"je vais écrire",
"je vais exécuter",
"je vais ajouter",
"je vais supprimer",
"je vais effacer",
"je vais exécuter",
"je vais lire",
"je vais chercher",
"maintenant je vais",
"je vérifie",
"je mets à jour",
"je corrige",
"je crée",
"j'ajoute",
"je supprime",
"j'exécute",
"je lis",
"je cherche",
"allons vérifier",
"allons mettre à jour",
"allons corriger",
"allons créer",
"allons ajouter",
"allons supprimer",
"allons exécuter",
"je procède à",
"maintenant je procède à",
# Deferment stalls — "j'ai besoin de X" / "je dois X" / "il faut que je X"
# 2026-05-28: French parity with the English "i need to X" entries.
"j'ai besoin de lire",
"j'ai besoin de vérifier",
"j'ai besoin de vérifier",
"j'ai besoin de regarder",
"j'ai besoin d'examiner",
"j'ai besoin de comprendre",
"j'ai besoin de voir",
"j'ai besoin de trouver",
"j'ai besoin d'enquêter",
"j'ai besoin de chercher",
"j'ai besoin de mettre à jour",
"j'ai besoin de corriger",
"j'ai besoin de modifier",
"j'ai besoin de créer",
"j'ai besoin d'écrire",
"j'ai besoin d'ajouter",
"je dois lire",
"je dois vérifier",
"je dois regarder",
"je dois examiner",
"je dois comprendre",
"je dois voir",
"je dois trouver",
"je dois mettre à jour",
"je dois corriger",
"je dois modifier",
"je dois créer",
"je dois écrire",
"je dois ajouter",
"je dois enquêter",
"il faut que je lise",
"il faut que je vérifie",
"il faut que je regarde",
"il faut que je trouve",
"il faut que je corrige",
"je devrais lire",
"je devrais vérifier",
"je devrais regarder",
"je devrais examiner",
# Telegraphic / pronoun-dropped variants — 2026-06-01: models
# sometimes drop the leading "j'ai" in informal French narration
# the same way English models drop "I" in "Need to read…".
"besoin de lire",
"besoin de vérifier",
"besoin de regarder",
"besoin d'examiner",
"besoin de comprendre",
"besoin de voir",
"besoin de trouver",
"besoin d'enquêter",
"besoin de chercher",
"besoin de mettre à jour",
"besoin de corriger",
"besoin de modifier",
"besoin de créer",
"besoin d'écrire",
"besoin d'ajouter",
# Cleanup / destructive action verbs — 2026-06-04: mirror of the
# EN additions for the same shape (nettoyer / supprimer / enlever
# / refactoriser / réorganiser / ranger / effacer / purger).
"laissez-moi nettoyer",
"laissez-moi supprimer",
"laissez-moi enlever",
"laissez-moi retirer",
"laissez-moi refactoriser",
"laissez-moi réorganiser",
"laissez-moi ranger",
"laissez-moi effacer",
"laissez-moi purger",
"je vais nettoyer",
"je vais supprimer",
"je vais enlever",
"je vais retirer",
"je vais refactoriser",
"je vais réorganiser",
"je vais ranger",
"je vais effacer",
"je vais purger",
"allons nettoyer",
"allons supprimer",
"allons enlever",
"allons refactoriser",
"allons réorganiser",
"allons ranger",
"allons effacer",
"allons purger",
"j'ai besoin de nettoyer",
"j'ai besoin de supprimer",
"j'ai besoin d'enlever",
"j'ai besoin de retirer",
"j'ai besoin de refactoriser",
"j'ai besoin de réorganiser",
"j'ai besoin de ranger",
"j'ai besoin d'effacer",
"j'ai besoin de purger",
"je dois nettoyer",
"je dois supprimer",
"je dois enlever",
"je dois refactoriser",
"je dois réorganiser",
"je dois ranger",
"je dois effacer",
"je dois purger",
"besoin de nettoyer",
"besoin de supprimer",
"besoin d'enlever",
"besoin de retirer",
"besoin de refactoriser",
"besoin de réorganiser",
"besoin de ranger",
"besoin d'effacer",
"besoin de purger",
]
action_verbs = [
"mis à jour",
"modifié",
"corrigé",
"réparé",
"créé",
"ajouté",
"supprimé",
"effacé",
"exécuté",
"lu",
"cherché",
"trouvé",
"vérifié",
"examiné",
"inspecté",
"contrôlé",
"actualisé",
"changé",
"remplacé",
"enregistré",
"sauvegardé",
"poussé",
"déployé",
"fusionné",
"committé",
]
completion_claims = [
"fichier mis à jour",
"fichier modifié",
"fichier corrigé",
"fichier créé",
"code mis à jour",
"code corrigé",
"erreur corrigée",
"changements appliqués",
"tout mis à jour",
"tout corrigé",
"prêt",
"fait",
"terminé",
"enregistré",
"sauvegardé",
]
line_start_re = "(?im)^[\\s\\-*•>]*(?:(?:ok|okay|bon|d'accord|bien|oui)\\s*,?\\s+)?(?:maintenant\\s+)?(?:laissez-moi|je vais|allons|j'ai besoin de|je dois|il faut que je|je devrais)\\s+\\w"
# Annonce de travail en cours qui clôt le tour sans appeler d'outil — "Je
# vérifie maintenant.", "Vérification en cours…". Français n'a pas de gérondif-
# statut comme l'anglais, donc on couvre « je <verbe> … maintenant » et le
# nominal « <nom> en cours ». Exige un marqueur d'imminence (maintenant / en
# cours / … / : ).
work_announcement_re = "(?i)^[\\s\\-*•>]*(?:(?:ok|okay|bon|d['’]accord|bien|oui)[,.!:]?\\s+)?(?:(?:je\\s+|j['’])(?:lance|relance|vérifie|exécute|teste|compile|construis|installe|recherche|cherche|lis|écris|crée|génère|corrige|analyse|inspecte|déploie|télécharge|mets à jour)\\b[^.!?:\\n]{0,60}?(?:\\s+maintenant(?:[.!…,]+|\\s*$)|\\.{3}|…|:\\s*$)|(?:lancement|vérification|exécution|compilation|installation|recherche|analyse|déploiement|téléchargement|mise à jour|tests?)\\s+en\\s+cours(?:[.!…,]+|\\s*$))"
gerund_re = "(?im)(?:^|[.!?]\\s+)\\s*(?:maintenant|déjà)\\s+(?:vérifiant|mettant à jour|modifiant|corrigeant|réparant|créant|ajoutant|supprimant|exécutant|lisant|cherchant)\\b"
trailing_colon_re = "(?im)(?:^|\\n)\\s*(?:laissez-moi|je vais|maintenant je vais|allons)\\s+\\w[^:\\n]{0,80}:\\s*$"
now_imperative_re = "(?m)^[\\s\\-*]*(?:maintenant\\s+)?(?:laissez-moi|je vais|allons)\\s+\\w"
numbered_steps_re = "(?m)^\\s*\\d+\\.\\s+(?:mettre à jour|modifier|corriger|réparer|créer|ajouter|supprimer|effacer|exécuter|lire|chercher|vérifier)"
past_tense_standalone_re = "(?m)^[\\s\\-*]*(?:mis à jour|modifié|corrigé|réparé|créé|ajouté|supprimé|effacé|exécuté|vérifié|examiné|enregistré|sauvegardé)[.!]"
path_re = "(?:^|[\\s`(])(?:\\./)?[a-zA-Z_][\\w\\-]*/[\\w\\-/]*\\.\\w{1,6}(?:[\\s`),:;]|$)"
ext_re = "(?:^|[\\s`(])[\\w\\-]+\\.(?:rs|py|ts|tsx|js|jsx|go|sh|toml|yaml|yml|json|md)(?:[\\s`),:;]|$)"
backtick_code_re = "`[a-zA-Z_]\\w+`"