2. Librairies Partagées (echo_libs)

Le socle technique d'ECHO repose sur un triptyque de librairies situées dans 14-owui-libs/. Ces modules assurent la cohérence, la résilience et l'interopérabilité de tout l'écosystème.

Architecture Strictement Factorisée

Toutes les couches (Filtres, Pipes, Outils) importent ces libs. Toute modification ici impacte l'intégralité du framework. L'utilisation de httpx avec support HTTP/2 est le standard obligatoire.

echo_constants.py : Constantes & Topologie

Définit l'environnement d'exécution et les paramètres globaux du protocole Gemini.

Topologie Système

ConstanteValeur / Rôle
ECHO_USERS_ROOT/app/backend/data/users (Stockage des BDD et Vaults)
ECHO_UPLOADS_DIR/app/backend/data/uploads (Transit des fichiers OWUI)
ECHO_USER_AGENTECHO-Framework/5 (Identité réseau pour l'API Google)

Détection MIME Intelligente

La fonction get_gemini_mime(file_path) est le crible d'entrée pour Gemini. Elle utilise une cascade de 6 niveaux :

  1. Mapping ECHO : Extensions prioritaires (code source, configs).
  2. Mimetypes Std : Bibliothèque standard Python.
  3. Magic Numbers : Signature binaire via filetype.
  4. Whitelist Gemini : Filtrage natif Google (PDF, Images, Vidéos, Audio).
  5. Null-Byte Sniffing : Épreuve textuelle pour identifier le texte brut sans extension.
  6. Fallback : Rejet sécurisé en application/octet-stream.

echo_auth.py : Validation d'Identité

Gère le workflow d'enrôlement des clés API des utilisateurs.

AuthService

echo_utils.py : Le Cœur Réactif

Contient les classes maîtresses de gestion d'état, de communication et d'interface.

EchoGeminiClient : Moteur de Résilience & HTTP/2

Ce moteur factorisé est le point de passage unique pour toutes les requêtes sortantes vers l'API Google AI Studio. Il implémente une stratégie de "Cognitive Cascade" et de "Failover" automatique.

Protocole HTTP/2 Strict

ECHO exige un client httpx.AsyncClient configuré en HTTP/2 strict. Ce choix technique est vital pour le streaming Gemini (SSE), permettant de maintenir des connexions multiplexées sans subir les limitations de performance du HTTP/1.1 (Head-of-line blocking). Le singleton _SHARED_ASYNC_CLIENT gère dynamiquement l'expiration des sessions pour prévenir les fuites de mémoire.

Mécanique de Failover (Switching Seuil)

L'algorithme de tentative ne se contente pas de répéter l'appel. Il surveille les erreurs 429 (Rate Limit) et 503 (Service Unavailable) :

EchoStateManager : L'Architecture Bit-Perfect

Le state_manager est l'organe de mémoire persistante d'ECHO. Il assure que le modèle ne perd jamais le fil, même lors de restructurations complexes du chat.

Le Système des Ombres (Shadowing)

ECHO ne se fie jamais au texte renvoyé par Open WebUI pour reconstruire le passé. Il utilise la table message_shadows pour stocker le "Moulage Original" (parts JSON) de chaque message associé à son updated_at physique. Si un message est édité, l'empreinte temporelle change, invalidant l'ombre et forçant une suture fraîche.

Algorithmes de Hachage & Suture

La continuité cognitive repose sur un double hachage SHA-256 :

Logique de scellement (Python)
# Exemple de calcul de l'invariant bit-perfect
norm_c = json.dumps(content, option=json.OPT_SORT_KEYS)
norm_t = json.dumps(tool_io, option=json.OPT_SORT_KEYS) if tool_io else ""
invariant = hashlib.sha256(f"{role}|{norm_c}|{norm_t}".encode()).hexdigest()

EchoEvents : Communication Inter-Couches

Cette classe agit comme un bus d'événements asynchrone facilitant la remontée d'informations depuis les tréfonds du backend Python vers l'interface utilisateur OWUI.

MéthodeÉvénement OWUIImpact UI
emit("status", ...) status Affiche une étape de réflexion avec une icône de chargement ou de succès dans le chat.
toast(content, level) notification Affiche une bannière temporaire (Toasts) en haut à droite (info, success, warning, error).
call("input", ...) input Interrompt l'exécution pour demander une saisie à l'utilisateur via une modale.
call("execute", ...) execute Injecte et exécute du JavaScript arbitraire dans le DOM du navigateur.

EchoUI : Le Moteur HUD (Heads-Up Display)

Le module monitor_ECHO est le cœur visuel d'ECHO. Il déploie un micro-système d'exploitation graphique injecté dynamiquement pour la supervision des artefacts.

Architecture du Moteur JS Injecté

Le JavaScript généré par _generate_universal_hud_js crée un objet window.echoEngine_xxx isolé. Il gère son propre état (position, zoom, timer) dans le LocalStorage, permettant au HUD de survivre aux rafraîchissements de page.

Capacités du HUD

Protocoles Sémantiques & Suture

ECHO utilise des fonctions utilitaires pour normaliser les échanges cognitifs entre Gemini et l'utilisateur.

Traitement de la Pensée (Thought Splitting)

La fonction split_thought_process(text) détecte les balises <think> ou <thought>. Elle sépare le raisonnement pur du texte final pour permettre l'archivage dans thought_archive et l'affichage différencié.

Standardisation des Sorties d'Outils

La fonction wrap_tool_output() est le contrat de sortie obligatoire. Elle garantit que les métadonnées (statut, nouveaux fichiers, multiparts) sont correctement encapsulées pour être interprétées par le Filtre et le Pipe lors de la phase de Suture.