diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index 91e8200..9695767 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -15,6 +15,7 @@
- đ Les dĂ©marrer, arrĂȘter, redĂ©marrer en avant-plan ou en arriĂšre-plan
- đ Observer leur Ă©tat, leurs logs, leurs statistiques d'utilisation
- đ ïž GĂ©rer dĂ©pendances, alias, groupes, profils, secrets, favoris et annotations
+- ⥠Exécuter des actions shell via langage naturel avec un agent léger (`am ai`)
Le tout sans toucher au systÚme : chaque agent est installé dans un répertoire utilisateur isolé.
@@ -35,6 +36,7 @@ flowchart TB
APP["App
contexte partagé"]
CLI_DEF["cli.rs
définition des commandes"]
CMD["commands/
dispatch"]
+ SHELL_AI["shell_ai.rs
agent shell léger"]
end
subgraph DATA["đŸ DonnĂ©es persistantes"]
@@ -62,7 +64,9 @@ flowchart TB
CLI --> APP
REPL --> APP
TUI --> APP
+ WEB --> APP
APP --> CLI_DEF
+ APP --> SHELL_AI
APP --> CONFIG
APP --> CATALOG
APP --> STATE
@@ -76,6 +80,7 @@ flowchart TB
CMD --> DASH
CMD --> STATS
CMD --> SESSIONS
+ SHELL_AI --> CMD
```
---
@@ -166,6 +171,7 @@ src/
âââ playbook.rs â¶ïž Rejeu pas Ă pas d'une sĂ©quence d'historique
âââ plugins.rs đ Scripts d'extension sur les Ă©vĂ©nements (contrat JSON)
âââ models.rs đ€ Inventaire des modĂšles locaux (ollama, llama.cpp, LM Studio)
+âââ shell_ai.rs ⥠Agent shell lĂ©ger : langage naturel â action shell
âââ sync.rs đ Push git de l'Ă©tat (journal, sessions, config)
âââ agent_config.rs âïž Adaptateurs de configuration post-install (TOML/YAML/JSON/key=value)
âââ costs.rs đ° CoĂ»ts estimĂ©s par agent (tokens in/out, modĂšles de prix)
@@ -463,6 +469,7 @@ flowchart TB
| `am registry publish/search/install` | Registre communautaire de catalogues (Gitea, manifeste + checksum sha256 vérifié) |
| `am serve --token [--port]` | API HTTP + WebSocket authentifiĂ©e : stats, run, start, stop, ask â rate limiting par IP, TLS derriĂšre reverse proxy |
| `am web [--port]` | Dashboard web local en lecture seule (127.0.0.1), contrats `--json` réutilisés |
+| `am ai "" [--exec] [--files ]` | **Shell AI** : langage naturel â commande/action shell via agent lĂ©ger (AIChat) ; `--dry-run` par dĂ©faut, confirmation avant exĂ©cution |
| `am lab --agents a,b --task ` | Benchmark comparatif (durée, exit, coût) sur tùches YAML versionnables |
| `am sync [--message]` | Sauvegarde git de l'Ă©tat (journal, sessions, config â secrets exclus) |
| `am migrate export/import` | Bundle de transfert machine A â B (config + Ă©tat + historique) |
@@ -711,6 +718,57 @@ flowchart LR
---
+## ⥠Shell AI
+
+`am ai` (alias `am shell`) est une commande dédiée aux **actions shell via langage naturel**. Elle repose sur un agent léger (par défaut **AIChat**, installé comme n'importe quel autre agent via le catalogue) et réutilise le registre de providers LLM (`providers.rs`) pour choisir le modÚle le plus rapide/cheap.
+
+### Flux d'exécution
+
+```mermaid
+sequenceDiagram
+ autonumber
+ participant User
+ participant cli as cli.rs
+ participant shell_ai as shell_ai.rs
+ participant catalog as catalog.rs
+ participant providers as providers.rs
+ participant runner as runner.rs
+ participant aichat as aichat (agent)
+
+ User->>cli: am ai "traite les JSON"
+ cli->>shell_ai: parse args (--exec, --files)
+ shell_ai->>catalog: agent "aichat" installé ?
+ catalog-->>shell_ai: Ok / install
+ shell_ai->>providers: provider & modÚle par défaut
+ providers-->>shell_ai: config (ollama / cheap cloud)
+ shell_ai->>shell_ai: injecte cwd + fichiers (--files)
+ shell_ai->>runner: exec aichat -f . -e "..."
+ runner->>aichat: lancement processus
+ aichat-->>runner: commande générée / exécutée
+ runner-->>shell_ai: output + exit code
+ shell_ai->>shell_ai: journalise événement shell_ai
+ shell_ai-->>User: résultat ou confirmation
+```
+
+### Sécurité
+
+| RÚgle | Détail |
+|---|---|
+| `--dry-run` par défaut | Aucune commande modifiante n'est exécutée sans confirmation |
+| Classification risk/certainty | Inspiré d'AI CLI : chaque commande est classée `safe` ou `risky` |
+| Confirmation utilisateur | Les commandes `risky` demandent une validation explicite |
+| Mode local possible | Support d'Ollama via `providers.rs` pour ne pas sortir les données |
+
+### Dépendances
+
+- `src/shell_ai.rs` : parsing du prompt, gestion des flags, appel Ă l'agent
+- `src/providers.rs` : résolution du provider/modÚle
+- `src/runner.rs` : exécution du binaire `aichat`
+- `src/events.rs` : journalisation `shell_ai` dans le journal JSONL
+- `config.yaml` : définition de l'agent `aichat` + alias `ai`
+
+---
+
## đ RĂ©fĂ©rences
- `src/lib.rs:4` : documentation d'architecture du crate
diff --git a/ROADMAP.md b/ROADMAP.md
index 0d109d6..d7be391 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -350,14 +350,89 @@ consultable, reprenable, archivable.
### Axe 13 â ⥠Shell AI & Action â
-đŻ Transformer une commande en langage naturel en une action shell exĂ©cutĂ©e par un agent lĂ©ger, rapide et contextuel.
+đŻ Transformer une commande en langage naturel en une action shell exĂ©cutĂ©e par un agent lĂ©ger, rapide et contextuel, sans dĂ©marrer un gros coding agent.
-| Fonctionnalité | Effort | Phase |
+**Contexte :** `am` gĂšre aujourd'hui ~72 agents IA, principalement des *coding agents*, des assistants et des outils SaaS. Aucun n'est un **shell assistant pur** â lĂ©ger, rapide, conçu pour transformer une phrase en commande ou action sur le systĂšme de fichiers local (ex. *"traite les fichiers JSON du dossier courant pour extraire les clĂ©s uniques"*).
+
+---
+
+#### 13.1 Agents shell AI découverts (non présents dans le catalogue)
+
+| Outil | Repo | Langage | Force | Maturité |
+|---|---|---|---|---|
+| **AIChat** | `sigoden/aichat` | Rust | Shell assistant natif, RAG, agents, fichiers/répertoires, 20+ providers | **10.4k stars**, trÚs actif |
+| **ShellGPT** | `TheR1D/shell_gpt` | Python | GénÚre/exécute commandes shell, code, docs | TrÚs connu, mature |
+| **Fabric** | `danielmiessler/fabric` | Go | Patterns AI (summarize, extract wisdom), CLI | TrÚs populaire, orienté contenu/texte |
+| **Shell AI** | `nishant9083/shell-ai` | TypeScript | Agent ReAct local via Ollama, MCP, filesystem tools | Plus récent, prometteur mais jeune |
+| **AI CLI** | `kriserickson/ai-cli` | Rust | Natural language â commandes shell avec safety policy (`risk` / `certainty`) | Petit, simple, moins connu |
+
+---
+
+#### 13.2 Recommandation : AIChat (`sigoden/aichat`)
+
+**Choix privilégié pour la fonction Shell AI.**
+
+| Avantage | Détails |
+|---|---|
+| **Léger & rapide** | Rust, binaire unique, cold start rapide, idéal pour RPi 4 |
+| **Shell Assistant natif** | GénÚre et exécute des commandes shell à partir du langage naturel |
+| **Multi-provider** | OpenAI, Claude, Gemini, DeepSeek, Groq, Ollama, OpenRouter⊠|
+| **Passage de contexte** | `aichat -f .` injecte le dossier ou les fichiers dans le prompt |
+| **Mode exécution** | `aichat -e "..."` exécute directement, mode conversationnel sinon |
+| **Facilité d'intégration** | Release binaire GitHub, installable via `binary` dans le catalogue |
+
+Exemples d'usage ciblés :
+
+```bash
+# Lister et traiter les fichiers JSON du dossier courant
+aichat -f . -e "liste tous les fichiers JSON et extrait les clés uniques"
+
+# Résumer un dossier de fichiers
+aichat -f . "résume les données de ces fichiers JSON"
+```
+
+---
+
+#### 13.3 Fonctionnalités prévues
+
+| Fonctionnalité | Description | Effort | Phase |
+|---|---|---|---|
+| **Catalogue : ajouter AIChat** | DĂ©finition `AgentDef` + alias `ai` â `aichat` | S | P1 |
+| **Commande `am ai `** | Lancer AIChat avec le dossier courant comme contexte | S | P3 |
+| **Flag `--exec` / `-e`** | Active le mode exécution directe (`aichat -e`) | S | P3 |
+| **Flag `--files `** | Passer fichiers/dossiers spécifiques en contexte | S | P3 |
+| **Sécurité : `--dry-run` par défaut** | Simuler avant exécution ; confirmation si modification | M | P3 |
+| **Provider configurable** | Réutiliser le registre `providers.rs` (cheap model par défaut) | M | P3 |
+| **Alias intégrés** | `am shell`, `am do` comme synonymes | S | P3 |
+| **Extensions sĆurs** | `am summarize`, `am explain`, `am fix` (voir ci-dessous) | M | P3 |
+
+---
+
+#### 13.4 Risques & garde-fous
+
+| Risque | Mitigation |
+|---|---|
+| Exécution automatique de commandes dangereuses | `--dry-run` par défaut, confirmation obligatoire avant toute commande `risky` |
+| Coût API récurrent | ModÚle cheap par défaut (`gpt-4.1-mini`, `gemini-flash`) ou Ollama local |
+| Fuite de données sensibles | Support du mode local Ollama, pas d'envoi hors du provider configuré |
+| Installation lente sur RPi | Utiliser l'installateur `binary` GitHub Releases plutĂŽt que `cargo` |
+
+---
+
+#### 13.5 IdĂ©es sĆurs (Ă intĂ©grer ou lier Ă d'autres axes)
+
+| Commande | Description | Axe lié |
|---|---|---|
-| Intégration d'un agent shell léger (`am ai `) | M | P3 |
-| âł Candidat principal : **AIChat (Rust)** | | |
-| Passage de contexte (fichiers/dossiers) via flags | S | P3 |
-| Mode exécution directe (`-e`) vs. conversationnel | S | P3 |
+| `am summarize ` | Résume un fichier ou un dossier via AIChat/Fabric | Axe 13 |
+| `am explain ` | Explique une commande shell avant exécution | Axe 13 |
+| `am commit` | GénÚre un message de commit depuis `git diff` | Axe 13 / Axe 3 |
+| `am review` | Review rapide d'un diff ou d'une PR | Axe 7 |
+| `am translate --to en` | Traduit un fichier markdown/doc | Axe 13 |
+| `am ask-code "..."` | Pose une question sur le codebase sans lancer un gros agent | Axe 7 |
+| `am doc ` | GénÚre un README/doc à partir du code | Axe 13 / Axe 7 |
+| `am fix` | Corrige une commande shell qui a échoué | Axe 13 |
+| `am note` | Extrait des action items d'un texte/réunion | Axe 10 |
+| `am search-web "..."` | Recherche web rapide et réponse synthétisée | Axe 7 |
---