Refonte majeure du système Agent Chat et ajout de nombreux modules : - Chat unifié : suppression du dual Workflows/Agent Libre, tout passe par /api/chat avec résolution en 3 niveaux (workflow → geste → "montre-moi") - GestureCatalog : 38 raccourcis clavier universels Windows avec matching sémantique, substitution automatique dans les replays, et endpoint /api/gestures - Mode Copilot : exécution pas-à-pas des workflows avec validation humaine via WebSocket (approve/skip/abort) avant chaque action - Léa UI (agent_v0/lea_ui/) : interface PyQt5 pour Windows avec overlay transparent pour feedback visuel pendant le replay - Data Extraction (core/extraction/) : moteur d'extraction visuelle de données (OCR + VLM → SQLite), avec schémas YAML et export CSV/Excel - ReplayVerifier (agent_v0/server_v1/) : vérification post-action par comparaison de screenshots, avec logique de retry (max 3) - IntentParser durci : meilleur fallback regex, type GREETING, patterns améliorés - Dashboard : nouvelles pages gestures, streaming, extractions - Tests : 63 tests GestureCatalog, 47 tests extraction, corrections tests existants - Dépréciation : /api/agent/plan et /api/agent/execute retournent HTTP 410, suppression du code hardcodé _plan_to_replay_actions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
24 lines
822 B
Python
24 lines
822 B
Python
"""Conftest pour les tests d'intégration."""
|
|
import importlib
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = str(Path(__file__).resolve().parents[2])
|
|
|
|
# Forcer ROOT en tête de sys.path pour que le agent_v0 local (rpa_vision_v3)
|
|
# soit trouvé AVANT le agent_v0 standalone de ~/ai/
|
|
if ROOT in sys.path:
|
|
sys.path.remove(ROOT)
|
|
sys.path.insert(0, ROOT)
|
|
|
|
# Si agent_v0 est déjà chargé depuis le mauvais chemin, le remplacer
|
|
_agent_mod = sys.modules.get("agent_v0")
|
|
if _agent_mod and not getattr(_agent_mod, "__file__", "").startswith(ROOT):
|
|
# Supprimer les entrées liées à l'ancien agent_v0
|
|
to_remove = [k for k in sys.modules if k == "agent_v0" or k.startswith("agent_v0.")]
|
|
for k in to_remove:
|
|
del sys.modules[k]
|
|
|
|
# Pré-importer le bon agent_v0.server_v1
|
|
import agent_v0.server_v1 # noqa: F401
|