Skip to content

Consolidis/imara-cli

Repository files navigation

🚀 Imara CLI

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é.

✨ Caractéristiques

  • 🧠 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.

📦 Installation

Pour installer Imara globalement sur votre système :

npm install -g @consolidis/imara-cli

🚀 Démarrage Rapide

1. Connexion

imara login --key VOTRE_CLE_API

2. Initialisation d'un projet (Conductor)

imara init-conductor

3. Créer un objectif

imara track new "Ajouter un système de notifications"

4. Lancer l'implémentation

imara track implement 001

💾 Persistance des Sessions, Historique & Isolation

IMARA 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é.

1. Base de Données Unifiée & Mode Volatile

  • 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.

2. Isolation des Espaces de Travail (Workspaces)

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 /load est bloqué par un panneau de sécurité.

3. Commandes Interactives REPL de Session

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.

4. Auto-Resume Intelligent

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.

5. Garbage Collector Asynchrone (GC)

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.

🌐 Conductor Fédéré & Multi-Dépôts Git (Support Monorepo & Multi-App)

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).

1. Découverte Ascendante Dynamique (Dynamic Upward Discovery)

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.

2. Scanner Multi-Dépôts Git (Unified Multi-Git Status)

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.

3. Opérations Shell Ciblées & Sécurisées (run_command)

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 notes d'audit ou installer des dépendances spécifiquement dans un sous-dépôt en fournissant cwd: "backend".
  • Garde-Fou de Sécurité : Une barrière de confinement valide systématiquement le chemin cwd et bloque immédiatement toute exécution ciblant des répertoires situés hors des limites physiques du projet.

⚡ Résolution de Cycle de Vie & Robustesse REPL (CLI REPL Exit Bug Resolution)

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 :

1. Cycle de Vie Asynchrone Fédéré (Async Commander Lifecycle)

  • 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 fonctions async et font l'objet d'un await explicite. 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 commande imara track implement <id> vers chatCommand est maintenant pleinement attendue (await), maintenant la CLI active pendant toute la phase de cadrage et de dialogue.

2. Confinement des Flux Standard (Promise-wrapped REPL Loop)

  • Flux Persistant : L'initialisation de chatCommand renvoie une promesse (Promise<void>) qui reste en attente et maintient le processus Node.js actif tant que l'interface interactive readline n'a pas été fermée (via /exit, /quit ou un signal SIGINT).
  • Résolution Gracieuse sur Fermeture : La promesse est résolue uniquement lors de l'événement 'close' de readline, 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.

🏗️ Méthodologie Conductor

Pour une explication détaillée de la méthodologie, consultez CONDUCTOR.md.

🛠️ Développement Local

git clone https://github.com/Consolidis/imara-cli.git
cd imara-cli
npm install
npm run test
npm run build
npm link

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.


Propulsé par Imara AI - Consolidis

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors