Architecture PlanToCode
Comment le shell de bureau, les flux de travail en arrière-plan et les services partagés sont organisés.
PlanToCode est une application de bureau Tauri avec une interface React. L'interface affiche les plans d'implémentation, les terminaux et les contrôles de configuration, tandis que le backend Rust expose des commandes pour les flux de travail, l'estimation de jetons et les sessions de terminal persistantes. Cette vue d'ensemble résume comment ces éléments s'assemblent.
Interface utilisateur
L'interface de bureau est construite avec des composants React. Le contenu du plan d'implémentation est affiché via un visualiseur basé sur Monaco qui virtualise les grands plans, détecte les langages et prend en charge les actions de copie afin que les réviseurs puissent examiner le texte du plan sans problèmes de performance. Les sessions de terminal se rendent dans une vue tampon qui se connecte à la sortie PTY et affiche les mises à jour de l'état de connexion.
Les fournisseurs partagés gèrent les notifications, la configuration d'exécution et l'état du plan. Le panneau Plans d'implémentation conserve les métadonnées du plan, gère la visibilité des modales et demande des estimations de jetons ou du contenu de prompt selon les besoins.
Commandes et services Tauri
Le côté Rust de l'application expose des commandes pour les flux de travail, les sessions de terminal et les outils de modèle. Les commandes de flux de travail démarrent des tâches en arrière-plan via l'Orchestrateur de flux de travail, validant les entrées et émettant des événements de progression au fur et à mesure que le pipeline de découverte de fichiers s'exécute. Les commandes d'estimation de jetons calculent les tailles de prompt pour le modèle actuellement sélectionné.
Les commandes de terminal gèrent les processus PTY, suivent les clients distants et vérifient si les binaires CLI pris en charge sont disponibles avant de lancer une session. Les vérifications de santé combinent l'état PTY avec les enregistrements de base de données pour signaler si une session est toujours active.
Persistance et configuration
La sortie du terminal et les métadonnées de session sont stockées dans SQLite via le référentiel de sessions de terminal. Chaque enregistrement comprend des identifiants, des horodatages, des répertoires de travail, des variables d'environnement et le journal accumulé afin que les redémarrages puissent récupérer la sortie précédente. Le même référentiel émet des événements lorsque l'état de la session change.
Les paramètres par défaut des modèles résident dans la table de configuration de l'application. Chaque tâche définit un modèle par défaut, une liste d'alternatives autorisées, des budgets de jetons et des préréglages de bouton de copie optionnels. La couche React lit ces paramètres pour remplir le sélecteur de modèle et les garde-fous.
Pipeline de transcription vocale
La transcription vocale est implémentée sous forme de hook React qui coordonne les autorisations médias, la sélection du microphone et les demandes de transcription en streaming. Le hook s'intègre au terminal de plan et aux éditeurs de prompt, insérant le texte reconnu directement dans le composant actif et affichant des notifications si la transcription échoue.