Imara CLI est un agent de codage IA d'élite pour votre terminal. Propulsé par Imara AI, il intègre la méthodologie Conductor pour transformer vos sessions de chat en cycles de développement structurés et de haute qualité.
- 🧠 Intelligence d'Élite : Modèles spécialisés pour le codage et l'analyse.
- 🏗️ Méthodologie Conductor : Workflow intégré (Inquiry, Planning, Approval, Execution).
- 🛡️ Guardrails de Sécurité : L'IA ne code qu'après votre validation du plan.
- 📂 Analyse de Contexte : Compréhension automatique de l'arborescence et de la stack technique.
- 📊 Gestion Intelligente du Contexte : Comptage précis de tokens, fenêtre de contexte auto-compactée, résumés de session, statut temps réel.
- ⚡ Performance : Exécution optimisée pour la rapidité et la précision.
Pour installer Imara globalement sur votre système :
npm install -g @consolidis/imara-cliimara login --key VOTRE_CLE_APIimara init-conductorimara track new "Ajouter un système de notifications"imara track implement 001IMARA CLI intègre un moteur de stockage local ultra-robuste et performant basé sur SQLite (better-sqlite3 en mode WAL avec clés étrangères indexées). Toutes vos interactions, historiques et résumés contextuels sont stockés en sécurité à un emplacement centralisé.
- Fichier Unique : Toute l'activité est écrite de façon transactionnelle dans
~/.imara/data/imara.db. - Mode Volatile : Si vous ne souhaitez pas persister votre historique localement, vous pouvez à tout moment désactiver l'écriture SQL via la configuration globale :
imara config set persistHistory false
- Résilience native (Graceful Degradation) : Si la base est verrouillée ou inaccessible, la CLI bascule automatiquement en mode mémoire volatile non-bloquant avec un avertissement de diagnostic.
Pour votre sécurité et la propreté de vos projets, l'historique des conversations est strictement confiné par dossier de projet (process.cwd()).
- Les sessions ouvertes dans le Projet A ne seront jamais visibles ni rechargeables dans le Projet B.
- Le chargement croisé d'une session externe via
/loadest bloqué par un panneau de sécurité.
Pendant que vous discutez dans le chat interactif d'IMARA, vous disposez de commandes slash spécialisées pour piloter vos sessions :
/sessions: Affiche un superbe tableau formaté en grille ASCII récapitulant les sessions passées de votre dossier courant (ID, Titre, Modèle actif, Date)./load <id|nom>: Recharge instantanément l'historique complet d'une session passée (dans la limite du projet courant)./clear-history: Purge définitivement toutes les sessions et messages stockés pour le projet courant, après confirmation interactive de sécuritéy/N.
Au démarrage du chat interactif, si une session active récente est détectée pour ce projet, IMARA vous propose de reprendre là où vous vous étiez arrêté :
Souhaitez-vous reprendre votre dernière session active "session_123" ? (y/N) :
En saisissant y, vous restaurez instantanément tout le contexte de travail. En saisissant n, une session vierge est démarrée.
Afin d'éviter que la base de données ne prenne de l'espace disque inutilement, un démon automatique s'exécute silencieusement en tâche de fond 1 seconde après le démarrage de la CLI et supprime définitivement toutes les sessions inactives de plus de 30 jours.
IMARA CLI intègre un support de pointe pour les architectures complexes, les monorepos et les projets composés de plusieurs applications autonomes (ex: backend, frontend, cli) possédant chacun leur propre dépôt Git (.git).
Lorsque vous lancez une commande imara chat ou imara track depuis un sous-dossier (par exemple, profondément niché dans imara-cli/src/), la CLI grimpe automatiquement et récursivement les répertoires parents pour localiser la racine de l'orchestration globale.
- Elle recherche les dossiers
conductor/,backend/conductor/ou.imara/conductor/. - Une fois trouvée, cette racine devient la Source of Truth centralisée pour tous vos fichiers de track (plans, spécifications, statuts, historique).
- Repli de Sécurité (Fallback) : Si aucun dossier Conductor n'est trouvé après avoir remonté jusqu'à la racine, la CLI effectue un repli automatique et transparent en ciblant
./.imara/conductor/à l'intérieur du répertoire de travail actuel (process.cwd()), garantissant un fonctionnement fluide sans interruption ni plantage.
Au cours de l'analyse, IMARA explore dynamiquement votre workspace (parents et enfants immédiats) pour détecter tous les dépôts Git indépendants.
- Elle identifie la branche courante et le statut des fichiers modifiés/stades/non suivis de chaque application distincte (
backend/,frontend/,imara-cli/). - Ces métadonnées sont consolidées et injectées de manière transparente dans le prompt système de l'agent ReAct. L'IA a donc une compréhension transversale, globale et temps réel des modifications Git de toute la base de code.
L'outil run_command à disposition de l'agent a été étendu avec un paramètre optionnel cwd pour permettre des opérations ultra-précises :
- Ciblage de Dépôt : L'IA peut orchestrer des commits, attacher des
git notesd'audit ou installer des dépendances spécifiquement dans un sous-dépôt en fournissantcwd: "backend". - Garde-Fou de Sécurité : Une barrière de confinement valide systématiquement le chemin
cwdet bloque immédiatement toute exécution ciblant des répertoires situés hors des limites physiques du projet.
IMARA CLI intègre un cycle de vie asynchrone entièrement chaîné et robuste qui élimine tout risque d'interruption ou d'arrêt prématuré du processus standard lors de l'exécution interactive des commandes :
- Parseur Asynchrone : Le point d'entrée principal (
index.ts) utilise désormais.parseAsync(process.argv)au lieu du parseur synchrone d'origine de Commander. - Chaînage des Actions : Tous les gestionnaires d'actions de la CLI (
program.ts) sont déclarés comme fonctionsasyncet font l'objet d'unawaitexplicite. Cela empêche le thread de parsing de se terminer prématurément et garantit le maintien en mémoire active de la session. - Forwarding Sécurisé (
track implement) : La délégation interne de la commandeimara track implement <id>verschatCommandest maintenant pleinement attendue (await), maintenant la CLI active pendant toute la phase de cadrage et de dialogue.
- Flux Persistant : L'initialisation de
chatCommandrenvoie une promesse (Promise<void>) qui reste en attente et maintient le processus Node.js actif tant que l'interface interactivereadlinen'a pas été fermée (via/exit,/quitou un signalSIGINT). - Résolution Gracieuse sur Fermeture : La promesse est résolue uniquement lors de l'événement
'close'dereadline, garantissant un cycle de vie propre de l'application et permettant un retour de contrôle propre au shell. - Compatibilité des Tests (Graceful Test Execution) : En environnement de test (
process.env.NODE_ENV === 'test'), un mécanisme de détection résout la promesse immédiatement après le prompt initial. Cela permet aux tests unitaires de simuler des séquences d'entrées de ligne asynchrones de façon non-bloquante et d'éviter tout timeout.
Pour une explication détaillée de la méthodologie, consultez CONDUCTOR.md.
git clone https://github.com/Consolidis/imara-cli.git
cd imara-cli
npm install
npm run test
npm run build
npm linkCe projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Propulsé par Imara AI - Consolidis