Dom
4f61741420
feat: journée 17 avril — tests E2E validés, dashboard fleet+audit, VWB bridge, cleaner C2
...
security-audit / Bandit (scan statique) (push) Successful in 14s
security-audit / pip-audit (CVE dépendances) (push) Successful in 10s
security-audit / Scan secrets (grep) (push) Successful in 8s
tests / Lint (ruff + black) (push) Successful in 13s
tests / Tests unitaires (sans GPU) (push) Failing after 14s
tests / Tests sécurité (critique) (push) Has been skipped
Pipeline E2E complet validé :
Capture VM → streaming → serveur → cleaner → replay → audit trail
Mode apprentissage supervisé fonctionne (Léa échoue → humain → reprise)
Dashboard :
- Cleanup 14→10 onglets (RCE supprimée)
- Fleet : enregistrer/révoquer agents, tokens, ZIP pré-configuré téléchargeable
- Audit trail MVP (/audit) : filtres, tableau, export CSV, conformité AI Act/RGPD
- Formulaire Fleet simplifié (nom + email, machine_id auto)
VWB bridge Léa→VWB :
- Compound décomposés en N steps (saisie + raccourci visibles)
- Layout serpentin 3 colonnes (plus colonne verticale)
- Badge OS 🪟 /🐧 , filtre OS retiré (admin Linux voit Windows)
- Fix import SQLite readonly
Cleaner intelligent :
- Descriptions lisibles (UIA/C2) + détection doublons
- Logique C2 : UIElement identifié = jamais parasite
- Patterns parasites resserrés
- Message Léa : "Je n'y arrive pas, montrez-moi comment faire"
Config agent (INC-1 à INC-7) :
- SERVER_URL + SERVER_BASE unifiés
- RPA_OLLAMA_HOST séparé
- allow_redirects=False sur POST
- Middleware réécriture URL serveur
CI Gitea : fix token + Flask-SocketIO + ruff propre
Fleet endpoints : /agents/enroll|uninstall|fleet + agent_registry SQLite
Backup : script quotidien workflows.db + audit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-17 17:46:40 +02:00
Dom
33c198b827
feat: premier replay E2E + mode apprentissage supervisé
...
Premier replay fonctionnel de bout en bout (Bloc-notes, Chrome).
Corrections critiques :
- Fix double-lancement agent (Lea.bat start /b + verrou PID)
- Sérialisation replay (threading.Lock dans poll_and_execute)
- Garde UIA bbox >50% écran (rejet conteneurs "Bureau")
- Filtre fenêtres bruit système (systray overflow)
- Auto-nettoyage replays bloqués (paused_need_help)
Cascade visuelle complète dans session_cleaner :
- UIA local (10ms) → template matching (100ms) → serveur docTR/VLM
- Nettoyage bureau pré-replay (clic "Afficher le bureau")
- Crops 80x80 + vlm_description pour chaque clic
Grounding contraint à la fenêtre active :
- Capture croppée à la fenêtre au lieu de l'écran entier
- Conversion coordonnées fenêtre → écran
- Élimine les faux positifs taskbar/systray
Mode apprentissage supervisé (SUPERVISE → capture humaine) :
- Léa passe en mode capture quand elle est perdue
- Capture mini-workflow humain (clics + frappes + combos)
- Fin par Ctrl+Shift+L ou timeout inactivité 10s
- Correction stockée dans target_memory.db via serveur
Deploy Windows complet (grounding.py, policy.py, uia_helper.py).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 07:42:50 +02:00
Dom
42d49dd8bd
feat: Léa personnalité — langage métier multi-domaines
...
Aspect 4/4 Léa : Léa parle le langage du métier, pas du robot.
DomainContext enrichi avec 5 domaines :
- tim_codage : CIM-10, CCAM, GHM, DP/DAS (enrichi)
- comptabilite : factures HT/TVA/TTC, OCR, lettrage, PCG
- rh_paie : bulletins, DSN, brut/net, congés, IJSS
- stocks_logistique : BC/BL/BR, SKU, inventaires, picking
- generic : fallback
Nouvelle API DomainContext :
- summarize_action(action, params) — click "DP" → "saisir le diagnostic principal"
- pose_clarification_question(context) — question pertinente quand Léa bloque
- describe_workflow_outcome(...) — rapport final en langage métier
Exemples :
TIM : "J'ai codé 14 dossiers sur 15. 1 en attente — codes CIM-10 ambigus."
Compta : "Je ne trouve pas le champ montant de TVA. C'est bien la facture F2026-0145 ?"
Intégration ui/messages.py :
- Import lazy (pas de dépendance circulaire)
- formatter_cible_non_trouvee utilise les templates de clarification métier
- Rétro-compat : tous les anciens appels sans domain_id fonctionnent
47 nouveaux tests, 0 régression.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 09:01:52 +02:00
Dom
a6eb4c168f
feat: Léa UX — messages français naturels + feedback temps réel
...
Aspect 1/4 de Léa (agent Windows) : rendre Léa humaine.
Nouveaux modules :
- agent_v1/ui/messages.py : 11 formatters (cible non trouvée, mauvaise fenêtre,
écran inchangé, connexion, workflow, retry, ralentissement, erreur générique)
- agent_v1/ui/activity_panel.py : panneau tkinter lazy avec état courant,
action, progression X/Y, temps écoulé, 7 états (OBSERVE/CHERCHE/AGIT/VERIFIE...)
Hiérarchie de notifications :
- INFO (4s, vert) — début workflow, étape en cours
- ATTENTION (7s, orange) — retry, ralentissement
- BLOCAGE (15s, rouge, persistent, bypass rate-limit) — cible introuvable, mauvaise fenêtre
Transformations de messages :
AVANT : "target_not_found: dans *bonjour, – Bloc-notes"
APRÈS : "Léa a besoin d'aide"
"Je ne trouve pas « bonjour » dans Bloc-notes.
Peux-tu cliquer dessus toi-même ? Je reprends ensuite."
Robustesse :
- Détection fenêtre Léa via regex word-boundaries (évite cléa.txt, leapfrog.exe)
- Centralisée dans messages.est_fenetre_lea() — source unique de vérité
- Noop stub universel via __getattr__ (plus besoin de lister les méthodes)
- Thread-safe (RLock + snapshots immutables)
- Fallback silencieux si tkinter/plyer absent
101 nouveaux tests, aucune régression.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 08:42:01 +02:00