À propos du projet

schemaui est une bibliothèque Rust et une CLI qui transforment des documents JSON Schema (compatibles draft-07) en éditeurs entièrement interactifs. Il offre deux surfaces de rendu : une interface Web (SPA embarquée avec disposition à trois panneaux — navigation dans le schéma, éditeur de formulaire, aperçu JSON en direct) et une TUI axée clavier, propulsée par ratatui et crossterm. Les deux partagent le même pipeline schéma → formulaire → validation, fournissant un retour de validation immédiat après chaque modification. Fonctionnalités clés : - Analyse des schémas riches, notamment $ref, definitions, patternProperties, enums, plages numériques, objets/tableaux imbriqués et variantes oneOf/anyOf - Sections et superpositions : les propriétés de niveau supérieur deviennent des onglets, les objets imbriqués sont aplatis en sections, les nœuds complexes ouvrent des éditeurs de superposition dédiés - E/S enfichables : accepte JSON/YAML/TOML, émet vers stdout et/ou plusieurs fichiers dans tout format activé - Détection automatique du schéma de configuration via $schema embarqué, TOML #:schema et modelines de serveur de langage YAML - Chargement de schémas distants (CLI uniquement, derrière un feature flag) - Intégration d’agent IA via la compétence compagnon a2ui-ask : les agents lancent l’interface Web liée à 0.0.0.0, les utilisateurs remplissent des formulaires navigateur avec validation en direct, et les réponses sont écrites dans .schemaui/answers/ sous forme de piste d’audit JSON - API de bibliothèque pour l’intégration : schemaui::web::session pour le Web, SchemaUI::run pour la TUI, injection frontend personnalisée via TuiFrontend - CLI (schemaui-cli) avec sous-commandes web et tui, sortie multi-destinations, spécifications stdin/inline Architecture : io::input analyse/fusionne la configuration, le chargeur/résolveur de schémas construit le schéma de formulaire, tui::state gère FormState/sections/reducers, app::runtime gère le routage des entrées/les superpositions/le statut, et tui::view effectue le rendu via ratatui. La validation utilise jsonschema::Validator compilé une seule fois au démarrage ; chaque modification reconstruit le document, exécute le validateur et transmet les erreurs au statut des champs/global. Les feature flags sont répartis par public : schemaui-cli active par défaut TUI + Web + schémas distants ; la crate bibliothèque active par défaut tui + json uniquement. Au moins l’une des fonctionnalités json, yaml ou toml doit être activée.