À propos du projet

TinyChannels est une bibliothèque Rust qui fournit des primitives de canaux et de messagerie pour le framework OpenHuman. Elle propose un contrat de canal portable, un schéma de configuration, des métadonnées de connexion, des assistants de routage et une couche de délégation de backend. Cette conception relie les surfaces de canaux aux harnais OpenHuman sans coupler ce crate au crate principal de l'application OpenHuman. Les effets de bord à l'exécution sont enfichables via le trait `ChannelBackend`. OpenHuman possède l'implémentation réelle du backend pour REST/JWT/le stockage de configuration, tandis que ce crate valide les métadonnées de canal et délègue les opérations via ce trait. La bibliothèque inclut des implémentations de fournisseurs optionnelles qui doivent être explicitement activées via les fonctionnalités Cargo : - **Email (envoi uniquement)** : envoi SMTP via `lettre`. - **Email** : SMTP + IMAP via `lettre`, `async-imap` et `mail-parser`. - **Lark/Feishu** : récepteur de webhook + décodeur Protobuf via `axum` et `prost`. - **WhatsApp Web** : prise en charge multi-appareils via `whatsapp-rust`. D'autres fournisseurs, notamment Telegram, Discord, Slack, Signal, iMessage, IRC et Yuanbao/DingTalk, sont inclus dans la compilation par défaut. Le crate n'est pas publié sur crates.io ; il est consommé via une dépendance de chemin vendored ou une dépendance Git directe. Le dépôt est organisé en plusieurs crates et modules : - `tinychannels-bus` : le contrat de base, incluant les traits `Channel`, `ChannelMessage`, `SendMessage`, la configuration, les capacités et les clés de conversation. - `tinychannels-runtime` : supervision des listeners, boucle de dispatch bornée, sessions limitées à la déconnexion, contrôles de santé et un `CliChannel` de console. - `tinychannels-module` : le module TinyBus chargeable. - `src/delivery/` : file d'attente sortante durable et pilote de réponse en streaming pour les bulles de brouillon, de réflexion et de remplissage. - `src/remote/` : implémente les commandes status, sessions, new et help pour les fournisseurs disposant de la capacité de contrôle à distance. - `src/approvals/` : envoie des invites d'approbation dans le chat pour les fournisseurs disposant de la capacité d'approbation par chat. - `src/relay/` : boucle de transport relais, composeur WebSocket et registre de transport à l'échelle du processus.