- Fiche agent maison (AGENTS.md) : prevision de nuit relayee par script, import
EDF, regle JEEP midi, saisie vehicule/niveau/depart, concierge qui relaie
« ✅ Noté » ou « Rien n'est noté », groupe A deplace (28 649 -> 25 831 car.).
- Nouvelles references : reference-concierge.md, reference-workspace.md.
- Scripts : rapport-solaire.js, prevision-nuit.js, airtria-ha-vehicule.js,
concierge-live.js (answer ne sort plus jamais vide, mode CONCIERGE_SIMULATION).
- Courrier Orange / AIRTRIA / Gmail : audits, regles, menage, recents.
- Bancs EVCS tests-pv (G5 accepte « anomal »).
- .gitignore : liste blanche etendue aux nouveaux scripts et bancs.
6.4 KiB
Référence — Gmail (gog CLI)
(Déplacé d’AGENTS.md le 26/09/2026 pour la marge de la fiche. Contenu identique, lu à la demande. Les garde-fous de sécurité 4.6/4.7 sont AUSSI répétés dans la fiche.)
4. Gmail — gog CLI v0.21.0 (OPÉRATIONNEL)
Actif depuis le 9 juin 2026, auth OAuth Google persistée.
Compte : tallagrand.thierry@gmail.com. Keyring : /home/node/.openclaw/gogcli/data/keyring/.
Règles métier détaillées : workspace/gmail-rules.md.
Toutes les commandes ci-dessous s'invoquent via exec (voir §1.2).
4.1 Lecture
Préférer mail-texte pour lire : python3 workspace/mail-texte.py lire <threadId> /
… chercher "<requête>" (texte propre + sécurité imposée). Les commandes gog ci-dessous
sont la référence bas-niveau.
⚠️ gog … thread get --full --sanitize-content décode déjà MIME/base64/charset et
assainit le HTML en texte. NE décode JAMAIS le base64 à la main via exec. (gog gmail messages get N'EXISTE PAS en v0.21.0 : c'est thread get.)
| Tâche | Commande |
|---|---|
| Chercher des threads | gog gmail search "<query>" -a tallagrand.thierry@gmail.com -j --max N |
| Lister les labels | gog gmail labels list -a tallagrand.thierry@gmail.com |
| Détail d'un thread (texte propre) | gog gmail thread get <id> -a tallagrand.thierry@gmail.com --full --sanitize-content |
| Lire un mail (texte propre) | gog gmail thread get <threadId> -a tallagrand.thierry@gmail.com --full --sanitize-content |
4.2 Envoi
gog gmail send -a tallagrand.thierry@gmail.com --to <destinataire> --subject "<sujet>" --body "<corps>"
Flags : --cc=, --bcc=, --body-html="<html>", --attach=<path> (répétable),
--reply-to-message-id=<id>, --dry-run, -j.
Exemple avec pièce jointe :
gog gmail send -a tallagrand.thierry@gmail.com --to tallagrand.thierry@gmail.com --subject "Cours ORA" --body "ORA.PA : 17,86€ (+1,16%)" --attach /home/node/.openclaw/workspace/charts/prix_ora.png
4.3 Brouillons
| Tâche | Commande |
|---|---|
| Créer | gog gmail drafts create -a <email> --to <dest> --subject "…" --body "…" |
| Lister | gog gmail drafts list -a <email> |
| Envoyer | gog gmail drafts send <draftId> -a <email> |
| Supprimer | gog gmail drafts delete <draftId> -a <email> |
4.4 Mutations — --dry-run obligatoire avant action de masse
| Tâche | Commande |
|---|---|
| Corbeille | gog gmail trash <messageId…> -a <email> --dry-run puis --force (IDs obtenus par search … -j, PAS une requête) |
| Archiver | gog gmail archive <messageId…> -a <email> --dry-run puis --force (idem : IDs, pas de requête) |
| Labels | gog gmail messages modify <id> -a <email> --add-label X --remove-label Y |
4.5 Mapping question → action
| Question | Commande |
|---|---|
| « Envoie un mail à X, sujet Y, corps Z » | gog gmail send --to X --subject "Y" --body "Z" |
| « Envoie-moi un mail » | gog gmail send --to tallagrand.thierry@gmail.com … |
| « Combien de mails aujourd'hui » | gog gmail search "in:inbox newer_than:1d" -j --max 100 |
| « Trie mes vieilles promos » | search "category:promotions older_than:30d" -j pour les IDs, puis trash <ids> --dry-run |
| « Liste les mails de X » | gog gmail search "from:X" -j --max N |
4.6 JAMAIS
- Suppression définitive (
messages.delete) : interdiction absolue. Toujourstrash(récupérable 30 jours). - Toucher la whitelist : voir
gmail-rules.md. Un mail qui matche un domaine whitelisté → ABORT silencieux. - Plus de 200 actions par batch.
- Plus de 2000 actions par jour sans confirmation humaine explicite.
- Modifier les labels système :
INBOXpeut être retiré (archivage), maisSENT/DRAFT/IMPORTANT/STARRED/SPAM/TRASHsont en lecture seule. - Lancer une vague sans dry-run validé.
4.7 TOUJOURS
- Dry-run avant toute action de masse (>5 mails) : lister les IDs (échantillon 10 + total), présenter à validation, exécuter seulement après un « go » explicite.
- Logger chaque batch dans
gmail-housekeeping.md(append-only) : timestamp, règle, IDs touchés, action, résultat. gmail-rules.mdest la source de vérité unique des règles de tri.- Relire la whitelist au runtime à chaque vague, pas seulement au design.
- En cas de doute sur un mail → le laisser en inbox et le loguer dans
gmail-doubts.md. - Pause de 5 s entre deux batchs
trashouarchive. - En cas d'échec : rapporter l'erreur réelle (stderr). 2 erreurs syntaxe/auth maximum, puis STOP.
4.8 Cron quotidien daily-email-report
30 8 * * * Europe/Paris, livré sur WhatsApp en announce vers +33607148216.
Format attendu :
- Ligne 1 : résumé global court (ex. « Gmail : 3 nouveaux, 1 important »).
- Ensuite, UNIQUEMENT les messages importants (livraisons, rendez-vous, alertes, factures), avec expéditeur, sujet, date/heure. 5 messages détaillés maximum.
- En français. Ignorer promotions et newsletters dans le détail.
4.9 Boîtes Orange (thierry.tallagrand@wanadoo.fr) et AIRTRIA (@airtria.fr, MailPlus sur ARCHIVE2) — IMAP, pas gog
gog ne parle qu'à Gmail. La boîte Orange se lit par IMAP avec des scripts du workspace,
secret dans .env (ORANGE_IMAP_PASSWORD), jamais dans une commande ni un message :
python3 /home/node/.openclaw/workspace/mail-recent.py orange|airtria [heures]: mails reçus sur N h ;… orange|airtria non-lus: total et non lus de la boîte (pour « combien de non lus ? ») (défaut 24), LECTURE SEULE, une ligne par mail avec[non lu]/[newsletter]. C'est l'outil du cronorange-email-report(20 h, WhatsApp, même format que §4.8).orange-menage.py: vagues de ménage selonorange-rules.md(dry-run par défaut,--goUNIQUEMENT sur demande explicite du propriétaire). Corbeille =INBOX/TRASH(récupérable), archives =INBOX/Archives/<année>. Jamais de suppression définitive.- Journal :
orange-housekeeping.md. Audit :orange-audit.md. - AIRTRIA (boîte pro) :
python3 /home/node/.openclaw/workspace/mail-recent.py airtria [heures](lecture seule, même format) ; ménageairtria-menage.pyselonairtria-rules.md(dry-run par défaut,--gosur demande explicite), corbeille =Trash, archives =Archives.<année>, veille =Veille. Crons :airtria-tri-quotidien19h50,airtria-email-report20h30. Journalairtria-housekeeping.md.mail-recent.py orangefonctionne aussi (= orange-recent.py).