diff --git a/README.md b/README.md index ecea7d3..3951f88 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,48 @@ sur le PATH) · ⚪ not-installed · 🔴 not-installable (SaaS/desktop) | am uninstall | désinstalle et nettoie (--purge : logs + config) — gère aussi les agents externes (npm/pip/uv/cargo/bun, sinon suppression des fichiers) | | am export / am import | sauvegarde et restaure config + état | +### 📁 Où et comment agent-manager installe et gère les agents + +`am` ne touche jamais au système : chaque agent est installé dans un **répertoire utilisateur isolé**, et ses exécutables (ou shims) sont centralisés dans un `bin/` commun que `am` met automatiquement sur le `PATH` au lancement. + +| Plateforme | Répertoire de l'agent | Dossier `bin` partagé | Fichier d'état | Configuration utilisateur | +|---|---|---|---|---| +| Linux | `~/.local/share/agent-manager/agents//` | `~/.local/share/agent-manager/bin/` | `~/.local/state/agent-manager/state.json` | `~/.config/agent-manager/config.yaml` | +| macOS | `~/Library/Application Support/agent-manager/agents//` | `~/Library/Application Support/agent-manager/bin/` | `~/Library/Application Support/agent-manager/state.json` | `~/.config/agent-manager/config.yaml` | +| Windows | `%LOCALAPPDATA%\agent-manager\agents\\` | `%LOCALAPPDATA%\agent-manager\bin\` | `%LOCALAPPDATA%\agent-manager\state.json` | `%APPDATA%\agent-manager\config.yaml` | + +Les variables d'environnement `AGENT_MANAGER_DATA`, `AGENT_MANAGER_STATE` et `AGENT_MANAGER_CONFIG_DIR` peuvent déplacer ces emplacements. Le répertoire d'installation est aussi configurable via `settings.install_dir` et celui des logs via `settings.log_dir`. + +#### Cycle d'installation (`am install `) + +1. **Résolution du catalogue** — `am` fusionne le catalogue embarqué (72 agents) avec `~/.config/agent-manager/config.yaml` et un éventuel `./agent-manager.yaml`. Vos définitions remplacent les entrées par défaut du même nom. +2. **Vérification des dépendances** — les outils requis (`node`, `python`, `uv`, `cargo`, `go`, `bun`, `git`...) sont détectés sur le `PATH`. S'il en manque, `am` détecte l'OS et propose la commande d'installation (`scoop`, `winget`, `apt`, `dnf`, `pacman`, `brew`...). Avec `--yes` ou `settings.auto_install_deps: true`, il peut l'exécuter à votre place. +3. **Choix de la méthode** — chaque agent déclare une méthode principale et des alternatives. `--method ` force le choix ; sinon `am` prend la première disponible. Pour `am update`, c'est la méthode utilisée lors de l'installation initiale qui est reconstruite. +4. **Exécution de l'installateur** — selon le type, les commandes réelles lancées sont : + +| Méthode | Ce que `am` exécute localement | Où ça atterrit | +|---|---|---| +| `npm` | `npm install -g --prefix ` | binaires dans `/bin/`, liens ou copie dans `bin/` | +| `bun` | `BUN_INSTALL= bun install -g ` | binaires dans `/bin/`, shims dans `bin/` | +| `pip` | `python -m venv /venv` puis `/bin/pip install --upgrade ` | exécutables dans `/venv/bin/` | +| `uv` | `uv venv --python 3.13 /venv` puis `uv pip install --python /bin/python ` | exécutables dans `/venv/bin/` | +| `cargo` | `cargo install --root ` | binaires dans `/bin/` | +| `go` | `GOBIN= go install @latest` | binaire directement dans `bin/` | +| `curl` | télécharge le script, l'affiche en `--verbose`, puis l'exécute avec `sh