Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66a3eebbd6 | ||
|
|
e71cffb3c0 | ||
|
|
7fb65c257d | ||
|
|
068940495a | ||
|
|
d71c3dd34d | ||
|
|
50f515e406 | ||
|
|
313645eea2 | ||
|
|
02517735be | ||
|
|
0f81b7c585 | ||
|
|
0a12c617b2 | ||
|
|
ee490f5eaf | ||
|
|
79e032b563 | ||
|
|
d0f52eb7c0 | ||
|
|
38d38d51e3 | ||
|
|
5bcbc1c81f | ||
|
|
38297c2bf3 | ||
|
|
ac6f2ffaa5 | ||
|
|
2d90c48532 | ||
|
|
92af59a71f | ||
|
|
900f70c249 | ||
|
|
12eb09b01a | ||
|
|
7cab1a0b5c | ||
|
|
6d51ce9504 | ||
|
|
68eb170f57 | ||
|
|
ebc753cc4a | ||
|
|
7312e6ceab | ||
|
|
d38cd7352f | ||
|
|
1948e3bc79 | ||
|
|
4735fc1502 | ||
|
|
fa51cdb339 | ||
|
|
7f4d74f811 | ||
|
|
4c7866a25a | ||
|
|
aa0d8e43eb | ||
|
|
e82979e6a3 | ||
|
|
1b3fe09074 | ||
|
|
63dc36660b | ||
|
|
6a6676fc5d | ||
|
|
d9ffc34156 | ||
|
|
22bc529818 | ||
|
|
890ad953e5 | ||
|
|
98c0b30f68 | ||
|
|
53893f2967 | ||
|
|
91253b79c5 | ||
|
|
3c8bb93b8a | ||
|
|
363d5e3286 | ||
|
|
4c60ab5bcc | ||
|
|
e24e518846 | ||
|
|
2c079b0ccd | ||
|
|
e6e85e2a9e | ||
|
|
56732d672b | ||
|
|
4f4cd034b2 | ||
|
|
aeca797ae0 | ||
|
|
354c914c43 | ||
|
|
c57d3a333d | ||
|
|
16926ffb00 | ||
|
|
f14b59e63b | ||
|
|
8d93eece1e | ||
|
|
2a1fcfeed6 | ||
|
|
18784ba9f7 | ||
|
|
3220a323ef | ||
|
|
30cc49de3c | ||
|
|
314583ceee | ||
|
|
ed795c522f | ||
|
|
bbc2bb889d | ||
|
|
904e340cdd | ||
|
|
5f8b973789 | ||
|
|
463fa6b937 | ||
|
|
dc7372f277 | ||
|
|
a23bc6b5ae | ||
|
|
81c69db17b | ||
|
|
9e6c8aca08 | ||
|
|
4ef89cde72 | ||
|
|
2eaafe6e2a | ||
|
|
deeb489b4e | ||
|
|
fc243d2f21 | ||
|
|
6ecfa0d21c | ||
|
|
3902bbcb37 | ||
|
|
d4a6aeae1d | ||
|
|
38d0729cb3 | ||
|
|
85d44f9e56 | ||
|
|
48e85555f7 | ||
|
|
c9e2543f50 | ||
|
|
9f4a13eae2 | ||
|
|
33748bea36 | ||
|
|
19e77fd261 | ||
|
|
38b7a3a915 | ||
|
|
3af0834bae | ||
|
|
c6518bcfd5 | ||
|
|
a672880e34 | ||
|
|
310da96a63 | ||
|
|
ba901df953 | ||
|
|
e50e8d3e41 | ||
|
|
498af684c9 | ||
|
|
2282f71829 | ||
|
|
f968d7d0b0 | ||
|
|
b3437b0601 | ||
|
|
843c3e1278 | ||
|
|
4db567eebe | ||
|
|
2bbe45e508 | ||
|
|
4b0f02a7c4 | ||
|
|
79143e197d | ||
|
|
14f873bfdd | ||
|
|
53f3fa34e7 | ||
|
|
5841926b25 | ||
|
|
979875fa63 | ||
|
|
93c32b60ba |
@@ -0,0 +1,143 @@
|
||||
# Gitea Actions : pipeline de release (issue #42).
|
||||
#
|
||||
# Sur chaque tag v* : construit les binaires de toutes les plateformes.
|
||||
# Le job principal 'release' cross-compile Linux + Windows depuis un seul
|
||||
# runner ubuntu-latest, donc il n'a pas besoin de runners Windows/macOS.
|
||||
# Le job 'macos' est optionnel : s'il y a un runner macos-latest, il ajoute
|
||||
# les archives macOS a la release existante ; sinon l'installateur retombe
|
||||
# sur cargo install --git sur macOS.
|
||||
#
|
||||
# Les installateurs one-liner (install.sh / install.ps1) et 'am self-update'
|
||||
# consomment les artefacts attaches a la release.
|
||||
#
|
||||
# Cross-compilation utilisee :
|
||||
# - Linux x86_64 + aarch64 : cargo-zigbuild + musl (binaires statiques)
|
||||
# - Windows x86_64 : mingw-w64 + x86_64-pc-windows-gnu
|
||||
#
|
||||
# Prerequis du runner : pouvoir tirer l'image docker.io (rust:1.94-bookworm,
|
||||
# ~1,2 Go) et le secret GITEA_TOKEN (jeton avec droit 'write:release')
|
||||
# positionne sur le depot.
|
||||
#
|
||||
# Note disque (runner avec espace limite) :
|
||||
# - il faut ~2 Go libres sur / pour tirer l'image (rust:1.94-bookworm) ;
|
||||
# en cas de 'no space left on device' : docker system prune -af --volumes
|
||||
# sur l'HOTE du runner (pas une autre machine !) ;
|
||||
# - les builds compilent dans CARGO_TARGET_DIR=/tmp (hors du volume
|
||||
# workspace) avec l'incremental desactive, donc rien ne persiste ;
|
||||
# - zig (~50 Mo) fournit le linker croise pour Linux.
|
||||
name: release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
concurrency:
|
||||
group: release-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
container: rust:1.94-bookworm
|
||||
env:
|
||||
CARGO_TARGET_DIR: /tmp/am-target
|
||||
CARGO_INCREMENTAL: "0"
|
||||
steps:
|
||||
# actions/checkout (et son post-step) s'execute via node, absent de
|
||||
# l'image rust:bookworm par defaut : sans nodejs le job echoue des le checkout.
|
||||
- name: Prepare container (node for checkout action)
|
||||
run: apt-get update && apt-get install -y nodejs
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install build tools (zig + cargo-zigbuild + mingw)
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y build-essential mingw-w64 zip curl
|
||||
rustup target add \
|
||||
x86_64-unknown-linux-musl \
|
||||
aarch64-unknown-linux-musl \
|
||||
x86_64-pc-windows-gnu
|
||||
curl -fsSL https://ziglang.org/download/0.14.1/zig-x86_64-linux-0.14.1.tar.xz -o /tmp/zig.tar.xz
|
||||
tar -xf /tmp/zig.tar.xz -C /opt
|
||||
echo "/opt/zig-x86_64-linux-0.14.1" >> "$GITHUB_PATH"
|
||||
cargo install cargo-zigbuild --locked
|
||||
# Contourne un bug de casse dans certaines crates Windows
|
||||
# (ex. windows-sys peut emettre -lKernel32 au lieu de -lkernel32).
|
||||
# Le linker MinGW sous Linux est sensible a la casse.
|
||||
ln -sf /usr/x86_64-w64-mingw32/lib/libkernel32.a \
|
||||
/usr/x86_64-w64-mingw32/lib/libKernel32.a
|
||||
|
||||
- name: Build linux x86_64 + aarch64 (static musl, zig)
|
||||
run: cargo zigbuild --release --locked --target x86_64-unknown-linux-musl --target aarch64-unknown-linux-musl
|
||||
|
||||
- name: Build windows x86_64 (mingw)
|
||||
run: cargo build --release --locked --target x86_64-pc-windows-gnu
|
||||
|
||||
- name: Stage archives
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp "$CARGO_TARGET_DIR/x86_64-unknown-linux-musl/release/am" dist/am-linux-x86_64
|
||||
cp "$CARGO_TARGET_DIR/aarch64-unknown-linux-musl/release/am" dist/am-linux-aarch64
|
||||
cp "$CARGO_TARGET_DIR/x86_64-pc-windows-gnu/release/am.exe" dist/am-windows-x86_64.exe
|
||||
cd dist
|
||||
tar -czf am-linux-x86_64.tar.gz am-linux-x86_64
|
||||
tar -czf am-linux-aarch64.tar.gz am-linux-aarch64
|
||||
zip -q am-windows-x86_64.zip am-windows-x86_64.exe
|
||||
rm am-windows-x86_64.exe
|
||||
sha256sum am-linux-*.tar.gz am-windows-*.zip > checksums.txt
|
||||
|
||||
- name: Publish release
|
||||
uses: https://gitea.com/actions/gitea-release-action@v1
|
||||
with:
|
||||
# L'action splitte 'files' sur les retours a la ligne (pas les
|
||||
# espaces) : un bloc YAML plie en une seule ligne et ne trouve
|
||||
# alors aucun fichier -> 'not include valid file', rien n'upload.
|
||||
files: |
|
||||
dist/am-linux-x86_64.tar.gz
|
||||
dist/am-linux-aarch64.tar.gz
|
||||
dist/am-windows-x86_64.zip
|
||||
dist/checksums.txt
|
||||
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
release_overwrite: true
|
||||
|
||||
macos:
|
||||
# Optionnel : ajoute les archives macOS si un runner macos-latest est
|
||||
# disponible. Sinon ce job reste en attente, mais le job release a deja
|
||||
# publie Linux + Windows.
|
||||
needs: release
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
CARGO_TARGET_DIR: /tmp/am-target
|
||||
CARGO_INCREMENTAL: "0"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build macos x86_64 + aarch64
|
||||
run: |
|
||||
rustup target add x86_64-apple-darwin aarch64-apple-darwin
|
||||
cargo build --release --locked --target x86_64-apple-darwin
|
||||
cargo build --release --locked --target aarch64-apple-darwin
|
||||
|
||||
- name: Stage archives
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp "$CARGO_TARGET_DIR/x86_64-apple-darwin/release/am" dist/am-macos-x86_64
|
||||
cp "$CARGO_TARGET_DIR/aarch64-apple-darwin/release/am" dist/am-macos-aarch64
|
||||
cd dist
|
||||
tar -czf am-macos-x86_64.tar.gz am-macos-x86_64
|
||||
tar -czf am-macos-aarch64.tar.gz am-macos-aarch64
|
||||
shasum -a 256 am-macos-*.tar.gz > checksums-macos.txt
|
||||
|
||||
- name: Publish release
|
||||
uses: https://gitea.com/actions/gitea-release-action@v1
|
||||
with:
|
||||
files: |
|
||||
dist/am-macos-x86_64.tar.gz
|
||||
dist/am-macos-aarch64.tar.gz
|
||||
dist/checksums-macos.txt
|
||||
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
# false = ajoute les assets macOS a la release creee par le job
|
||||
# principal, sans ecraser Linux + Windows.
|
||||
release_overwrite: false
|
||||
+787
@@ -0,0 +1,787 @@
|
||||
# 🏗️ Document d'architecture — agent-manager (`am`)
|
||||
|
||||
> Ce document décrit la conception, le fonctionnement et les fonctionnalités de **agent-manager** (binaire `am`), un CLI Rust multiplateforme pour gérer des agents IA de coding locaux.
|
||||
>
|
||||
> 📦 Version : `0.6.0` · 🦀 Rust 2021 · ✅ Windows · ✅ Linux · ✅ macOS
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Vue d'ensemble
|
||||
|
||||
`am` est un gestionnaire d'agents IA de coding qui permet de :
|
||||
|
||||
- 📋 Découvrir et lister plus de **72 agents** via un catalogue YAML embarqué
|
||||
- 📦 Les installer avec **9 méthodes** différentes (npm, pip, uv, cargo, go, bun, curl, binaire, git)
|
||||
- 🚀 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é.
|
||||
|
||||
---
|
||||
|
||||
## 🧩 Architecture globale
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
subgraph UI["🖥️ Interfaces utilisateur"]
|
||||
CLI["Ligne de commande<br/>clap v4"]
|
||||
REPL["Shell interactif<br/>rustyline"]
|
||||
TUI["Dashboard TUI<br/>ratatui + crossterm"]
|
||||
WEB["Dashboard web<br/>tiny_http (127.0.0.1)"]
|
||||
end
|
||||
|
||||
subgraph CORE["⚙️ Noyau applicatif"]
|
||||
APP["App<br/>contexte partagé"]
|
||||
CLI_DEF["cli.rs<br/>définition des commandes"]
|
||||
CMD["commands/<br/>dispatch"]
|
||||
SHELL_AI["shell_ai.rs<br/>agent shell léger"]
|
||||
end
|
||||
|
||||
subgraph DATA["💾 Données persistantes"]
|
||||
CONFIG["Configuration YAML<br/>embarquée + utilisateur"]
|
||||
CATALOG["Catalog<br/>index agents/alias/groupes"]
|
||||
STATE["StateStore<br/>state.json"]
|
||||
EVENTS["Journal JSONL<br/>events-YYYYMM.jsonl"]
|
||||
CACHE["Probe cache<br/>probe-cache.json"]
|
||||
end
|
||||
|
||||
subgraph EXEC["🔧 Exécution"]
|
||||
RUNNER["Runner trait<br/>système / mock"]
|
||||
INSTALLERS["installers/<br/>9 méthodes"]
|
||||
DEPS["deps.rs<br/>vérification dépendances"]
|
||||
PROCESS["process.rs<br/>PID / signaux"]
|
||||
end
|
||||
|
||||
subgraph OBS["👁️ Observation"]
|
||||
PROBE["probe.rs<br/>détection agents externes"]
|
||||
DASH["dashboard.rs<br/>agrégation"]
|
||||
STATS["stats.rs<br/>statistiques"]
|
||||
SESSIONS["sessions.rs<br/>registre sessions"]
|
||||
end
|
||||
|
||||
CLI --> APP
|
||||
REPL --> APP
|
||||
TUI --> APP
|
||||
WEB --> APP
|
||||
APP --> CLI_DEF
|
||||
APP --> SHELL_AI
|
||||
APP --> CONFIG
|
||||
APP --> CATALOG
|
||||
APP --> STATE
|
||||
APP --> EVENTS
|
||||
APP --> CACHE
|
||||
CMD --> RUNNER
|
||||
CMD --> INSTALLERS
|
||||
CMD --> DEPS
|
||||
CMD --> PROCESS
|
||||
CMD --> PROBE
|
||||
CMD --> DASH
|
||||
CMD --> STATS
|
||||
CMD --> SESSIONS
|
||||
SHELL_AI --> CMD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Flux d'exécution d'une commande
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
participant User
|
||||
participant main as main.rs
|
||||
participant lib as lib.rs
|
||||
participant help as help.rs
|
||||
participant cli as cli.rs
|
||||
participant app as app.rs
|
||||
participant cfg as config.rs
|
||||
participant state as state.rs
|
||||
participant cmd as commands/mod.rs
|
||||
participant impl as commands/xxx_cmd.rs
|
||||
|
||||
User->>main: am install jcode
|
||||
main->>lib: main_entry()
|
||||
lib->>lib: spawn thread 8 Mo
|
||||
lib->>help: intercept(-h/--help) ?
|
||||
help-->>lib: None
|
||||
lib->>cli: Cli::parse()
|
||||
cli-->>lib: Cli { command: Install {...} }
|
||||
lib->>app: App::from_cli(cli)
|
||||
app->>cfg: load() config embarquée + user
|
||||
cfg-->>app: Config
|
||||
app->>state: StateStore::new()
|
||||
state-->>app: state.json chargé
|
||||
app-->>lib: App
|
||||
lib->>cmd: commands::execute(&app)
|
||||
cmd->>impl: install_cmd::run(...)
|
||||
impl->>impl: vérifier dépendances, installer
|
||||
impl->>state: persister
|
||||
impl->>app: emit(event install)
|
||||
impl-->>cmd: Ok(0)
|
||||
cmd-->>lib: 0
|
||||
lib-->>main: code sortie
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Structure du code source
|
||||
|
||||
```
|
||||
src/
|
||||
├── main.rs 🚪 Point d'entrée
|
||||
├── lib.rs 🧭 main_entry(), doc du crate
|
||||
├── cli.rs 📋 Définition clap de toutes les commandes
|
||||
├── app.rs 🧰 Contexte App (config, state, paths, logger, theme)
|
||||
├── config.rs ⚙️ Schéma YAML, chargement, fusion, validation
|
||||
├── catalog.rs 🔍 Index agents + recherche fuzzy + suggestions
|
||||
├── catalog_remote.rs 🌐 Catalogues distants (fetch, cache, includes)
|
||||
├── state.rs 💾 Base JSON des installations et annotations
|
||||
├── events.rs 📝 Journal d'événements JSONL
|
||||
├── runner.rs 🏃 Trait d'exécution système / mock
|
||||
├── process.rs ⚙️ Lancement, arrêt, signaux des processus
|
||||
├── deps.rs ✅ Vérification et auto-installation des dépendances
|
||||
├── toolchain.rs 🖥️ Détection OS / gestionnaire de paquets
|
||||
├── download.rs ⬇️ Téléchargement, checksums, extraction
|
||||
├── probe.rs 🔎 Détection des agents externes sur le PATH
|
||||
├── dashboard.rs 📊 Données agrégées du dashboard
|
||||
├── ps.rs 🧮 Table des processus
|
||||
├── context.rs 📂 Contexte du projet courant
|
||||
├── repl.rs 💬 Shell interactif
|
||||
├── shell.rs 🐚 Gestion des shells supportés
|
||||
├── help.rs ❓ Aide Nushell-style
|
||||
├── output.rs 🖨️ Logger et rendu
|
||||
├── tables.rs 📋 Rendu tabulaire
|
||||
├── theme.rs 🎨 Thèmes de couleur (REPL et tableaux)
|
||||
├── web.rs 🌐 Serveur HTTP local (127.0.0.1) + API JSON + frontend embarqué
|
||||
├── serve.rs 🚀 API HTTP + WebSocket authentifiée (pilotage à distance, issue #80)
|
||||
├── frontend/ 📄 index.html — dashboard web (HTML5 + CSS + JS vanilla, include_str!)
|
||||
├── history.rs ⏪ Historique des commandes
|
||||
├── sessions.rs 📅 Registre des sessions
|
||||
├── projects.rs 🗂️️ Agrégation par projet
|
||||
├── hooks.rs 🪝 Hooks de cycle de vie
|
||||
├── secrets.rs 🔒 Gestion des secrets (keyring OS)
|
||||
├── providers.rs 🏷️ Registre de providers LLM (base_url, modèles, défaut, @secret)
|
||||
├── registry.rs 📦 Registre communautaire de catalogues (manifeste + sha256)
|
||||
├── ask.rs 💬 Langage naturel → commandes am (règles locales + LLM optionnel)
|
||||
├── sandbox.rs 🛡️ Profils sandbox par agent (allowlist, périmètre, réseau)
|
||||
├── telemetry.rs 📈 Télémétrie anonyme opt-in (compteurs agrégés)
|
||||
├── lab.rs 🧪 Benchmark d'agents (tâches YAML versionnables)
|
||||
├── 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)
|
||||
├── automation.rs ⚙️ Services système + tâches planifiées (systemd/launchd/schtasks)
|
||||
├── backup.rs 💾 Sauvegardes (update --rollback, migrate)
|
||||
├── doctor.rs 🩺 Diagnostics environnement + --fix
|
||||
├── nav.rs 🧭 Tables de navigation (ls/dir)
|
||||
├── i18n.rs 🌍 Catalogue de traductions FR/EN (--lang, AM_LANG, LANG)
|
||||
├── version.rs 🏷️ Informations de version
|
||||
├── commands/ 📦 51 modules, un par commande
|
||||
└── installers/ 📦 8 installateurs spécialisés
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration : catalogue YAML extensible
|
||||
|
||||
### Hiérarchie de chargement
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
EMB["📦 config.yaml<br/>embarqué dans le binaire"] --> MERGE["🔀 Fusion"]
|
||||
USER["👤 ~/.config/agent-manager/config.yaml"] --> MERGE
|
||||
LOCAL["📂 ./agent-manager.yaml"] --> MERGE
|
||||
FLAG["⚡ --config <file>"] --> MERGE
|
||||
MERGE --> EFFECTIVE["✅ Configuration effective"]
|
||||
```
|
||||
|
||||
Priorité (la plus prioritaire en dernier) :
|
||||
|
||||
1. `config.yaml` embarqué (catalogue par défaut, ~72 agents)
|
||||
2. `~/.config/agent-manager/config.yaml`
|
||||
3. `./agent-manager.yaml` (configuration locale par projet)
|
||||
4. `--config <fichier>`
|
||||
|
||||
### Schéma de configuration
|
||||
|
||||
```yaml
|
||||
version: "1.0"
|
||||
|
||||
settings:
|
||||
install_dir: null # ~/.local/share/agent-manager/agents
|
||||
log_dir: null # ~/.local/state/agent-manager/logs
|
||||
default_shell: null # shell utilisateur par défaut
|
||||
auto_install_deps: true # proposer d'installer les dépendances manquantes
|
||||
confirm_before_run: true # confirmer avant les scripts d'installation
|
||||
stop_timeout_secs: 5 # délai SIGTERM → SIGKILL
|
||||
self_update_repo: Projets/agent-manager
|
||||
self_update_base_url: https://git.dracodev.net/api/v1
|
||||
theme: null
|
||||
hooks:
|
||||
on_install: []
|
||||
on_start: []
|
||||
on_stop: []
|
||||
on_update: []
|
||||
|
||||
aliases:
|
||||
cc: claude-code
|
||||
gemini: gemini-cli
|
||||
|
||||
groups:
|
||||
dev: [claude-code, aider, codex]
|
||||
|
||||
include:
|
||||
- ./extra-agents.yaml
|
||||
|
||||
agents:
|
||||
- name: claude-code
|
||||
display_name: "Claude Code"
|
||||
description: "..."
|
||||
category: coding-agent
|
||||
website: https://github.com/anthropics/claude-code
|
||||
install:
|
||||
type: npm
|
||||
package: "@anthropic-ai/claude-code"
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0" }
|
||||
run: claude
|
||||
tags: [anthropic, assistant]
|
||||
|
||||
profiles:
|
||||
dev:
|
||||
agent: claude-code
|
||||
env: { API_ENV: dev }
|
||||
args: [--verbose]
|
||||
|
||||
projects:
|
||||
mon-projet:
|
||||
root: ~/projets/mon-projet
|
||||
default_agent: claude-code
|
||||
env: { KEY: value }
|
||||
```
|
||||
|
||||
### Définition d'un agent (`AgentDef`)
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| `name` | Identifiant unique (slug) |
|
||||
| `display_name` | Nom lisible |
|
||||
| `description` | Description longue |
|
||||
| `category` | Catégorie (coding-agent, assistant, local-first...) |
|
||||
| `website` | URL du projet |
|
||||
| `install` | Spécification d'installation |
|
||||
| `dependencies` | Outils requis (node, python, go...) avec version min |
|
||||
| `run` | Commande de lancement |
|
||||
| `args` | Arguments par défaut |
|
||||
| `env` | Variables d'environnement par défaut |
|
||||
| `tags` | Tags pour recherche/filtrage |
|
||||
| `installable` | `false` pour les agents SaaS/Desktop |
|
||||
| `platforms` | Restriction `linux`/`macos`/`windows` |
|
||||
|
||||
### Méthodes d'installation supportées
|
||||
|
||||
| Type | Fichier | Principe |
|
||||
|------|---------|----------|
|
||||
| `npm` | `installers/npm.rs` | `npm install -g --prefix <root>` |
|
||||
| `bun` | `installers/npm.rs` | `bun install -g` |
|
||||
| `pip` / `uv` | `installers/pipuv.rs` | virtualenv privé dans `install_dir` |
|
||||
| `cargo` | `installers/cargo.rs` | `cargo install --root` |
|
||||
| `go` | `installers/golang.rs` | `go install` avec `GOBIN` local |
|
||||
| `curl` | `installers/script.rs` | Télécharge et exécute un script |
|
||||
| `binary` | `installers/binary.rs` | Release GitHub/Gitea → extraction archive |
|
||||
| `git` | `installers/git.rs` | Clone + build + `binary_path` |
|
||||
|
||||
---
|
||||
|
||||
## 💾 Gestion des états
|
||||
|
||||
### `state.json` — base d'installation locale
|
||||
|
||||
Format JSON version 3, atomique (écriture `.tmp` + `rename`).
|
||||
|
||||
```json
|
||||
{
|
||||
"version": 3,
|
||||
"installed": {
|
||||
"jcode": {
|
||||
"name": "jcode",
|
||||
"version": "0.76.0",
|
||||
"method": "binary",
|
||||
"directory": ".../agents/jcode",
|
||||
"binaries": ["jcode"],
|
||||
"pid": null,
|
||||
"installed_at": "...",
|
||||
"updated_at": "..."
|
||||
}
|
||||
},
|
||||
"annotations": {
|
||||
"jcode": {
|
||||
"favorite": true,
|
||||
"note": "mon agent préféré",
|
||||
"tags": ["perso"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Journal d'événements JSONL
|
||||
|
||||
- Un fichier par mois : `events-YYYYMM.jsonl`
|
||||
- Append-only, horodaté
|
||||
- Types d'événements : `start`, `stop`, `run`, `install`, `update`, `uninstall`, `doctor`, `config`, `repl`, `shell`, `annotate`
|
||||
- Les secrets ne sont jamais journalisés
|
||||
- Source de vérité pour les statistiques, sessions, projets et timeline
|
||||
|
||||
### Cache de sondes
|
||||
|
||||
`probe-cache.json` évite de re-scanner le PATH à chaque commande pour détecter les agents externes et leurs versions.
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ Gestion des dépendances
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
INSTALL["am install jcode"] --> CHECK["deps::check_dep"]
|
||||
CHECK --> MISSING{Manquant ?}
|
||||
MISSING -->|Oui| DETECT["toolchain::detect OS"]
|
||||
DETECT --> COMMANDS["toolchain::install_commands"]
|
||||
COMMANDS --> PROMPT["Proposer la commande"]
|
||||
PROMPT --> AUTO["Exécuter si --yes"]
|
||||
AUTO --> INSTALL2["installers::run_install"]
|
||||
MISSING -->|Non| INSTALL2
|
||||
```
|
||||
|
||||
- `deps.rs` vérifie chaque dépendance via `<outil> --version`
|
||||
- `toolchain.rs` détecte l'OS et le gestionnaire de paquets :
|
||||
- Windows : `scoop` → `winget`
|
||||
- Linux : `apt` / `dnf` / `pacman` / `apk`
|
||||
- macOS : `brew`
|
||||
- Si `auto_install_deps: true`, `am` propose et peut exécuter la commande d'installation
|
||||
- Les dépendances de l'agent (modules npm/pip) restent isolées dans le répertoire `install_dir`
|
||||
|
||||
---
|
||||
|
||||
## ⚡ Gestion des processus
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
START["am start <agent>"] --> MODE{Mode ?}
|
||||
MODE -->|Foreground| FG["Attache au terminal<br/>Ctrl-C pour quitter"]
|
||||
MODE -->|Background| BG["spawn_background()"]
|
||||
BG --> LOG["Redirection stdout/stderr<br/>vers log agent"]
|
||||
LOG --> PID["Enregistrement PID<br/>dans state.json"]
|
||||
PID --> EVENT["Émission événement start"]
|
||||
|
||||
STOP["am stop <agent>"] --> SIGTERM["SIGTERM"]
|
||||
SIGTERM --> WAIT{"Processus terminé ?"}
|
||||
WAIT -->|Non| SIGKILL["SIGKILL après timeout"]
|
||||
WAIT -->|Oui| CLEAN["PID effacé"]
|
||||
```
|
||||
|
||||
- Démarrage avant-plan (`-f`) ou arrière-plan (`-b`, `--background`)
|
||||
- Variables d'environnement injectées via `--env KEY=VALUE`
|
||||
- Secrets via `--env KEY=@secret` (résolu depuis le trousseau OS)
|
||||
- Arrêt gracieux avec timeout configurable (défaut 5 s)
|
||||
- Notifications desktop optionnelles (`--notify`)
|
||||
|
||||
---
|
||||
|
||||
## 📋 Commandes détaillées
|
||||
|
||||
### 🔍 Découvrir
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am list` | Agents installés + détectés sur le PATH |
|
||||
| `am list --all` | Tout le catalogue avec état |
|
||||
| `am search <mot>` | Recherche fuzzy avec suggestions |
|
||||
| `am info <agent>` | Fiche détaillée |
|
||||
| `am status [agent]` | État, version, PID, logs |
|
||||
|
||||
### 📦 Cycle de vie
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am install <agent>` | Installe un agent et ses dépendances |
|
||||
| `am install <agent> --method pip` | Choisit la méthode |
|
||||
| `am uninstall <agent> [--purge]` | Désinstalle et nettoie |
|
||||
| `am update <agent>` / `--all` | Met à jour |
|
||||
| `am start [agent]` | Lance en avant-plan |
|
||||
| `am start <agent> -b` | Lance en arrière-plan |
|
||||
| `am stop <agent>` | Arrêt gracieux |
|
||||
| `am restart <agent>` | Redémarrage |
|
||||
| `am run <agent> [args...]` | Exécution directe sans gestion de PID |
|
||||
|
||||
### 👁️ Observer
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am logs <agent>` | Tail du log agent |
|
||||
| `am log [agent]` | Journal des événements `am` |
|
||||
| `am timeline` | Vue chronologique unifiée |
|
||||
| `am sessions [agent]` | Registre des sessions |
|
||||
| `am stats [agent] --period 7d` | Statistiques d'utilisation |
|
||||
| `am top --period 30d` | Top 10 agents |
|
||||
| `am report --last-week` | Rapport markdown |
|
||||
| `am projects [nom]` | Agents par projet |
|
||||
| `am dashboard` | Dashboard TUI temps réel |
|
||||
| `am watch <agent> --restart` | Supervision et relance automatique |
|
||||
|
||||
### 🎯 Personnaliser
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am favorite <agent>` | Marquer comme favori |
|
||||
| `am note <agent> <texte>` | Ajouter une note |
|
||||
| `am tag <agent> <tag>` | Taguer |
|
||||
| `am tags [agent]` | Lister les tags |
|
||||
| `am profile list/show <name>` | Profils d'environnement |
|
||||
| `am alias add <nom> <cible>` | Créer un alias |
|
||||
| `am secret set <nom> --agent <a> --value <v>` | Secret dans le trousseau |
|
||||
|
||||
### 🛠️ Système
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am doctor [--fix]` | Diagnostic environnement |
|
||||
| `am config show/path/edit/validate/set` | Gestion config |
|
||||
| `am completion <shell>` | Script de complétion |
|
||||
| `am man [commande]` | Page de manuel |
|
||||
| `am open <agent>` | Ouvrir le répertoire d'installation |
|
||||
| `am export/import` | Sauvegarde/restauration |
|
||||
| `am self-update [--check]` | Mise à jour de `am` |
|
||||
| `am self-uninstall` | Désinstallation complète |
|
||||
| `am version` | Version et build |
|
||||
| `am` (sans commande) | REPL interactif |
|
||||
|
||||
### 🤖 Copilote & plateforme (v0.7.0 / v1.0)
|
||||
|
||||
| Commande | Description |
|
||||
|----------|-------------|
|
||||
| `am ask "<demande>"` | Langage naturel → commande(s) am : règles locales FR/EN hors-ligne, raffinement LLM optionnel (`settings.ask`), confirmation avant exécution |
|
||||
| `am providers list/add/remove/set-token` | Registre LLM centralisé (base_url, modèles, clé par provider au keyring, résolution `@secret`) |
|
||||
| `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 "<prompt>" [--exec] [--files <path>]` | **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 <f>` | 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) |
|
||||
| `am schedule add/list/remove/run` | Planification de commandes am (cron / Task Scheduler, issue #56) |
|
||||
| `am service install <agent>` | Service système (systemd / launchd / tâche Windows, autostart) |
|
||||
| `am monitor [--json]` | TUI temps réel des processus gérés (CPU/RSS/uptime) + alertes de seuils |
|
||||
| `am models [--prune]` | Inventaire des modèles locaux (ollama, llama.cpp, LM Studio) |
|
||||
| `am audit` | Qui a modifié quoi, quand (checksums config + journal) |
|
||||
| `am plugins [--test <nom>]` | Scripts d'extension sur les événements (contrat JSON stdin/stdout) |
|
||||
|
||||
---
|
||||
|
||||
## 🌐 Options globales
|
||||
|
||||
Disponibles avant ou après la sous-commande.
|
||||
|
||||
| Option | Effet |
|
||||
|--------|-------|
|
||||
| `-c, --config <FILE>` | Fichier de configuration alternatif |
|
||||
| `-v, --verbose` | Affiche chaque commande exécutée |
|
||||
| `-q, --quiet` | Seules les erreurs sont affichées |
|
||||
| `-y, --yes` | Oui à toutes les confirmations |
|
||||
| `--dry-run` | Simulation sans modification |
|
||||
| `--json` | Sortie JSON structurée |
|
||||
| `--no-color` | Désactive les couleurs |
|
||||
| `--theme <THEME>` | Thème de couleur |
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Fonctionnalités avancées
|
||||
|
||||
### Alias
|
||||
|
||||
```yaml
|
||||
aliases:
|
||||
cc: claude-code
|
||||
gemini: gemini-cli
|
||||
```
|
||||
|
||||
`am start cc` démarre `claude-code`.
|
||||
|
||||
### Groupes
|
||||
|
||||
```yaml
|
||||
groups:
|
||||
dev: [claude-code, aider, codex]
|
||||
```
|
||||
|
||||
`am start group:dev` démarre tous les agents du groupe en arrière-plan.
|
||||
|
||||
### Profils d'environnement
|
||||
|
||||
```yaml
|
||||
profiles:
|
||||
dev:
|
||||
agent: claude-code
|
||||
env: { API_ENV: dev }
|
||||
args: [--verbose]
|
||||
```
|
||||
|
||||
`am start --profile dev` lance `claude-code` avec les variables et arguments du profil.
|
||||
|
||||
### Projets
|
||||
|
||||
```yaml
|
||||
projects:
|
||||
mon-projet:
|
||||
root: ~/projets/mon-projet
|
||||
default_agent: claude-code
|
||||
```
|
||||
|
||||
Dans le répertoire du projet, `am start` sans argument lance l'agent par défaut du projet.
|
||||
|
||||
### Secrets
|
||||
|
||||
Les secrets sont stockés dans le trousseau du système d'exploitation (via `keyring`), jamais en clair dans la config.
|
||||
|
||||
```bash
|
||||
am secret set OPENAI_API_KEY --agent claude-code --value sk-...
|
||||
am start claude-code --env OPENAI_API_KEY=@secret
|
||||
```
|
||||
|
||||
### Hooks
|
||||
|
||||
Commandes exécutées automatiquement aux étapes clés du cycle de vie :
|
||||
|
||||
- `on_install`
|
||||
- `on_start`
|
||||
- `on_stop`
|
||||
- `on_update`
|
||||
|
||||
Définissables globalement dans `settings.hooks` ou par projet.
|
||||
|
||||
### Shell interactif (REPL)
|
||||
|
||||
Lancé par `am` sans sous-commande :
|
||||
|
||||
- Complétion Tab personnalisée (commandes, agents, alias, groupes, flags, shells, thèmes)
|
||||
- Historique des commandes
|
||||
- Passerelle système : commandes inconnues exécutées dans le shell actif
|
||||
- Commandes internes : `ls`, `dir`, `cd`, `ps`, `where`, `get`, `shell`, `theme`, `exit`, `/help`
|
||||
- Bannière ASCII art
|
||||
|
||||
---
|
||||
|
||||
## 📊 Dashboard TUI
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
DASH["am dashboard"] --> OVER["Overview"]
|
||||
DASH --> ACT["Activité"]
|
||||
DASH --> STATS["Statistiques"]
|
||||
DASH --> SESS["Sessions"]
|
||||
DASH --> PROJ["Projets"]
|
||||
```
|
||||
|
||||
- Navigation : `Tab` / `←` / `→` pour les onglets
|
||||
- Défilement : `j` / `k` ou flèches
|
||||
- Quitter : `q`
|
||||
- Données agrégées depuis `state.json`, le journal d'événements, les sessions et les projets
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Tests
|
||||
|
||||
### Organisation
|
||||
|
||||
- **Tests unitaires** : dans chaque module `src/*.rs` sous `#[cfg(test)]`
|
||||
- **Tests d'intégration** : dans `tests/`
|
||||
|
||||
### Fichiers de tests notables
|
||||
|
||||
| Fichier | Couverture |
|
||||
|---------|------------|
|
||||
| `annotations_test.rs` | Favoris, notes, tags |
|
||||
| `config_test.rs` | Chargement/validation/fusion |
|
||||
| `dashboard_test.rs` | Dashboard |
|
||||
| `doctor_test.rs` | `am doctor` |
|
||||
| `dry_run_test.rs` | Mode `--dry-run` |
|
||||
| `events_test.rs` | Journal d'événements |
|
||||
| `history_test.rs` | Historique |
|
||||
| `process_test.rs` | Processus |
|
||||
| `profiles_test.rs` | Profils |
|
||||
| `projects_test.rs` | Projets |
|
||||
| `sessions_test.rs` | Sessions |
|
||||
| `stats_test.rs` | Statistiques |
|
||||
|
||||
Lancer les tests :
|
||||
|
||||
```bash
|
||||
cargo test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📦 Packaging et distribution
|
||||
|
||||
```
|
||||
dist/ Binaires précompilés
|
||||
├── am-linux-x86_64
|
||||
├── am-linux-aarch64
|
||||
├── am-windows-x86_64.zip
|
||||
├── am_0.4.3_amd64.deb
|
||||
└── ...
|
||||
|
||||
packaging/ Scripts de packaging
|
||||
├── deb/
|
||||
├── rpm/
|
||||
├── homebrew/
|
||||
├── scoop/
|
||||
└── winget/
|
||||
|
||||
completions/ Scripts de complétion
|
||||
├── _am zsh
|
||||
├── _am.ps1 PowerShell
|
||||
├── am.bash bash
|
||||
├── am.elv elvish
|
||||
└── am.fish fish
|
||||
|
||||
man/ Pages de manuel générées
|
||||
```
|
||||
|
||||
- `build.rs` enregistre le commit et la branche git pour `am version`
|
||||
- `scripts/build-release.ps1` construit les releases multiplateformes
|
||||
- `scripts/render-manifests.ps1` génère les manifests de packaging
|
||||
|
||||
---
|
||||
|
||||
## 🗂️️ Arborescence des données utilisateur
|
||||
|
||||
### Windows
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\agent-manager\
|
||||
├── agents\ installations
|
||||
├── logs\ logs agents
|
||||
└── state\ state.json, events-*.jsonl, probe-cache.json
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
```
|
||||
~/.local/share/agent-manager/ données
|
||||
~/.local/state/agent-manager/ logs, state, events, cache
|
||||
~/.config/agent-manager/ config.yaml
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
```
|
||||
~/Library/Application Support/agent-manager/ données
|
||||
~/.local/state/agent-manager/ logs, state, events, cache
|
||||
~/.config/agent-manager/ config.yaml
|
||||
```
|
||||
|
||||
Variables d'environnement de débogage/test :
|
||||
|
||||
- `AGENT_MANAGER_DATA` : remplace le répertoire de données
|
||||
- `AGENT_MANAGER_STATE` : remplace le répertoire d'état
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- Mode `--dry-run` universel pour simuler sans modifier
|
||||
- Checksums `sha256` pour les binaires téléchargés
|
||||
- Confirmation avant exécution des scripts d'installation
|
||||
- Secrets dans le trousseau OS, jamais dans les logs ni le journal
|
||||
- Installation isolée : aucune modification système
|
||||
|
||||
---
|
||||
|
||||
## 🔁 Résumé du flux de données
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
CONFIG["📄 YAML config"] --> CATALOG["📚 Catalog"]
|
||||
CATALOG --> INSTALL["📦 Installateurs"]
|
||||
INSTALL --> STATE["💾 state.json"]
|
||||
STATE --> PROCESS["⚙️ Processus"]
|
||||
PROCESS --> EVENTS["📝 Journal JSONL"]
|
||||
EVENTS --> STATS["📊 Stats / Dashboard"]
|
||||
EVENTS --> SESSIONS["📅 Sessions"]
|
||||
EVENTS --> PROJECTS["🗂️️ Projets"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 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
|
||||
- `src/cli.rs:24` : options globales
|
||||
- `src/cli.rs:61` : énumération des commandes
|
||||
- `src/app.rs:16` : struct `App`
|
||||
- `src/config.rs:25` : struct `Config`
|
||||
- `src/config.rs:148` : struct `AgentDef`
|
||||
- `src/config.rs:241` : enum `InstallType`
|
||||
- `src/state.rs:12` : struct `StateFile`
|
||||
- `src/events.rs:57` : struct `Event`
|
||||
- `README.md` : documentation utilisateur complète
|
||||
|
||||
---
|
||||
|
||||
*Document généré pour agent-manager v0.4.3* 🚀
|
||||
Generated
+1477
-51
File diff suppressed because it is too large
Load Diff
+12
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "agent-manager"
|
||||
version = "0.2.11"
|
||||
version = "1.1.4"
|
||||
edition = "2021"
|
||||
description = "Manage local AI coding agents: list, install, start, stop, update — with automatic dependency handling and a YAML-driven catalog."
|
||||
license = "MIT"
|
||||
@@ -25,15 +25,25 @@ semver = "1"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
serde_yaml = "0.9"
|
||||
rustyline = { version = "14", default-features = false, features = ["with-file-history"] }
|
||||
reedline = "0.49"
|
||||
nu-ansi-term = "0.50"
|
||||
sha2 = "0.10"
|
||||
shell-words = "1"
|
||||
tar = "0.4"
|
||||
tempfile = "3"
|
||||
tiny_http = "0.12"
|
||||
sha1 = "0.10"
|
||||
base64 = "0.22"
|
||||
toml = "0.8"
|
||||
ureq = { version = "2", default-features = false, features = ["tls"] }
|
||||
wait-timeout = "0.2"
|
||||
keyring = { version = "3", features = ["windows-native", "linux-native"] }
|
||||
rpassword = "7"
|
||||
which = "7"
|
||||
zip = "0.6"
|
||||
crossterm = "0.29"
|
||||
ratatui = "0.30"
|
||||
clap_mangen = "0.3"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
windows-sys = { version = "0.52", features = ["Win32_Foundation", "Win32_System_Threading", "Win32_System_ProcessStatus", "Win32_System_Diagnostics_ToolHelp", "Win32_System_Console"] }
|
||||
|
||||
+96
@@ -285,3 +285,99 @@ avec purge.
|
||||
$ am uninstall cowsay --purge --yes
|
||||
removed 'cowsay' from .../cowsay.yaml (backup: .../cowsay.yaml.bak)
|
||||
uninstalled Cowsay (files removed, config purged)
|
||||
|
||||
## Favoris, notes et tags personnels (v0.4.1)
|
||||
|
||||
$ am favorite claude-code
|
||||
⭐ claude-code added to favorites
|
||||
|
||||
$ am note claude-code use sonnet for this repo
|
||||
note saved for 'claude-code'
|
||||
|
||||
$ am tag claude-code python frontend
|
||||
tagged 'claude-code' with python, frontend
|
||||
|
||||
$ am tags
|
||||
┌───┬────────────┬───────┬─────────────┐
|
||||
│ # │ TAG │ COUNT │ AGENTS │
|
||||
├───┼────────────┼───────┼─────────────┤
|
||||
│ 0 │ #frontend │ 1 │ claude-code │
|
||||
│ 1 │ #python │ 1 │ claude-code │
|
||||
└───┴────────────┴───────┴─────────────┘
|
||||
|
||||
L'étoile apparaît dans am list, am status et am info ; les tags sont
|
||||
filtrables avec am search --tag, et tout survit au redémarrage (état v3) :
|
||||
|
||||
$ am info claude-code | tail
|
||||
tags anthropic · assistant · source-available · mainstream
|
||||
personal
|
||||
● favorite ★
|
||||
● tags #frontend #python
|
||||
● note use sonnet for this repo
|
||||
|
||||
$ am search --tag python
|
||||
┌───┬──────────────────────────┬──────────────┬─────────────┬─────────────┐
|
||||
│ # │ NAME │ CATEGORY │ INSTALLABLE │ DESCRIPTION │
|
||||
├───┼──────────────────────────┼──────────────┼─────────────┼─────────────┤
|
||||
│ 0 │ ★ Claude Code │ coding-agent │ yes │ Agent termi… │
|
||||
└───┴──────────────────────────┴──────────────┴─────────────┴─────────────┘
|
||||
|
||||
## Profils d'environnement (v0.4.1)
|
||||
|
||||
Des profils nommés dans la configuration (env + args + agent par défaut)
|
||||
s'appliquent au lancement :
|
||||
|
||||
profiles:
|
||||
dev:
|
||||
agent: claude-code
|
||||
env: {DEBUG: "1", LOG_LEVEL: debug}
|
||||
args: [--model, sonnet]
|
||||
prod:
|
||||
env: {LOG_LEVEL: info}
|
||||
|
||||
$ am profile list
|
||||
PROFILE AGENT ENV ARGS
|
||||
------- ----------- --------------------- ----------------
|
||||
dev claude-code DEBUG=1 LOG_LEVEL=… --model sonnet
|
||||
prod — LOG_LEVEL=info —
|
||||
|
||||
$ am start claude-code --profile dev
|
||||
# lance claude --model sonnet avec DEBUG=1 et LOG_LEVEL=debug
|
||||
|
||||
$ am start --profile dev # agent par défaut du profil
|
||||
$ am start --profile staging # -> error: unknown profile 'staging' — …
|
||||
# available profiles: dev, prod
|
||||
|
||||
## Dashboard TUI (v0.4.1)
|
||||
|
||||
am dashboard ouvre un tableau de bord temps réel (ratatui/crossterm, aucune
|
||||
dépendance runtime) : vue d'ensemble (statuts, PID, uptime, ★), activité
|
||||
(journal d'événements), stats par agent, sessions et projets. Tab / ← / →
|
||||
changent d'onglet, j/k défilent, q quitte ; rafraîchissement chaque seconde.
|
||||
Sur une sortie non interactive (pipe, script), un instantané texte est
|
||||
affiché à la place :
|
||||
|
||||
$ am dashboard | head
|
||||
agent-manager dashboard — 2 installed · 1 running · 12 sessions
|
||||
|
||||
overview
|
||||
★ claude-code running 2.1.233 pid 4242 (up 3h12m)
|
||||
aider installed 0.76.0 —
|
||||
codex external — —
|
||||
|
||||
$ am dashboard --json # l'instantané complet en JSON pour les scripts
|
||||
|
||||
## Pages de manuel et complétions dynamiques (v0.4.1)
|
||||
|
||||
$ am man dashboard
|
||||
.TH am-dashboard 1 "dashboard "
|
||||
.SH NAME
|
||||
dashboard - Live TUI dashboard: overview, activity, stats, sessions, projects
|
||||
...
|
||||
|
||||
$ am man --output man/ # am.1 + une page par commande (44 pages)
|
||||
man pages written to man/ (am.1 + 44 pages)
|
||||
|
||||
$ am completion bash --installed # Tab complète dynamiquement les
|
||||
# agents installés, alias et groupes
|
||||
# (interroge 'am _agents --installed')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 🚀 agent-manager — vos agents IA, gérés comme des apps
|
||||
|
||||
**am** liste, installe, démarre, met à jour et désinstalle vos agents IA de
|
||||
coding (Claude Code, Codex, Aider, jcode, Prime Agent… **72 agents connus**)
|
||||
coding (Claude Code, Codex, Aider, jcode, Prime Agent… **77 agents connus**)
|
||||
en une ligne de commande — avec la gestion des dépendances (Node.js, Python,
|
||||
Go, Rust…) prise en charge pour vous.
|
||||
|
||||
@@ -11,7 +11,7 @@ Go, Rust…) prise en charge pour vous.
|
||||
|
||||
## ✨ Pourquoi am ?
|
||||
|
||||
- 🗂️ **Catalogue de 72 agents prêts à l'emploi** — descriptions, méthodes
|
||||
- 🗂️ **Catalogue de 77 agents prêts à l'emploi** — descriptions, méthodes
|
||||
d'installation, dépendances et commandes de démarrage déjà configurées.
|
||||
- 📦 **9 méthodes d'installation** — npm, pip, uv, cargo, go, bun, script
|
||||
d'installation, binaire (GitHub Releases/Gitea) et dépôt git — toujours
|
||||
@@ -48,6 +48,32 @@ plateforme, il compile automatiquement depuis les sources.
|
||||
|
||||
> 🔄 **Mise à jour** : relancez simplement la même commande.
|
||||
|
||||
### 🚀 Premier lancement (onboarding v1.1.0)
|
||||
|
||||
Au premier lancement (ou dès que vous tapez `am ai` / `am ask` sans
|
||||
provider configuré), `am` vous propose le wizard d'onboarding :
|
||||
|
||||
am setup
|
||||
|
||||
Il vous guide en 3 étapes :
|
||||
1. **Provider** : anthropic, openai, deepseek, google, ollama (local) ou
|
||||
custom (base URL).
|
||||
2. **Token API** : saisie masquée, stockée dans le trousseau OS (keyring)
|
||||
— jamais écrite en clair dans la config.
|
||||
3. **Modèle par défaut** : choisi parmi les modèles déclarés du provider.
|
||||
|
||||
Le wizard installe ensuite **aichat** (le moteur de `am ai`) si vous
|
||||
acceptez, et génère **6 rôles copilot** pour aichat (`am setup --roles`
|
||||
pour les régénérer) :
|
||||
|
||||
| Rôle | Rôle |
|
||||
|---|---|
|
||||
| `am-copilot` — guide & catalogue am | `am-dev` — code, git, tests |
|
||||
| `am-operator` — shell sécurisé | `am-analyst` — coûts, logs, stats |
|
||||
| `am-do` — exécution pure pour `--exec` | `am-orchestrator` — groupes, lab |
|
||||
|
||||
Utilisation : `am ai --role am-operator "compresse les fichiers JSON"`.
|
||||
|
||||
---
|
||||
|
||||
## 🎬 Vos 3 premières commandes
|
||||
@@ -76,9 +102,31 @@ plateforme, il compile automatiquement depuis les sources.
|
||||
|----------|------|
|
||||
| am list | agents installés (gérés + détectés sur le PATH) |
|
||||
| am list --all | tout le catalogue, avec l'état de chacun |
|
||||
| am search <mot-clé> | recherche par nom, description, catégorie, tag |
|
||||
| am search <mot-clé> | recherche fuzzy : tolère les fautes de frappe, classe par pertinence, propose « vouliez-vous dire » |
|
||||
| am suggest <requête> | recommande un agent pour une demande en langage naturel (tags + usage réel) |
|
||||
| am ask "<demande>" | langage naturel → commande(s) am : règles locales hors-ligne, raffinement LLM optionnel (settings.ask), confirmation avant exécution — ex: am ask "installe claude et lance-le" |
|
||||
| am ai "<demande>" [--exec] [--files <path>] [--role <rôle>] | langage naturel → action shell via AIChat (alias: am shell) : conversationnel par défaut ; --exec génère la commande, la classe safe/risky et applique la politique de sécurité (settings.shell_ai, dry-run par défaut — --yes pour exécuter) ; --role = rôle copilot am-* (am setup) |
|
||||
| am setup [--roles] | wizard d'onboarding : provider, token (trousseau OS), modèle par défaut, installation d'aichat + rôles copilot (v1.1.0) |
|
||||
| am info <agent> | fiche détaillée (installation, dépendances, site…) |
|
||||
| am status [agent] | état, version, PID, logs |
|
||||
| am models | inventaire des modèles locaux (ollama, llama.cpp, LM Studio) |
|
||||
| am models --prune | purge des modèles inutilisés (--dry-run : simulation) |
|
||||
| am providers list / add / set-token | registre LLM centralisé : base_url, modèles par provider, clé dans le trousseau (jamais en clair, résolue via @secret) |
|
||||
| am catalog update / add <url> | catalogue distant : rafraîchit l'officiel ou ajoute un catalogue d'équipe |
|
||||
| am registry publish/search/install | registre communautaire de catalogues (Gitea) : publication, recherche, installation avec checksum sha256 vérifié et décision de confiance explicite |
|
||||
| am audit | qui a modifié quoi, quand (checksums config + journal) |
|
||||
| am sessions --export <id> | export d'une session (métadonnées + commandes + extrait de log) |
|
||||
| am sessions --retention <jours> | purge des sessions terminées au-delà de N jours |
|
||||
| am init --template <stack> | génère une config pré-remplie (web, python, rust, cli) |
|
||||
| am doctor --watch <s> | vérifications périodiques de l'environnement + alerte en cas de panne |
|
||||
| am monitor [--json] | TUI temps réel des processus gérés (CPU/RSS/uptime) + alertes de seuils |
|
||||
| am stats --costs | coût estimé par agent (tokens in/out, $) — modèles de prix configurables |
|
||||
| am sync [--message <m>] | sauvegarde git de l'état (state.json, journal, historique) — secrets exclus |
|
||||
| am migrate export/import | bundle de transfert machine A → B (config + état + historique + backups) |
|
||||
| am service install <agent> --autostart | service système (systemd / launchd / tâche Windows) + démarrage auto |
|
||||
| am schedule add <cmd...> --at HH:MM | planifie une commande am (ex: update --all) ; list / remove / run |
|
||||
| am start group:dev --parallel | orchestration de groupes : ordre, --parallel, attente de santé (healthcheck) |
|
||||
| am run <agent> --container | exécute l'agent dans son profil conteneur (docker/podman) |
|
||||
|
||||
**Statuts** : 🟢 running · 🔵 installed (géré par am) · 🟡 external (trouvé
|
||||
sur le PATH) · ⚪ not-installed · 🔴 not-installable (SaaS/desktop)
|
||||
@@ -90,27 +138,107 @@ sur le PATH) · ⚪ not-installed · 🔴 not-installable (SaaS/desktop)
|
||||
| am install <agent> | installe (dépendances vérifiées et proposées) |
|
||||
| am install <agent> --method pip | choisit une méthode d'installation |
|
||||
| am update <agent> | met à jour vers la dernière version connue |
|
||||
| am config set settings.default_shell pwsh | modifie la configuration sans éditeur |
|
||||
| am alias add cc claude-code | raccourci pour un agent (list / remove aussi) |
|
||||
| am init | génère un agent-manager.yaml selon la pile du projet (Node/Rust/Python…) |
|
||||
| am uninstall <agent> | 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/<agent>/` | `~/.local/share/agent-manager/bin/` | `~/.local/state/agent-manager/state.json` | `~/.config/agent-manager/config.yaml` |
|
||||
| macOS | `~/Library/Application Support/agent-manager/agents/<agent>/` | `~/Library/Application Support/agent-manager/bin/` | `~/Library/Application Support/agent-manager/state.json` | `~/.config/agent-manager/config.yaml` |
|
||||
| Windows | `%LOCALAPPDATA%\agent-manager\agents\<agent>\` | `%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 <agent>`)
|
||||
|
||||
1. **Résolution du catalogue** — `am` fusionne le catalogue embarqué (77 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 <nom>` 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 <root> <package>` | binaires dans `<root>/bin/`, liens ou copie dans `bin/` |
|
||||
| `bun` | `BUN_INSTALL=<root> bun install -g <package>` | binaires dans `<root>/bin/`, shims dans `bin/` |
|
||||
| `pip` | `python -m venv <root>/venv` puis `<venv>/bin/pip install --upgrade <package>` | exécutables dans `<root>/venv/bin/` |
|
||||
| `uv` | `uv venv --python 3.13 <root>/venv` puis `uv pip install --python <venv>/bin/python <package>` | exécutables dans `<root>/venv/bin/` |
|
||||
| `cargo` | `cargo install --root <root> <crate>` | binaires dans `<root>/bin/` |
|
||||
| `go` | `GOBIN=<bindir> go install <module>@latest` | binaire directement dans `bin/` |
|
||||
| `curl` | télécharge le script, l'affiche en `--verbose`, puis l'exécute avec `sh <script>` dans `<root>/` | le script gère son propre déploiement ; `am` repère les binaires résultants |
|
||||
| `binary` | télécharge un asset release (`url` ou `repo`), vérifie le `sha256` si fourni, extrait dans `<root>/dist/`, copie dans `bin/` | binaire unique dans `bin/` |
|
||||
| `git` | `git clone --depth 1 <repo> <root>/repo`, exécute les commandes `build`, puis copie `binary_path` dans `bin/` ou crée un shim | `bin/<agent>` ou shim |
|
||||
|
||||
5. **Post-installation** — `am` exécute les commandes `post_install` déclarées dans la fiche, avec `<bindir>` en tête du `PATH`.
|
||||
6. **Détection de version** — `am` lance `<binaire> --version` (puis `-V`) pour enregistrer la version réelle.
|
||||
7. **Enregistrement** — une entrée est écrite dans `state.json` (`name`, `version`, `method`, `install_dir`, `bins`, `run`, `installed_at`, `pid`, etc.).
|
||||
|
||||
#### Cycle de gestion (`am start / stop / update / uninstall`)
|
||||
|
||||
- **Démarrage** — `am start <agent>` lit `state.json` pour retrouver le binaire et la commande `run` configurée. En arrière-plan (`--background`), le PID est enregistré dans `state.json` et la sortie est redirigée vers `<log_dir>/<agent>.log`.
|
||||
- **Arrêt** — `am stop` envoie `SIGTERM`, attend `settings.stop_timeout_secs` (5 s par défaut), puis `SIGKILL` si besoin. Le PID est effacé de `state.json`.
|
||||
- **Mise à jour** — `am update <agent>` détermine la dernière version disponible (registre npm/PyPI/cargo/release), crée une sauvegarde (`am update --rollback`), réinstalle avec la même méthode et met à jour `state.json`. Les versions épinglées (`pin_version`) sont respectées.
|
||||
- **Désinstallation** — `am uninstall <agent>` arrête le processus, supprime `<root>/`, supprime les binaires de `bin/` et efface l'entrée de `state.json`. `--purge` efface aussi les logs et retire la définition du fichier de config utilisateur.
|
||||
|
||||
### 🚀 Exécuter
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| am start <agent> | avant-plan (Ctrl-C pour quitter) |
|
||||
| am start <agent> --background --env KEY=VALEUR | détaché, PID et log gérés |
|
||||
| am start [agent] | avant-plan (Ctrl-C pour quitter) — sans argument, lance l'agent par défaut du projet |
|
||||
| am start <agent> --background --env KEY=VALEUR | détaché, PID et log gérés ; --env NOM=@secret injecte un secret du trousseau |
|
||||
| am stop <agent> | arrêt gracieux puis forcé (--force : immédiat) |
|
||||
| am restart <agent> | arrête puis redémarre |
|
||||
| am run <agent> [args…] | exécution directe, sans gestion de processus |
|
||||
|
||||
### 📊 Observer & retrouver
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| am stats [agent] --period 7d/30d/90d | statistiques d'utilisation : lancements, durées, échecs, barres ASCII |
|
||||
| am top --period | les 10 agents les plus utilisés |
|
||||
| am report --last-week / --last-month | digest markdown (lancements, échecs, changements, sessions) |
|
||||
| am log [agent] --kind --since --follow | journal des événements : tout ce que am a fait, en direct avec --follow |
|
||||
| am timeline --project --since | vue chronologique unifiée (journal + commandes du REPL) |
|
||||
| am projects [nom] | quel agent travaille sur quel projet (agent dominant, sessions, durées) |
|
||||
| am sessions [agent] --status --show --resume | registre des sessions + reprise d'une session arrêtée |
|
||||
| am history --search --failed --rerun N | historique des commandes (am + shell), filtrable et réexécutable |
|
||||
| am history 12..25 --save <f> · am playbook <f> | exporte une plage en playbook YAML et la rejoue pas à pas ({{var}}) |
|
||||
| am lab --agents a,b --task <f> [--parallel] [--json] | benchmark : même tâche sur plusieurs agents (durée, exit, coût) — tâches versionnables dans <state>/lab/ |
|
||||
| am plugins [--test <nom>] | scripts d'extension sur les événements (on_install/on_start/on_stop/on_update), contrat JSON stdin/stdout, timeout — exemples dans examples/plugins/ |
|
||||
| am logs <agent> --follow | tail du log d'un agent, en direct |
|
||||
| am dashboard | tableau de bord TUI temps réel : vue d'ensemble, activité, stats, sessions, projets (Tab/←/→ : onglets, j/k : défilement, q : quitter) |
|
||||
| am web [--port <p>] | dashboard web local en lecture seule (127.0.0.1) : vue d'ensemble, graphiques, sessions, événements, projets — API JSON /api/* avec les mêmes contrats que les sorties --json |
|
||||
|
||||
### 🎯 Personnaliser
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| am favorite <agent> / am unfavorite | étoile ★ dans am list, am status et am info (persistante) |
|
||||
| am note <agent> <texte…> | note libre affichée dans am info (am note <agent> : affiche) |
|
||||
| am tag <agent> <mot>… / am untag <agent> <mot> | tags personnels, filtrables avec am search --tag |
|
||||
| am tags [agent] | liste les tags personnels et les agents qui les portent |
|
||||
| am profile list / show | profils d'environnement (env + args + agent par défaut) |
|
||||
| am start <agent> --profile dev | lance un agent avec un profil ; am start --profile dev utilise l'agent du profil |
|
||||
| am man [commande] --output man/ | génère les pages de manuel (am.1 + une page par commande) |
|
||||
|
||||
### 🧰 Système
|
||||
|
||||
| Commande | Rôle |
|
||||
|----------|------|
|
||||
| am doctor | vérifie outils, config, chemins — avec commandes d'installation |
|
||||
| am doctor --fix | répare ce qui peut l'être, propose d'installer les outils manquants |
|
||||
| am config show / edit / add | gère votre configuration |
|
||||
| am completion <shell> | script de complétion (bash, zsh, fish, powershell) |
|
||||
| am watch <agent> --restart --notify | supervise un agent et le relance en cas de crash |
|
||||
| am secret set NOM --agent A --value … / list / unset | secrets dans le trousseau du système (jamais en clair) |
|
||||
| am config show / edit / add / set | gère votre configuration (hooks on_start/on_stop/… dans settings.hooks) |
|
||||
| am open <agent> | ouvre le répertoire d'installation dans l'explorateur |
|
||||
| am completion <shell> [--installed] | script de complétion (bash, zsh, fish, powershell, elvish) ; --installed complète dynamiquement les agents installés, alias et groupes |
|
||||
| am serve --token [--port <p>] | API HTTP + WebSocket authentifiée pour piloter am à distance (stats, run, start, stop, ask…) — rate limiting par IP, TLS via reverse proxy |
|
||||
| am self-update | met à jour am lui-même (si configuré) |
|
||||
| am self-uninstall | désinstalle am et tout ce qu'il a créé (confirmation) |
|
||||
| am | shell interactif : bannière, passerelle système, Tab et historique |
|
||||
@@ -157,6 +285,7 @@ Disponibles avant **ou après** la sous-commande.
|
||||
| -v, --verbose | affiche chaque commande exécutée |
|
||||
| -q, --quiet | uniquement les erreurs |
|
||||
| --no-color | désactive les couleurs |
|
||||
| --lang <fr\|en> | langue des messages : fr (défaut) ou en — AM_LANG/LANG lus sinon |
|
||||
| -c, --config <fichier> | configuration alternative |
|
||||
|
||||
---
|
||||
@@ -166,10 +295,18 @@ Disponibles avant **ou après** la sous-commande.
|
||||
am start cc # alias (cc -> claude-code)
|
||||
am start group:dev # démarre tout un groupe en arrière-plan
|
||||
am stop group:dev
|
||||
am start cc --profile dev # profil d'environnement : env + args injectés
|
||||
|
||||
am dashboard # TUI temps réel : toute l'activité d'un coup d'œil
|
||||
am web # dashboard web local (ouvre le navigateur) : http://127.0.0.1:7878/
|
||||
am favorite cc && am tag cc python # personnalisez votre parc
|
||||
am search --tag python # retrouvez les agents que vous avez tagués
|
||||
|
||||
am # shell interactif (bannière style Hermes) :
|
||||
❯ inst<Tab> # complétion Tab : commandes, agents, groupes, options
|
||||
❯ inst<Tab> # complétion Tab : commandes, agents installés, groupes, options
|
||||
❯ install jcode
|
||||
❯ dashboard # le dashboard se lance aussi depuis le REPL
|
||||
❯ web # ... et le dashboard web aussi (am web --port pour changer le port)
|
||||
❯ exit # historique persistant (flèches haut/bas)
|
||||
|
||||
### 🐚 Passerelle système
|
||||
@@ -188,16 +325,21 @@ PATH — pwsh, powershell, cmd, bash, zsh, fish, sh, nu, elvish).
|
||||
❯ ls | where size > 1mb # filtre la dernière table (>, <, >=, <=, ==, !=, =~)
|
||||
❯ ps | where name =~ am # =~ cherche dans le texte
|
||||
❯ ls | get name # sélectionne une colonne
|
||||
❯ cd <Tab> # complétion des dossiers uniquement, un niveau par Tab
|
||||
❯ cd <Tab> # complétion des dossiers — menu interactif façon Nushell
|
||||
❯ shell # affiche le shell courant + les shells disponibles
|
||||
❯ shell bash # change le shell de la session
|
||||
❯ !ls · !list # force l'exécution système (même nom qu'une commande am)
|
||||
❯ cd ~/projets # change le répertoire de la session (persistant)
|
||||
❯ /help # commandes slash : /help · /version · /exit · /shell <nom>
|
||||
|
||||
Le menu Tab affiche une **description** à côté de chaque candidat
|
||||
(commandes et agents), comme Nushell, et **cycle** entre les propositions à
|
||||
chaque Tab.
|
||||
La complétion Tab est un **menu interactif façon Nushell** : une
|
||||
correspondance unique est insérée directement ; plusieurs correspondances
|
||||
ouvrent un menu sous la ligne avec le **premier choix en surbrillance**, et
|
||||
chaque Tab déplace la surbrillance vers le choix suivant (Shift+Tab vers
|
||||
l'arrière). **Entrée** valide le choix, **Échap** ferme le menu, les flèches
|
||||
↑/↓ naviguent et continuer à taper filtre la liste en direct. Le menu
|
||||
affiche une **description** à côté de chaque candidat (commandes et agents)
|
||||
et suit la palette du thème actif.
|
||||
|
||||
Pour rendre le choix permanent : `settings.default_shell: pwsh` dans
|
||||
`config.yaml` (voir `am config path`).
|
||||
@@ -241,7 +383,7 @@ supprimez aussi ces emplacements.)
|
||||
1. --config <fichier>
|
||||
2. ./agent-manager.yaml (répertoire courant)
|
||||
3. ~/.config/agent-manager/config.yaml
|
||||
4. catalogue embarqué (72 agents)
|
||||
4. catalogue embarqué (77 agents)
|
||||
|
||||
Vos définitions **complètent ou surchargent** le catalogue par nom.
|
||||
|
||||
@@ -294,6 +436,21 @@ multi-fichiers pris en charge ; configuration validée au démarrage.
|
||||
(Windows) — l'état et les logs dans ~/.local/state/agent-manager (Linux) ou
|
||||
%LOCALAPPDATA%\\agent-manager (Windows).
|
||||
|
||||
**Où vivent les statistiques, les sessions et l'historique ?** Dans le
|
||||
répertoire d'état, au format JSON lisible et 100 % local : events-YYYYMM.jsonl
|
||||
(journal de chaque action), sessions.json (registre des sessions),
|
||||
history/ (historique structuré du shell), projects.json (agrégats par
|
||||
projet). Interrogeables avec am stats, am top, am log, am timeline,
|
||||
am projects, am sessions et am history.
|
||||
|
||||
**Où vivent les secrets ?** Dans le trousseau de votre système (Windows
|
||||
Credential Manager, macOS Keychain, Linux Secret Service) — jamais dans la
|
||||
configuration ni dans les logs. Injection avec --env NOM=@secret.
|
||||
|
||||
**Puis-je automatiser des actions ?** Oui : hooks on_install/on_start/on_stop/
|
||||
on_update dans settings.hooks (globaux) ou dans le profil d'un projet, et
|
||||
am watch pour superviser un agent avec redémarrage automatique.
|
||||
|
||||
**Comment mettre à jour am ?** Relancez l'installeur one-liner (ou
|
||||
am self-update si le dépôt de release est configuré).
|
||||
|
||||
|
||||
+81
-33
@@ -1,62 +1,110 @@
|
||||
# Publier une release
|
||||
|
||||
Les installateurs one-liner (`install.sh` et `install.ps1`) téléchargent
|
||||
les binaires attachés à la **dernière release** du dépôt Gitea
|
||||
Les installateurs one-liner (`install.sh` et `install.ps1`), la commande
|
||||
`am self-update` et les paquets (scoop/winget/homebrew) consomment les
|
||||
**artefacts attachés à la dernière release** du dépôt Gitea
|
||||
(https://git.dracodev.net/Projets/agent-manager). Sans binaire pour la
|
||||
plateforme, ils retombent sur `cargo install --git` (plus lent mais toujours
|
||||
fonctionnel).
|
||||
plateforme, les installateurs retombent sur `cargo install --git`.
|
||||
|
||||
La phase 1 (v0.4.1) a ajouté le pipeline CI (issue #42) : sur chaque tag
|
||||
`v*`, `.gitea/workflows/release.yml` construit Linux (x86_64 + aarch64
|
||||
musl statiques), Windows (x86_64) et macOS (x86_64 + aarch64) et publie la
|
||||
release. La procédure locale ci-dessous reste disponible pour produire
|
||||
manuellement les mêmes artefacts (ou les plateformes sans runner CI).
|
||||
|
||||
## 1. Bumper la version
|
||||
|
||||
Dans Cargo.toml (ex. `0.2.1`), puis mettre à jour Cargo.lock
|
||||
(`cargo check`) et compiler :
|
||||
Dans Cargo.toml (ex. `0.4.1`), puis `cargo check` pour mettre à jour
|
||||
Cargo.lock, et lancer toute la batterie :
|
||||
|
||||
cargo build --release # binaire Windows (am.exe) sur Windows
|
||||
cargo test --locked # 240+ tests
|
||||
cargo clippy --all-targets -- -D warnings # si possible
|
||||
|
||||
# binaire Linux STATIQUE (musl) : compatible toutes distributions,
|
||||
# y compris Debian 12 (glibc 2.36) — ne JAMAIS publier un binaire glibc
|
||||
# compilé sur une base récente.
|
||||
docker run --rm -v "${PWD}:/work" -w /work -e CARGO_TARGET_DIR=/tmp/target-musl \
|
||||
rust:1.94-alpine sh -c "apk add --no-cache build-base && \
|
||||
rustup target add x86_64-unknown-linux-musl && \
|
||||
cargo build --release --locked --target x86_64-unknown-linux-musl && \
|
||||
cp /tmp/target-musl/x86_64-unknown-linux-musl/release/am dist/am-linux-x86_64"
|
||||
## 2. Produire les binaires et les archives
|
||||
|
||||
## 2. Créer les archives des binaires
|
||||
### Windows (x86_64) — natif
|
||||
|
||||
Windows (PowerShell) :
|
||||
scripts/build-release.ps1 # target/release/am.exe -> dist/am-windows-x86_64.zip
|
||||
|
||||
Compress-Archive target\release\am.exe am-windows-x86_64.zip
|
||||
### Linux — binaire STATIQUE (musl), compatible toutes distributions,
|
||||
### y compris Debian 12 (glibc 2.36) — ne JAMAIS publier un binaire glibc
|
||||
### compilé sur une base récente.
|
||||
|
||||
Linux (l'archive doit contenir un fichier nommé « am ») :
|
||||
# cargo-zigbuild : zig (~50 Mo) fournit le linker croisé pour les DEUX
|
||||
# cibles musl (rust:1.94-alpine n'embarque pas de compilateur croisé
|
||||
# aarch64 : 'aarch64-linux-musl-gcc not found').
|
||||
docker run --rm -v "${PWD}:/work" -w /work -e CARGO_TARGET_DIR=/tmp/am-target \
|
||||
-e CARGO_INCREMENTAL=0 rust:1.94-alpine sh -c "apk add --no-cache build-base zip curl >/dev/null && \
|
||||
rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl && \
|
||||
curl -fsSL https://ziglang.org/download/0.14.1/zig-x86_64-linux-0.14.1.tar.xz -o /tmp/zig.tar.xz && \
|
||||
tar -xf /tmp/zig.tar.xz -C /opt && \
|
||||
export PATH=/opt/zig-x86_64-linux-0.14.1:\$PATH && \
|
||||
cargo install cargo-zigbuild --locked && \
|
||||
cargo zigbuild --release --locked --target x86_64-unknown-linux-musl --target aarch64-unknown-linux-musl && \
|
||||
mkdir -p dist && \
|
||||
cp /tmp/am-target/x86_64-unknown-linux-musl/release/am dist/am-linux-x86_64 && \
|
||||
cp /tmp/am-target/aarch64-unknown-linux-musl/release/am dist/am-linux-aarch64 && \
|
||||
cd dist && tar -czf am-linux-x86_64.tar.gz am-linux-x86_64 && \
|
||||
tar -czf am-linux-aarch64.tar.gz am-linux-aarch64"
|
||||
|
||||
docker run --rm -v "${PWD}:/work" -w /work rust:1.94-alpine sh -c \
|
||||
"cd dist && cp am-linux-x86_64 am && tar -czf am-linux-x86_64.tar.gz am && rm am"
|
||||
### macOS (x86_64 + aarch64) — via CI (runner macOS) :
|
||||
|
||||
## 3. Créer la release sur Gitea
|
||||
# le job 'macos' du workflow release.yml produit :
|
||||
# am-macos-x86_64.tar.gz am-macos-aarch64.tar.gz
|
||||
# (compilation croisée macOS impossible depuis Windows/Linux ; sans
|
||||
# runner macOS, ces archives manquent et l'install.sh compile depuis
|
||||
# les sources sur macOS, ce qui reste fonctionnel.)
|
||||
|
||||
Via l'interface web : Releases > New Release, tag v0.2.0, attacher les
|
||||
archives ci-dessus.
|
||||
Vérifier chaque archive : `am version` doit répondre, et `am doctor` ne
|
||||
doit signaler aucune dépendance manquante.
|
||||
|
||||
Ou via l'API (jeton Gitea requis) :
|
||||
## 3. Rendre les manifests de packaging (issue #42)
|
||||
|
||||
Une fois toutes les archives dans `dist/` :
|
||||
|
||||
scripts/render-manifests.ps1 -Version 0.4.3
|
||||
|
||||
Ce script rend, avec la version et les sha256 réels :
|
||||
|
||||
- `dist/scoop/am.json` → `scoop install dist/scoop/am.json`
|
||||
(ou à ajouter à un bucket ; checkver/autoupdate inclus)
|
||||
- `dist/winget/*.yaml` → à soumettre à microsoft/winget-pkgs
|
||||
(`winget install BrunoDracodev.AgentManager`)
|
||||
- `dist/homebrew/am.rb` → à servir via un tap, ou à soumettre
|
||||
- `dist/rpm/am.spec` → rpmbuild -bb (avec am-linux-x86_64.tar.gz
|
||||
dans ~/rpmbuild/SOURCES)
|
||||
- Paquet deb : `packaging/deb/make-deb.sh 0.4.3` → dist/am_0.4.3_amd64.deb
|
||||
|
||||
## 4. Créer la release sur Gitea
|
||||
|
||||
Via l'interface web : Releases > New Release, tag v0.4.3, attacher les
|
||||
archives. Ou via l'API (jeton Gitea requis) :
|
||||
|
||||
curl -X POST -H "Authorization: token <JETON>" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"tag_name":"v0.2.0","name":"v0.2.0","body":"notes de version"}' \
|
||||
-d '{"tag_name":"v0.4.3","name":"v0.4.3","body":"notes de version"}' \
|
||||
https://git.dracodev.net/api/v1/repos/Projets/agent-manager/releases
|
||||
|
||||
curl -X POST -H "Authorization: token <JETON>" \
|
||||
-F "attachment=@am-windows-x86_64.zip" \
|
||||
-F "attachment=@dist/am-windows-x86_64.zip" \
|
||||
https://git.dracodev.net/api/v1/repos/Projets/agent-manager/releases/<id>/assets?name=am-windows-x86_64.zip
|
||||
|
||||
curl -X POST -H "Authorization: token <JETON>" \
|
||||
-F "attachment=@am-linux-x86_64.tar.gz" \
|
||||
https://git.dracodev.net/api/v1/repos/Projets/agent-manager/releases/<id>/assets?name=am-linux-x86_64.tar.gz
|
||||
# idem pour am-linux-x86_64.tar.gz, am-linux-aarch64.tar.gz,
|
||||
# am-macos-x86_64.tar.gz, am-macos-aarch64.tar.gz (si CI) et
|
||||
# checksums.txt.
|
||||
|
||||
## 4. Tag git
|
||||
## 5. Tag git (déclenche aussi le pipeline CI)
|
||||
|
||||
git tag v0.2.0 && git push origin v0.2.0
|
||||
git tag v0.4.3 && git push origin v0.4.3
|
||||
|
||||
## Conventions de nommage (attendues par les installateurs et self-update)
|
||||
|
||||
Les conventions de nommage attendues par les installateurs :
|
||||
- am-windows-x86_64.zip (contient am.exe)
|
||||
- am-linux-x86_64.tar.gz (contient am)
|
||||
- am-linux-aarch64.tar.gz (contient am)
|
||||
- am-macos-x86_64.tar.gz / am-macos-aarch64.tar.gz (contiennent am)
|
||||
|
||||
## Vérification finale
|
||||
|
||||
am self-update --check # doit annoncer la nouvelle version
|
||||
am self-update # met à jour le binaire courant
|
||||
|
||||
+700
@@ -0,0 +1,700 @@
|
||||
# 🗺️ ROADMAP agent-manager — vers le « super outil »
|
||||
|
||||
> **Version du document : 3.0** · Statut : phases 0 à 3 livrées
|
||||
> (v0.3.0 → v1.0.1), maintenance v1.0.2 → v1.1.0
|
||||
> Base : analyse du code **v0.2.7** (Rust, 45+ tests, zéro dépendance runtime)
|
||||
>
|
||||
> ✅ **Phase 0 livrée en v0.3.0 (2026-08-17)** : issues #2 à #16 clôturées,
|
||||
> 157 tests, release publiée sur Gitea. Les découpages des phases 1 à 3 sont
|
||||
> en place sur Gitea (issues #25 à #80) : v0.4.0, v0.5.0, v1.0.
|
||||
>
|
||||
> ✅ **Phase 1 livrée en v0.4.1 (2026-08-17)** : 17/17 issues clôturées
|
||||
> (#26–#42), 240+ tests. v0.4.0 a livré 13/17 (#26–#32, #34–#38) ; v0.4.1
|
||||
> complète avec le dashboard TUI (#33), les favoris/notes/tags (#39), les
|
||||
> profils d'environnement (#40), les complétions dynamiques + man pages
|
||||
> (#41) et le packaging officiel + CI (#42). Binaires Windows/Linux publiés
|
||||
> sur Gitea — am self-update et les installateurs servent la v0.4.1.
|
||||
>
|
||||
> ✅ **Phase 2 livrée en v0.6.0 (2026-08-19)** : 28/28 issues clôturées
|
||||
> (#47–#75), 250+ tests. am web, i18n, services, schedule, lab, sync,
|
||||
> migrate, models, plugins d'événements… Binaires publiés sur Gitea.
|
||||
>
|
||||
> ✅ **Phase v0.7.0 livrée (2026-08-19)** : 5/5 issues clôturées (#88–#92) —
|
||||
> registre de providers LLM (am providers), secrets partagés par provider,
|
||||
> flags --provider/--model/--no-config à l'install, configuration
|
||||
> post-install (bloc config:).
|
||||
>
|
||||
> ✅ **Phase 3 livrée en v1.0.0 (2026-08-20)** : 5/5 issues clôturées
|
||||
> (#76–#80) — télémétrie opt-in, am registry, am ask, profils sandbox,
|
||||
> am serve (API HTTP + WebSocket). v1.0.1 : self-update décompresse les
|
||||
> archives, prompt REPL avec shell actif.
|
||||
>
|
||||
> 🔧 **Maintenance v1.0.3 (2026-08-20)** : commandes REPL ask/serve/registry
|
||||
> routées vers am (v1.0.2) ; détection externe corrigée — champ `detect`
|
||||
> (sonde PATH explicite) pour les lanceurs interpréteurs (npx/python),
|
||||
> plus de faux « external » ; docs alignées.
|
||||
>
|
||||
> 🔧 **Maintenance v1.0.4 (2026-08-20)** : catalogue enrichi — 5 agents
|
||||
> **shell-ai** ajoutés (issues #94 #95) : AIChat (alias `ai`, binaire GitHub
|
||||
> Release), ShellGPT (pip), Fabric (go), Shell AI (npm/Ollama), AI CLI
|
||||
> (binaire, politique de sécurité risk/certainty). Catalogue : 77 agents.
|
||||
>
|
||||
> 🔧 **Maintenance v1.0.5 (2026-08-20)** : **commande `am ai` livrée**
|
||||
> (issues #96 #97) — langage naturel → action shell via AIChat : mode
|
||||
> conversationnel (aichat -f <ctx>), mode --exec avec pipeline de sécurité
|
||||
> (génération aichat --dry-run, classification safe/risky + certainité,
|
||||
> politique dry-run par défaut configurable settings.shell_ai, confirmation
|
||||
> y/N pour les commandes risky, exécution via le shell de l'utilisateur),
|
||||
> flags --files/--provider/--model/--yes, alias CLI `am shell`, événements
|
||||
> `shell_ai` journalisés. Épique Axe 13 (#93) clôturée.
|
||||
>
|
||||
> 🔧 **Maintenance v1.0.6 (2026-08-20)** : installateur Windows corrigé —
|
||||
> `install.ps1` n'acceptait que l'entrée `am.exe` dans l'archive de release
|
||||
> (la CI et les archives manuelles utilisent `am-windows-x86_64.exe`) →
|
||||
> repli systématique sur `cargo install` au lieu du binaire précompilé.
|
||||
> Le script accepte désormais les deux noms ; archives v1.0.6 publiées avec
|
||||
> les deux entrées pour la compatibilité maximale. Chemin du message
|
||||
> cargo install corrigé (`.cargo\bin\am.exe`).
|
||||
>
|
||||
> 🚀 **Épique v1.1.0 (2026-08-20)** : **Onboarding, Copilot & Rôles aichat**
|
||||
> (Axe 14) — `am setup` (wizard provider + token keyring + modèle + ping),
|
||||
> installation automatique d'aichat (wizard + `am ai` + installateurs),
|
||||
> 6 rôles copilot générés pour aichat (am-copilot, am-operator, am-dev,
|
||||
> am-do, am-analyst, am-orchestrator), `am ai --role <nom>`, tip
|
||||
> d'onboarding dans le banner REPL et les commandes IA (non-bloquant).
|
||||
>
|
||||
> 🔧 **Maintenance v1.1.1 (2026-08-20)** : fix `am setup` — le wizard écrivait
|
||||
> `providers.<nom>` au TOP-LEVEL de la config user (clé rejetée par le
|
||||
> validateur : « unknown field `providers` »). Le registre vivant sous
|
||||
> `settings.providers`, le wizard écrit désormais
|
||||
> `settings.providers.<nom>.base_url` + `.default_model` (le schéma exige
|
||||
> base_url quand un bloc provider est écrit). Test de régression
|
||||
> `setup_persists_under_settings_providers`.
|
||||
>
|
||||
> 🔧 **Maintenance v1.1.2 (2026-08-20)** :
|
||||
> - `am setup` : **openrouter** ajouté au choix des providers (base URL,
|
||||
> token via OPENROUTER_API_KEY, 6 modèles déclarés proposés) ;
|
||||
> le choix du modèle liste les modèles disponibles du provider.
|
||||
> - `am ai` sans `--role` utilise **am-copilot par défaut** (régénération
|
||||
> automatique des rôles si le fichier manque, dégradation douce).
|
||||
> - Bug `am migrate --import` : la config importée était écrite dans le
|
||||
> répertoire config GLOBAL (user_config_dir) au lieu du config actif de
|
||||
> l'app — l'import écrasait la config réelle de la machine (et la suite
|
||||
> de tests détruisait la config utilisateur à chaque `cargo test`).
|
||||
> L'import respecte désormais `app.paths.config_dir` (--config/isolated).
|
||||
>
|
||||
> 🔧 **Maintenance v1.1.3 (2026-08-21)** : fix `resolve_exec` — pour un
|
||||
> agent INSTALLÉ avec un binaire enregistré, le premier token de `run:`
|
||||
> (ex. `picoclaw`) n'était jamais consommé : `am start <agent>` lançait
|
||||
> `<bin> <token-run>` (picoclaw rejetait son propre nom comme
|
||||
> sous-commande inconnue ; aichat recevait « aichat » comme prompt
|
||||
> one-shot). Le token est désormais consommé dans la branche « binaire
|
||||
> enregistré existant » (les branches non-installé/binaire manquant
|
||||
> étaient déjà correctes). Test de régression
|
||||
> `resolve_exec_installed_agent_does_not_leak_run_token`.
|
||||
>
|
||||
> 🔧 **Maintenance v1.1.4 (2026-08-21)** : hints de configuration
|
||||
> post-install — nouveau champ `setup_hints` dans la définition d'un agent
|
||||
> (config.yaml) : commandes de configuration manuelle affichées après
|
||||
> l'install quand l'agent gère sa propre config (ex. picoclaw
|
||||
> onboard/model/auth), avec substitution des placeholders `{model}`,
|
||||
> `{provider}` et `{base_url}` depuis le provider résolu. picoclaw est le
|
||||
> premier agent du catalogue à les déclarer.
|
||||
|
||||
---
|
||||
|
||||
## 📖 Sommaire
|
||||
|
||||
1. [Résumé exécutif](#1--résumé-exécutif)
|
||||
2. [Légende de lecture](#2--légende-de-lecture)
|
||||
3. [Quick wins — valeur immédiate](#3--quick-wins--valeur-immédiate)
|
||||
4. [État des lieux](#4--état-des-lieux)
|
||||
5. [Vision & principes](#5--vision--principes)
|
||||
6. [Socle technique : le modèle de données](#6--socle-technique--le-modèle-de-données)
|
||||
7. [Les 12 axes](#7--les-12-axes)
|
||||
8. [Jalons versionnés](#8--jalons-versionnés)
|
||||
9. [Indicateurs de succès (KPI)](#9--indicateurs-de-succès-kpi)
|
||||
10. [Risques & garde-fous](#10--risques--garde-fous)
|
||||
11. [Par où commencer](#11--par-où-commencer)
|
||||
|
||||
---
|
||||
|
||||
## 1. 📌 Résumé exécutif
|
||||
|
||||
**am** est aujourd'hui un excellent *gestionnaire* d'agents : 77 agents au
|
||||
catalogue, 9 méthodes d'installation, dépendances résolues automatiquement,
|
||||
processus pilotés, REPL avec passerelle shell, sauvegarde export/import.
|
||||
|
||||
Mais il est **aveugle** : il ne retient ni ce qui a été fait, ni quand, ni
|
||||
par quel agent, ni dans quel projet, ni avec quel résultat. Les logs sont du
|
||||
texte libre non interrogeable, l'état ne contient que les installations et
|
||||
le PID courant, l'historique est un simple fichier plat.
|
||||
|
||||
Cette roadmap transforme **am** en **cockpit de votre parc d'agents IA** :
|
||||
|
||||
| Rôle | Promesse | Porté par |
|
||||
|---|---|---|
|
||||
| 📓 Journal de bord | tout est tracé, rien ne se perd | Axe 1 (journal d'événements) |
|
||||
| 🔎 Rétroviseur | tout est cherchable en 2 secondes | Axes 2, 3, 4 |
|
||||
| 📊 Tableau de bord | tout est mesuré | Axes 1, 5, 9 |
|
||||
| 🤖 Copilote | il pilote à votre place | Axes 6, 7 |
|
||||
|
||||
**Chiffres clés :** 12 axes · ~55 fonctionnalités · 4 jalons (v0.3.0 → v1.0)
|
||||
· ~15 semaines de travail cumulé · 0 dépendance runtime ajoutée.
|
||||
|
||||
---
|
||||
|
||||
## 2. 📚 Légende de lecture
|
||||
|
||||
| Symbole | Signification |
|
||||
|---|---|
|
||||
| **P0** | Fondations — à démarrer tout de suite (socle des autres axes) |
|
||||
| **P1** | Court terme — après la phase 0 |
|
||||
| **P2** | Moyen terme |
|
||||
| **P3** | Vision — long terme |
|
||||
| ⭐ | Reprend une demande explicite de l'utilisateur |
|
||||
| **S** | Effort : moins d'1 jour |
|
||||
| **M** | Effort : 2 à 4 jours |
|
||||
| **L** | Effort : 1 à 2 semaines |
|
||||
| **XL** | Effort : plus de 2 semaines |
|
||||
| ⬜ / 🔨 / ✅ | Proposé / En cours / Livré (rien n'est commencé aujourd'hui) |
|
||||
|
||||
---
|
||||
|
||||
## 3. ⚡ Quick wins — valeur immédiate
|
||||
|
||||
*Tous en effort S, phase P0, sans dépendance sur le socle. Livrables en
|
||||
quelques jours, à caler avant ou pendant la construction du journal.*
|
||||
|
||||
| Fonctionnalité | Commande | Apport |
|
||||
|---|---|---|
|
||||
| Voir les logs d'un agent | am logs claude-code (--follow) | tail des logs déjà écrits par process.rs |
|
||||
| Filtres sur la liste | am list --running · --sort name,version,status | repérage instantané |
|
||||
| Éditer la config sans éditeur | am config set key value | moins de friction YAML |
|
||||
| Alias à la volée | am alias add cc claude-code | sans éditer le fichier |
|
||||
| Historique propre | dédup + horodatage de history.txt | base saine pour l'axe 2 |
|
||||
| Doctor scriptable | am doctor --json | CI et monitoring |
|
||||
| Ouvrir l'installation | am open claude-code | explorer le répertoire de l'agent |
|
||||
| Version scriptable | am version --json | introspection des scripts |
|
||||
|
||||
---
|
||||
|
||||
## 4. 🧭 État des lieux (points d'ancrage dans le code)
|
||||
|
||||
| Brique actuelle | Fichier | Limite aujourd'hui |
|
||||
|---|---|---|
|
||||
| Catalogue 77 agents, alias, groupes | src/catalog.rs, config.yaml | recherche = sous-chaîne stricte, pas de ranking |
|
||||
| Installation (9 méthodes), dépendances OS | src/installers/, src/deps.rs, src/toolchain.rs | solide — rien à redire |
|
||||
| État local | src/state.rs (state.json v1) | installations + PID courant uniquement, **aucun historique** |
|
||||
| Détection externe + cache | src/probe.rs | excellent pattern de cache — à généraliser |
|
||||
| Processus | src/process.rs | logs non structurés, pas de sessions, pas de métriques |
|
||||
| Journal applicatif | src/output.rs | texte libre horodaté, non interrogeable |
|
||||
| REPL + passerelle shell | src/repl.rs (history.txt, session_id()) | historique plat, pas de recherche ni de stats |
|
||||
| Backup | src/commands/export_import.rs | manuel, pas de synchronisation |
|
||||
|
||||
---
|
||||
|
||||
## 5. 🎯 Vision & principes directeurs
|
||||
|
||||
**Vision :** le cockpit unique du parc d'agents — journal de bord, rétroviseur,
|
||||
tableau de bord et copilote.
|
||||
|
||||
**Principes :**
|
||||
|
||||
1. **Zéro dépendance runtime** — tout est Rust pur et fichiers locaux
|
||||
(JSONL/JSON), jamais de base de données externe.
|
||||
2. **Local par défaut, opt-in pour le distant** — la télémétrie n'existe que
|
||||
si l'utilisateur l'active ; tout le reste est 100 % local.
|
||||
3. **Contrats stables** — les sorties --json sont la base des scripts et des
|
||||
futurs UI : champs ajoutés, jamais retirés.
|
||||
4. **Performance** — écriture en append (JSONL), lectures par fenêtres
|
||||
temporelles, index dérivés régénérables, caches sur le modèle de probe.rs.
|
||||
5. **Livraison continue** — chaque phase produit un binaire utilisable et
|
||||
testé ; la barre des 45+ tests monte à chaque jalon.
|
||||
|
||||
---
|
||||
|
||||
## 6. 🧱 Socle technique : le modèle de données
|
||||
|
||||
*Tout dépend de ceci. À construire en premier, avant les commandes visibles.*
|
||||
|
||||
state_dir/
|
||||
state.json # v2 : + sessions_count, last_used (migration auto depuis v1)
|
||||
events.jsonl # NOUVEAU — journal d'événements (source de vérité)
|
||||
events-202608.jsonl # rotation mensuelle
|
||||
sessions.json # NOUVEAU — registre des sessions (index dérivé)
|
||||
history/
|
||||
<session>.jsonl # NOUVEAU — historique structuré du REPL
|
||||
projects.json # NOUVEAU — agrégats par projet (recalculable)
|
||||
probe-cache.json # existant — pattern de cache à suivre
|
||||
|
||||
| Fichier | Rôle | Alimenté par | Reconstruction |
|
||||
|---|---|---|---|
|
||||
| events.jsonl | faits bruts (start, stop, run, install…) | process.rs, run_cmd.rs, install_cmd.rs, repl.rs, doctor_cmd.rs | source de vérité, jamais reconstruit |
|
||||
| sessions.json | index des sessions | dérivé du journal | doctor --fix (rejoue le journal) |
|
||||
| projects.json | agrégats par projet | dérivé du journal | doctor --fix |
|
||||
| history/*.jsonl | commandes REPL | repl.rs | non (données primaires) |
|
||||
| state.json v3 | installations + résumé + annotations (★, notes, tags) | state.rs | partiellement (compteurs depuis le journal) |
|
||||
|
||||
**Règles :** JSONL append-only pour les faits · JSON dérivés régénérables ·
|
||||
migration additive (state v1 reste lisible partout) · doctor --fix répare
|
||||
tout ce qui peut l'être.
|
||||
|
||||
---
|
||||
|
||||
## 7. 🗂️ Les 12 axes
|
||||
|
||||
### Axe 1 — 📊 Observabilité & statistiques d'utilisation ⭐
|
||||
|
||||
🎯 Savoir **quoi** a tourné, **quand**, **combien de temps**, avec **quel
|
||||
taux de succès** — et **combien ça coûte**.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Journal d'événements events.jsonl (toutes les actions de am) | M | P0 |
|
||||
| am stats + --period 7d/30d/90d + --json (tableaux et barres ASCII) | M | P0 |
|
||||
| am top — classement des agents par utilisation | S | P1 |
|
||||
| am log — filtres agent/type/date, --follow | S → M | P0 → P1 |
|
||||
| am report — rapport hebdo/mensuel en markdown (top agents, échecs, changements) | M | P1 |
|
||||
| Suivi des coûts — tokens/€ par session quand l'agent expose son usage (Claude Code --output-format json, Codex…) ✅ #49 | M | P2 |
|
||||
| am monitor — TUI temps réel : CPU/mémoire par PID, uptime, alertes ✅ #50 | L | P2 |
|
||||
| Télémétrie anonyme **opt-in** (compteurs agrégés uniquement, jamais de chemins) | M | P3 |
|
||||
|
||||
am stats # vue globale
|
||||
am stats claude-code --period 30d
|
||||
am top # qui tourne le plus
|
||||
am report --last-week # digest markdown
|
||||
|
||||
### Axe 2 — 💾 Historique des commandes ⭐
|
||||
|
||||
🎯 Gérer, **rechercher** et **réutiliser** tout ce qui a été tapé.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Historique structuré : history/<session>.jsonl (cmd, kind am/shell, cwd, durée, exit, agent) + migration de history.txt | M | P0 |
|
||||
| am history — filtres --kind, --cwd, --search, --failed, --session | M | P0 |
|
||||
| Ctrl-R + !! + !install + !42 + ^old^new dans le REPL | M | P1 |
|
||||
| am history --rerun 42 (réexécution confirmée) | S | P1 |
|
||||
| Playbooks : am history 12..25 --save deploy.yaml puis am playbook deploy.yaml ✅ #51 | L | P2 |
|
||||
|
||||
am history --search "install" --failed
|
||||
am history --rerun 42
|
||||
|
||||
### Axe 3 — 🧭 Projets & workspaces ⭐
|
||||
|
||||
🎯 Centraliser **quel agent travaille sur quel projet** — automatiquement.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Contexte auto au lancement : racine + branche git, stack détectée (Cargo.toml, package.json…), mis en cache | S | P0 |
|
||||
| am projects / am projects api — agents, sessions, durées, dernière activité | M | P1 |
|
||||
| Profils de projet dans config : default_agent, env, hooks | M | P1 |
|
||||
| am start (sans argument) = agent par défaut du dossier courant ; REPL contextuel | S | P1 |
|
||||
| am init — génère un agent-manager.yaml selon la stack détectée | S → M | P0 |
|
||||
| Templates : am init --template web | M | P2 |
|
||||
|
||||
am projects
|
||||
am projects api
|
||||
am init # dans un projet Node → config pré-remplie
|
||||
|
||||
### Axe 4 — 🗂️ Sessions centralisées ⭐
|
||||
|
||||
🎯 Un registre unique de **toutes les sessions de tous les agents** —
|
||||
consultable, reprenable, archivable.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| sessions.json + session_id() partagé (repl.rs) ; fin de session avec exit code et durée | M | P0 |
|
||||
| Réconciliation au démarrage : sessions interrompues (crash, reboot) marquées et datées | S | P0 |
|
||||
| am sessions — filtres agent/projet/statut ; show = résumé + extrait de log | M | P0 |
|
||||
| am timeline — vue chronologique unifiée de toute l'activité | M | P1 |
|
||||
| am sessions resume <id> — relance avec les mêmes args/env/cwd | M | P1 |
|
||||
| am sessions export <id> + rétention configurable (settings.sessions_retention_days) | M | P2 |
|
||||
|
||||
am sessions --status failed
|
||||
am sessions show 20260815_143926_a1b2c3
|
||||
am timeline --project api
|
||||
|
||||
### Axe 5 — 🖥️ Tableau de bord
|
||||
|
||||
🎯 Voir l'état du parc d'un coup d'œil.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| am dashboard — TUI (ratatui/crossterm) : vue d'ensemble, activité en direct, stats, sessions, projets | L | P1 |
|
||||
| am web — serveur local + API JSON + page HTML embarquée avec graphiques | XL | P2 |
|
||||
|
||||
### Axe 6 — 🤖 Automatisation & orchestration
|
||||
|
||||
🎯 Laisser am **superviser et piloter seul** le parc.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Hooks on_install / on_start / on_stop / on_update (agent, projet, global) — via le runner existant | M | P0 |
|
||||
| am watch claude-code --restart-on-crash --notify | M | P1 |
|
||||
| Services : unités systemd / plists launchd / tâches Windows, am service install claude-code --autostart ✅ #55 | L | P2 |
|
||||
| Planification : am schedule add update --all --at 06:30 + check santé (cron / Task Scheduler) ✅ #56 | M | P2 |
|
||||
| Orchestration de groupes : ordre, --parallel, attente de santé ✅ #57 | L | P2 |
|
||||
| Conteneurs : profil docker/podman par agent (isolation à la demande) ✅ #58 | L | P2 |
|
||||
| am doctor --watch — vérifications périodiques avec alertes ✅ #59 | M | P2 |
|
||||
|
||||
### Axe 7 — 🧠 Intelligence & catalogue
|
||||
|
||||
🎯 Trouver le bon agent, suivre leurs sorties, et comparer.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Recherche fuzzy dans am search (typos, scoring, « vouliez-vous dire ») | M | P1 |
|
||||
| am compare a b — tableau côte à côte (méthode, deps, catégorie, activité) | S | P1 |
|
||||
| am news — dernières releases des agents installés (API GitHub/Gitea, cache) | M | P1 |
|
||||
| Catalogue distant : am catalog update / am catalog add <url> | M | P2 |
|
||||
| am suggest "un agent pour du Python" — tags + usage réel | M | P2 |
|
||||
| am lab — benchmark : même tâche sur N agents, comparaison durée/résultat/coût | L | P2 |
|
||||
| Registre communautaire : publier son catalogue (Gitea) + am registry | L | P3 |
|
||||
| am ask "installe claude et lance-le" — langage naturel → commande am (fournisseur LLM configurable, optionnel) | L | P3 |
|
||||
|
||||
### Axe 8 — 🔒 Sécurité & gouvernance
|
||||
|
||||
🎯 Protéger les secrets, tracer les changements, pouvoir revenir en arrière.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| am secret set OPENAI_KEY --agent claude-code (keyring OS) + injection --env automatique | M | P1 |
|
||||
| am audit — qui a modifié quoi quand (checksums des configs, événements) | M | P2 |
|
||||
| am update --rollback — backup automatique avant chaque mise à jour | M | P2 |
|
||||
| Politiques : pin de version, settings.update_policy | S | P2 |
|
||||
| Profils sandbox par agent (commandes/répertoires autorisés) | L | P3 |
|
||||
|
||||
### Axe 9 — 🌐 Multi-machine & collaboration
|
||||
|
||||
🎯 Retrouver son cockpit partout, et le partager.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Synchronisation git automatique : settings.sync_repo, am sync, push à la fermeture du REPL ✅ #66 | L | P2 |
|
||||
| Partage de catalogue d'équipe : include par URL | S | P2 |
|
||||
| am migrate — assistant de transfert machine A → B ✅ #68 | M | P2 |
|
||||
| am serve --token — API HTTP + WebSocket pour piloter à distance | XL | P3 |
|
||||
|
||||
### Axe 10 — 🧩 Confort & personnalisation
|
||||
|
||||
🎯 Adapter am à sa façon de travailler.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Favoris : am favorite / am unfavorite + ⭐ dans am list | S | P1 |
|
||||
| Notes : am note claude-code "utiliser pour …" | S | P1 |
|
||||
| Tags personnels : am tag claude-code python | S | P1 |
|
||||
| Raccourcis de commandes : settings.shortcuts (i → install, s → start) | S | P1 |
|
||||
| Profils d'environnement : am profile dev / prod (env + args + agent par profil) | M | P1 |
|
||||
| Thèmes couleurs du REPL | S | P2 |
|
||||
|
||||
### Axe 11 — 🎛️ Modèles locaux
|
||||
|
||||
🎯 Étendre le cockpit aux modèles : **ollama, llama.cpp, LM Studio**.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| am models — inventaire : nom, taille disque, quantisation, dernière utilisation | M | P2 |
|
||||
| Lien agent ↔ modèle : am run mon-agent --model llama3.1 | M | P2 |
|
||||
| doctor vérifie ollama / llama-server comme n'importe quel outil | S | P2 |
|
||||
| am models prune — purge des modèles inutilisés | S | P2 |
|
||||
|
||||
### Axe 12 — 🛠️ Écosystème & expérience développeur
|
||||
|
||||
🎯 Rendre am disponible partout et contribuable.
|
||||
|
||||
| Fonctionnalité | Effort | Phase |
|
||||
|---|---|---|
|
||||
| Fixtures d'événements rejouables + tests de bout en bout du journal | S | P0 |
|
||||
| Packaging officiel : winget, scoop, deb/rpm, Homebrew + CI de release | M | P1 |
|
||||
| Complétions dynamiques (agents installés, groupes personnalisés) | S | P1 |
|
||||
| Man pages + documentation générée | S | P1 |
|
||||
| i18n : messages EN/FR | L | P2 |
|
||||
| Plugin scripts (hooks avancés, intégration CI) | M | P2 |
|
||||
|
||||
---
|
||||
|
||||
### 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, sans démarrer un gros coding agent.
|
||||
|
||||
**Contexte :** `am` gère aujourd'hui ~77 agents IA, principalement des *coding agents*, des assistants et des outils SaaS. Les shell assistants sont maintenant au catalogue (AIChat, ShellGPT, Fabric, Shell AI, AI CLI — v1.0.4) : légers, rapides, conçus 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 (✅ tous ajoutés au catalogue — v1.0.4, issues #94 #95)
|
||||
|
||||
| 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` | Go | 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` — livré en v1.0.4 (issues #94 #95) | S | P1 |
|
||||
| ✅ **Commande `am ai <prompt>`** | Lancer AIChat avec le dossier courant comme contexte — livré en v1.0.5 (issue #96) | S | P3 |
|
||||
| ✅ **Flag `--exec` / `-e`** | Active le mode exécution directe (`aichat -e` via aichat --dry-run + exécution sécurisée par am) — livré en v1.0.5 (issue #96) | S | P3 |
|
||||
| ✅ **Flag `--files <path>`** | Passer fichiers/dossiers spécifiques en contexte — livré en v1.0.5 (issue #96) | S | P3 |
|
||||
| ✅ **Sécurité : `--dry-run` par défaut** | Simuler avant exécution ; classification safe/risky + confirmation — livré en v1.0.5 (issue #97, settings.shell_ai) | M | P3 |
|
||||
| ✅ **Provider configurable** | Réutiliser le registre `providers.rs` (--provider/--model → env aichat + modèle) — livré en v1.0.5 (issue #96) | M | P3 |
|
||||
| ✅ **Alias intégrés** | `am shell` comme synonyme CLI de `am ai` — livré en v1.0.5 (issue #96) | 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é |
|
||||
|---|---|---|
|
||||
| `am summarize <fichier/dossier>` | Résume un fichier ou un dossier via AIChat/Fabric | Axe 13 |
|
||||
| `am explain <commande>` | 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 <fichier> --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 <dossier>` | 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 |
|
||||
|
||||
---
|
||||
|
||||
## 14. 🚀 Onboarding & Copilot aichat (épique v1.1.0)
|
||||
|
||||
> Objectif : réduire le **Time-To-First-Value à 0** — rendre `am` opérationnel
|
||||
> pour l'IA locale dès la première seconde, et faire d'aichat le copilot de
|
||||
> agent-manager. Livré en **v1.1.0 (2026-08-20)**.
|
||||
|
||||
| Fonctionnalité | Description | Statut |
|
||||
|---|---|---|
|
||||
| ✅ **Wizard d'onboarding (`am setup`)** | Provider (anthropic, openai, deepseek, google, ollama, custom), token masqué → trousseau OS (keyring, jamais en clair), modèle par défaut, ping API non-bloquant. Déclenché par `am ai`/`am ask`/banner REPL quand aucun provider n'est configuré (message discret, jamais bloquant), ré-exécutable à la main (mode revoir) | ✅ v1.1.0 |
|
||||
| ✅ **Installation automatique d'aichat** | Étape du wizard « Installer le moteur IA (aichat) ? [Y/n] » → `am install aichat` (catalogue) ; `am ai` sans aichat propose l'installation ; install.ps1/install.sh enchaînent sur `am setup` si stdin interactif | ✅ v1.1.0 |
|
||||
| ✅ **Rôles copilot aichat (am-*)** | 6 agents générés dans `~/.config/aichat/agents/` (ou %APPDATA%\\aichat\\agents) : am-copilot (guide & catalogue), am-operator (shell sécurisé), am-dev (code & git), am-do (exécution pure pour --exec), am-analyst (coûts/logs/stats), am-orchestrator (groupes/lab). Prompts bilingues (FR par défaut), privilégient les contrats `--json` | ✅ v1.1.0 |
|
||||
| ✅ **`am ai --role <nom>`** | Rôle copilot passé à aichat (`--agent`) ; validation du fichier généré ; complétion REPL des rôles am-* ; config aichat créée (provider + modèle) seulement si absente | ✅ v1.1.0 |
|
||||
| ✅ **Settings dédiés** | `settings.shell_ai` (default_safety dry-run/confirm/auto, risky_patterns) documenté dans config.yaml ; module `src/setup.rs` + `src/roles.rs` | ✅ v1.1.0 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 🚀 Jalons versionnés
|
||||
|
||||
| Jalon | Version | Contenu principal | Durée | Critère de sortie |
|
||||
|---|---|---|---|---|
|
||||
| **J0 — Fondations** | v0.3.0 | events.jsonl, sessions, am stats, am log, am history, am init, quick wins | ≈ 2 sem | 100 % des actions tracées · 100+ tests |
|
||||
| **J1 — Cockpit** | v0.4.0 | recherche fuzzy, Ctrl-R, projects, timeline, dashboard TUI, hooks, secret, favoris, packaging | ≈ 3 sem | retrouver n'importe quelle action passée en < 2 s |
|
||||
| **J2 — Automatisation** | v0.5.0 | watch, services, schedule, news/compare, catalogue distant, lab, models, sync | ≈ 4 sem | parc auto-supervisé (crash = redémarrage + alerte) |
|
||||
| **J3 — Plateforme** | v1.0 | am web, am serve, am ask, registry, télémétrie opt-in, sandbox | ≈ 6 sem | dashboard web complet + API distante |
|
||||
|
||||
---
|
||||
|
||||
## 9. 📈 Indicateurs de succès (KPI)
|
||||
|
||||
| Indicateur | Cible |
|
||||
|---|---|
|
||||
| Part des actions tracées dans events.jsonl | 100 % dès la v0.3.0 |
|
||||
| Temps pour retrouver une commande ou session passée | < 2 s |
|
||||
| am list à chaud, journal actif | < 100 ms |
|
||||
| Dépendances runtime ajoutées | 0 |
|
||||
| Couverture de tests | ≥ 100 tests en v0.3, +25 par jalon |
|
||||
| Contrats --json cassés entre versions mineures | 0 |
|
||||
|
||||
---
|
||||
|
||||
## 10. ⚠️ Risques & garde-fous
|
||||
|
||||
1. **ADN « zéro runtime »** : toute dépendance nouvelle est compilée dans le
|
||||
binaire, jamais requise à l'exécution.
|
||||
2. **Performance** : le journal grossit — fenêtres temporelles, index dérivés,
|
||||
rotation mensuelle, caches façon probe.rs.
|
||||
3. **Vie privée** : local par défaut ; télémétrie opt-in, agrégée, anonyme.
|
||||
4. **Contrats --json** : ajout de champs sans retrait (scripts utilisateurs).
|
||||
5. **Compatibilité** : migrations additives ; les exports 0.2.x restent
|
||||
importables en 0.3+.
|
||||
6. **Complexité UX** : les fonctions avancées restent derrière
|
||||
settings.experimental jusqu'à maturité.
|
||||
7. **Périmètre** : rester un orchestrateur — ne pas réimplémenter les
|
||||
fonctionnalités propres aux agents (tokens, MCP, prompts), sauf valeur
|
||||
transversale (stats, sessions, secrets, coûts).
|
||||
|
||||
---
|
||||
|
||||
## 11. 🏁 Par où commencer
|
||||
|
||||
*Le suivi est en place sur Gitea : 4 milestones (v0.3.0 → v1.0), 22 labels
|
||||
(P0–P3, axe-1…axe-12, S/M/L/XL, quick-win, epic) et les issues ci-dessous.
|
||||
Chaque PR doit référencer son issue avec `closes #N` pour une clôture
|
||||
automatique. Ordre de construction proposé pour la phase 0 — chaque étape
|
||||
est un PR indépendant et testé :*
|
||||
|
||||
1. **[PR 1](https://git.dracodev.net/Projets/agent-manager/issues/2)** — src/events.rs : journal JSONL + rotation + tests.
|
||||
2. **[PR 2](https://git.dracodev.net/Projets/agent-manager/issues/3)** — instrumentation start/stop/run (process.rs, run_cmd.rs) — dépend de PR 1.
|
||||
3. **[PR 3](https://git.dracodev.net/Projets/agent-manager/issues/4)** — state.json v2 + migration additive — dépend de PR 1.
|
||||
4. **[PR 4](https://git.dracodev.net/Projets/agent-manager/issues/5)** — sessions.json + am sessions + réconciliation — dépend de PR 2.
|
||||
5. **[PR 5](https://git.dracodev.net/Projets/agent-manager/issues/6)** — am stats + am log (lecture du journal) — dépend de PR 2.
|
||||
6. **[PR 6](https://git.dracodev.net/Projets/agent-manager/issues/7)** — historique structuré + am history (migration de history.txt).
|
||||
7. **[PR 7](https://git.dracodev.net/Projets/agent-manager/issues/8)** — am init + détection de contexte (git, stack, cache) — dépend de PR 1.
|
||||
8. **En parallèle** — les quick wins de la section 3 :
|
||||
[am logs #9](https://git.dracodev.net/Projets/agent-manager/issues/9) ·
|
||||
[am list --sort #10](https://git.dracodev.net/Projets/agent-manager/issues/10) ·
|
||||
[am config set #11](https://git.dracodev.net/Projets/agent-manager/issues/11) ·
|
||||
[am alias add #12](https://git.dracodev.net/Projets/agent-manager/issues/12) ·
|
||||
[dedup history.txt #13](https://git.dracodev.net/Projets/agent-manager/issues/13) ·
|
||||
[am doctor --json #14](https://git.dracodev.net/Projets/agent-manager/issues/14) ·
|
||||
[am version --json #15](https://git.dracodev.net/Projets/agent-manager/issues/15) ·
|
||||
[am open #16](https://git.dracodev.net/Projets/agent-manager/issues/16).
|
||||
|
||||
Épique de suivi : [issue #1](https://git.dracodev.net/Projets/agent-manager/issues/1) (Phase 0).
|
||||
|
||||
### Phase 1 — Cockpit (v0.4.0) — découpage créé le 2026-08-17
|
||||
|
||||
Épique : [issue #25](https://git.dracodev.net/Projets/agent-manager/issues/25) · milestone v0.4.0 · 17 issues.
|
||||
|
||||
| # | Issue | Effort |
|
||||
|---|---|---|
|
||||
| [#26](https://git.dracodev.net/Projets/agent-manager/issues/26) | Recherche fuzzy dans am search | M |
|
||||
| [#27](https://git.dracodev.net/Projets/agent-manager/issues/27) | Ctrl-R + réexécution dans le REPL | M |
|
||||
| [#28](https://git.dracodev.net/Projets/agent-manager/issues/28) | am history --rerun N | S |
|
||||
| [#29](https://git.dracodev.net/Projets/agent-manager/issues/29) | am projects + profils de projet | M |
|
||||
| [#30](https://git.dracodev.net/Projets/agent-manager/issues/30) | am start contextuel (dépend de #29) | S |
|
||||
| [#31](https://git.dracodev.net/Projets/agent-manager/issues/31) | am timeline (vue chronologique unifiée) | M |
|
||||
| [#32](https://git.dracodev.net/Projets/agent-manager/issues/32) | am sessions resume <id> | M |
|
||||
| [#33](https://git.dracodev.net/Projets/agent-manager/issues/33) | am dashboard (TUI temps réel) | L |
|
||||
| [#34](https://git.dracodev.net/Projets/agent-manager/issues/34) | Hooks on_install/on_start/on_stop/on_update | M |
|
||||
| [#35](https://git.dracodev.net/Projets/agent-manager/issues/35) | am watch --restart-on-crash --notify | M |
|
||||
| [#36](https://git.dracodev.net/Projets/agent-manager/issues/36) | am secret (keyring OS) + injection --env | M |
|
||||
| [#37](https://git.dracodev.net/Projets/agent-manager/issues/37) | am top + am report (rapport hebdo/mensuel) | M |
|
||||
| [#38](https://git.dracodev.net/Projets/agent-manager/issues/38) | am log --follow (flux en direct) | S |
|
||||
| [#39](https://git.dracodev.net/Projets/agent-manager/issues/39) | Favoris, notes et tags personnels | M |
|
||||
| [#40](https://git.dracodev.net/Projets/agent-manager/issues/40) | Profils d'environnement (am profile dev/prod) | M |
|
||||
| [#41](https://git.dracodev.net/Projets/agent-manager/issues/41) | Complétions dynamiques + man pages | S |
|
||||
| [#42](https://git.dracodev.net/Projets/agent-manager/issues/42) | Packaging officiel (winget/scoop/deb/Homebrew) + CI | M |
|
||||
|
||||
Critère de sortie du jalon : retrouver n'importe quelle action passée en
|
||||
moins de 2 secondes.
|
||||
|
||||
### Phase 2 — Automatisation (v0.5.0) — découpage créé le 2026-08-17
|
||||
|
||||
Épique : [issue #47](https://git.dracodev.net/Projets/agent-manager/issues/47) · milestone v0.5.0 · 27 issues.
|
||||
|
||||
| # | Issue | Effort |
|
||||
|---|---|---|
|
||||
| [#49](https://git.dracodev.net/Projets/agent-manager/issues/49) | Suivi des coûts — tokens/€ par session (stats --costs, cost_models) ✅ | M |
|
||||
| [#50](https://git.dracodev.net/Projets/agent-manager/issues/50) | am monitor — TUI temps réel (CPU/mémoire par PID, alertes) ✅ | L |
|
||||
| [#51](https://git.dracodev.net/Projets/agent-manager/issues/51) | ✅ Playbooks — am history --save + am playbook | L |
|
||||
| [#52](https://git.dracodev.net/Projets/agent-manager/issues/52) | ✅ Templates — am init --template web/python/rust/cli (substitution + validation) | M |
|
||||
| [#53](https://git.dracodev.net/Projets/agent-manager/issues/53) | ✅ am sessions export + rétention configurable (sessions_retention_days) | M |
|
||||
| [#54](https://git.dracodev.net/Projets/agent-manager/issues/54) | ✅ am web — serveur local + API JSON + graphiques (dashboard embarqué, contrats --json, 127.0.0.1) | XL |
|
||||
| [#55](https://git.dracodev.net/Projets/agent-manager/issues/55) | Services système — am service install (systemd/launchd/tâches Windows) ✅ | L |
|
||||
| [#56](https://git.dracodev.net/Projets/agent-manager/issues/56) | Planification — am schedule (add --at / list / remove / run) ✅ | M |
|
||||
| [#57](https://git.dracodev.net/Projets/agent-manager/issues/57) | Orchestration de groupes (ordre, --parallel, attente de santé) ✅ | L |
|
||||
| [#58](https://git.dracodev.net/Projets/agent-manager/issues/58) | Conteneurs — profils docker/podman par agent ✅ | L |
|
||||
| [#59](https://git.dracodev.net/Projets/agent-manager/issues/59) | am doctor --watch — vérifications périodiques avec alertes ✅ | M |
|
||||
| [#60](https://git.dracodev.net/Projets/agent-manager/issues/60) | ✅ Catalogue distant — am catalog update / am catalog add <url> | M |
|
||||
| [#61](https://git.dracodev.net/Projets/agent-manager/issues/61) | ✅ am suggest — « un agent pour du Python » (tags + usage réel) | M |
|
||||
| [#62](https://git.dracodev.net/Projets/agent-manager/issues/62) | ✅ am lab — benchmark : même tâche sur N agents | L |
|
||||
| [#63](https://git.dracodev.net/Projets/agent-manager/issues/63) | ✅ am audit — qui a modifié quoi quand | M |
|
||||
| [#64](https://git.dracodev.net/Projets/agent-manager/issues/64) | ✅ am update --rollback — backup automatique avant mise à jour | M |
|
||||
| [#65](https://git.dracodev.net/Projets/agent-manager/issues/65) | ✅ Politiques — pin de version, settings.update_policy | S |
|
||||
| [#66](https://git.dracodev.net/Projets/agent-manager/issues/66) | ✅ Synchronisation git automatique — am sync (sync_repo, sync_on_exit, secrets exclus) | L |
|
||||
| [#67](https://git.dracodev.net/Projets/agent-manager/issues/67) | ✅ Partage de catalogue d'équipe (include par URL) | S |
|
||||
| [#68](https://git.dracodev.net/Projets/agent-manager/issues/68) | ✅ am migrate — assistant de transfert machine A → B (bundle .amx + doctor) | M |
|
||||
| [#69](https://git.dracodev.net/Projets/agent-manager/issues/69) | ✅ Thèmes couleurs du REPL | S |
|
||||
| [#70](https://git.dracodev.net/Projets/agent-manager/issues/70) | ✅ am models — inventaire des modèles locaux (ollama, llama.cpp, LM Studio) | M |
|
||||
| [#71](https://git.dracodev.net/Projets/agent-manager/issues/71) | ✅ Lien agent ↔ modèle — am run --model | M |
|
||||
| [#72](https://git.dracodev.net/Projets/agent-manager/issues/72) | ✅ doctor vérifie ollama / llama-server comme n'importe quel outil | S |
|
||||
| [#73](https://git.dracodev.net/Projets/agent-manager/issues/73) | ✅ am models prune — purge des modèles inutilisés | S |
|
||||
| [#74](https://git.dracodev.net/Projets/agent-manager/issues/74) | ✅ i18n — messages EN/FR (--lang, AM_LANG/LANG, catalogue tr/tr_fmt) | L |
|
||||
| [#75](https://git.dracodev.net/Projets/agent-manager/issues/75) | ✅ Plugin scripts (hooks avancés, intégration CI) | M |
|
||||
|
||||
Critère de sortie du jalon : parc auto-supervisé (crash = redémarrage +
|
||||
alerte).
|
||||
|
||||
### Phase 3 — Plateforme (v1.0) — découpage créé le 2026-08-17
|
||||
|
||||
Épique : [issue #48](https://git.dracodev.net/Projets/agent-manager/issues/48) · milestone v1.0 · 5 issues.
|
||||
|
||||
| # | Issue | Effort |
|
||||
|---|---|---|
|
||||
| [#76](https://git.dracodev.net/Projets/agent-manager/issues/76) | ✅ Télémétrie anonyme opt-in (compteurs agrégés uniquement) | M |
|
||||
| [#77](https://git.dracodev.net/Projets/agent-manager/issues/77) | ✅ Registre communautaire — am registry (publication + recherche sur Gitea) | L |
|
||||
| [#78](https://git.dracodev.net/Projets/agent-manager/issues/78) | ✅ am ask — langage naturel → commande am (fournisseur LLM optionnel) | L |
|
||||
| [#79](https://git.dracodev.net/Projets/agent-manager/issues/79) | ✅ Profils sandbox par agent (commandes/répertoires autorisés) | L |
|
||||
| [#80](https://git.dracodev.net/Projets/agent-manager/issues/80) | ✅ am serve --token — API HTTP + WebSocket pour piloter à distance | XL |
|
||||
|
||||
Critère de sortie du jalon : dashboard web complet + API distante.
|
||||
|
||||
### Phase v0.7.0 — Providers & configuration automatisée (P0, PRIORITAIRE)
|
||||
|
||||
Épique : [issue #87](https://git.dracodev.net/Projets/agent-manager/issues/87)
|
||||
· milestone v0.7.0 · 5 issues · **priorité P0 : livrée AVANT la Phase 3
|
||||
(v1.0, #76–#80 en P3), sauf dépendances**.
|
||||
|
||||
Centralise tokens/providers/modèles dans UN registre (settings.providers +
|
||||
keyring partagé) et configure automatiquement les agents à l'installation :
|
||||
`am install <agent>` branche le provider/modèle par défaut,
|
||||
`--provider/--model` pour surcharger, `--no-config` pour le comportement
|
||||
actuel, `am run --provider` pour surcharger au lancement (cloud inclus).
|
||||
S'appuie sur #36 (secrets), #40 (profils), #71 (modèle), #66 (sync) — livrés.
|
||||
|
||||
| # | Issue | Effort | Dépend de |
|
||||
|---|---|---|---|
|
||||
| [#88](https://git.dracodev.net/Projets/agent-manager/issues/88) | ✅ Registre de providers + commandes `am providers` (settings.providers, default_provider) | M | — |
|
||||
| [#89](https://git.dracodev.net/Projets/agent-manager/issues/89) | ✅ Secrets partagés par provider (namespace keyring + résolution `@secret` fallback) | S | #88 |
|
||||
| [#90](https://git.dracodev.net/Projets/agent-manager/issues/90) | ✅ AgentDef provider/model + flags `--provider/--model/--no-config` à l'install | M | #88 |
|
||||
| [#91](https://git.dracodev.net/Projets/agent-manager/issues/91) | ✅ Configuration post-install : bloc `config:` par agent (env_map + fichiers) | L | #89, #90 |
|
||||
| [#92](https://git.dracodev.net/Projets/agent-manager/issues/92) | ✅ `am run/start --provider` : override au lancement (providers cloud inclus) | M | #90 |
|
||||
|
||||
Critère de sortie du jalon : un agent installé est opérationnel sans
|
||||
configuration manuelle (tokens au keyring, provider/modèle par défaut).
|
||||
|
||||
---
|
||||
|
||||
*Document généré à partir de l'analyse du code (v0.2.7, commit d886de3).
|
||||
Phases livrées : 0 (v0.3.0), 1 (v0.4.1), 2 (v0.6.0), v0.7.0 (providers,
|
||||
2026-08-19), 3 (v1.0.0, #76–#80, 2026-08-20) ; maintenance v1.0.1/v1.0.2
|
||||
(self-update décompression, REPL), v1.0.3 (détection externe), v1.0.4
|
||||
(catalogue shell AI, #94 #95), v1.0.5 (commande am ai, #93 #96 #97),
|
||||
v1.0.6 (installateur Windows accepte l'entrée am-windows-x86_64.exe).*
|
||||
@@ -0,0 +1,32 @@
|
||||
//! Record build metadata (git commit and branch) at compile time so the
|
||||
//! 'am version' command can display it, like Nushell's version table.
|
||||
//!
|
||||
//! When git is unavailable (e.g. building from a source tarball) the values
|
||||
//! are simply empty.
|
||||
|
||||
use std::process::Command;
|
||||
|
||||
fn git(args: &[&str]) -> String {
|
||||
Command::new("git")
|
||||
.args(args)
|
||||
.output()
|
||||
.ok()
|
||||
.filter(|o| o.status.success())
|
||||
.map(|o| String::from_utf8_lossy(&o.stdout).trim().to_string())
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("cargo:rerun-if-changed=.git/HEAD");
|
||||
println!("cargo:rerun-if-changed=.git/refs/heads");
|
||||
let commit = git(&["rev-parse", "HEAD"]);
|
||||
let branch = git(&["rev-parse", "--abbrev-ref", "HEAD"]);
|
||||
// A detached HEAD reports the literal branch name "HEAD".
|
||||
let branch = if branch == "HEAD" {
|
||||
String::new()
|
||||
} else {
|
||||
branch
|
||||
};
|
||||
println!("cargo:rustc-env=AM_GIT_COMMIT={commit}");
|
||||
println!("cargo:rustc-env=AM_GIT_BRANCH={branch}");
|
||||
}
|
||||
+991
-347
File diff suppressed because it is too large
Load Diff
+713
-126
File diff suppressed because it is too large
Load Diff
+1274
-545
File diff suppressed because it is too large
Load Diff
+678
-96
@@ -20,6 +20,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -33,31 +34,445 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand --help 'Print help (see more with ''--help'')'
|
||||
cand -V 'Print version'
|
||||
cand --version 'Print version'
|
||||
cand list 'List agents: installed ones, or every agent known to the catalog'
|
||||
cand list 'List installed agents (default); use --all for the whole catalog'
|
||||
cand logs 'Tail the log file of an agent (--follow for a live view)'
|
||||
cand open 'Open an agent''s installation directory in the file manager'
|
||||
cand watch 'Supervise an agent and optionally restart it on crash'
|
||||
cand dashboard 'Live TUI dashboard: overview, activity, stats, sessions, projects'
|
||||
cand favorite 'Mark an agent as a favorite (star in list and status)'
|
||||
cand unfavorite 'Remove the favorite star from an agent'
|
||||
cand note 'Attach a free-form note to an agent (shown in ''am info''); ''am note <agent>'' without text prints the current note'
|
||||
cand tag 'Add a personal tag to an agent'
|
||||
cand untag 'Remove a personal tag from an agent'
|
||||
cand tags 'List personal tags (with counts), optionally for one agent'
|
||||
cand profile 'Manage environment profiles (dev, prod, ...)'
|
||||
cand man 'Generate a man page for am (or for one command)'
|
||||
cand _agents 'Internal: list agent names for shell completions (hidden)'
|
||||
cand alias 'Manage command aliases (cc -> claude-code)'
|
||||
cand secret 'Manage secrets in the OS keyring (never in plaintext config)'
|
||||
cand start 'Start an agent (foreground by default, or detached with --background)'
|
||||
cand stop 'Stop a background agent (SIGTERM, then SIGKILL after the timeout)'
|
||||
cand restart 'Restart an agent: stop, then start with the same options'
|
||||
cand status 'Show the state of one agent, or of every installed agent'
|
||||
cand sessions 'List the sessions of every agent (and of the interactive shell)'
|
||||
cand stats 'Show usage statistics computed from the event journal'
|
||||
cand top 'Show the most used agents (top 10)'
|
||||
cand report 'Write a markdown activity report'
|
||||
cand projects 'Show which agent works on which project'
|
||||
cand timeline 'One chronological view of every activity (journal + REPL history)'
|
||||
cand log 'Read the event journal: everything am did'
|
||||
cand install 'Install an agent and its dependencies'
|
||||
cand uninstall 'Uninstall an agent and clean its files'
|
||||
cand uninstall 'Uninstall an agent (managed or external) and clean its files'
|
||||
cand update 'Update an installed agent to the latest available version'
|
||||
cand search 'Search the catalog by keyword (name, description, category, tags)'
|
||||
cand history 'Search the command history (am and shell commands)'
|
||||
cand info 'Show detailed information about one agent'
|
||||
cand init 'Generate a local agent-manager.yaml for the current directory'
|
||||
cand help 'Display help: the overview, a command, the command list, or a search'
|
||||
cand version 'Display version and build information'
|
||||
cand config 'Manage the configuration file'
|
||||
cand doctor 'Check the environment: tools, config validity, paths, permissions'
|
||||
cand run 'Run the agent command directly with the given arguments (no process management)'
|
||||
cand completion 'Generate a shell completion script'
|
||||
cand self-update 'Update agent-manager itself from GitHub Releases'
|
||||
cand self-uninstall 'Remove agent-manager and everything it created from this machine'
|
||||
cand export 'Export the configuration and installation state (backup)'
|
||||
cand import 'Import a previously exported configuration and state'
|
||||
cand help 'Print this message or the help of the given subcommand(s)'
|
||||
}
|
||||
&'am;list'= {
|
||||
cand --category 'Only show agents of this category'
|
||||
cand --sort 'Sort by name, version or status (default: name)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --installed-only 'Only show agents that are installed (managed or external)'
|
||||
cand --all 'Include hidden agents as well'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --all 'Show every agent known to the catalog, not only the installed ones'
|
||||
cand --running 'Only show running agents'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;logs'= {
|
||||
cand --lines 'Number of lines to show (default: 20)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --follow 'Follow the log as it grows'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;open'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;watch'= {
|
||||
cand --interval 'Check interval in seconds (default: 5)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --restart 'Restart the agent automatically when it dies (with backoff)'
|
||||
cand --notify 'Desktop notification on every restart'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;dashboard'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;favorite'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;unfavorite'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;note'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;tag'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;untag'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;tags'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;profile'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
cand list 'List every defined profile'
|
||||
cand show 'Show one profile in detail (agent, env, args)'
|
||||
}
|
||||
&'am;profile;list'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;profile;show'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;man'= {
|
||||
cand --output 'Write the page(s) to this directory instead of stdout'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;_agents'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --installed 'Only installed agents (managed + external), aliases and groups'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;alias'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
cand add 'Add an alias (am alias add cc claude-code)'
|
||||
cand remove 'Remove an alias'
|
||||
cand list 'List every alias'
|
||||
}
|
||||
&'am;alias;add'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;alias;remove'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;alias;list'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;secret'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
cand set 'Store a secret for an agent'
|
||||
cand unset 'Remove a secret'
|
||||
cand list 'List stored secret names (values are never shown)'
|
||||
}
|
||||
&'am;secret;set'= {
|
||||
cand --agent 'Agent it belongs to'
|
||||
cand --value 'Secret value (prefer --value over shell history; never logged)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;secret;unset'= {
|
||||
cand --agent 'Agent it belongs to'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;secret;list'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -73,8 +488,10 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;start'= {
|
||||
cand --args 'Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)'
|
||||
cand --env 'Set an environment variable for the agent (repeatable): --env KEY=VALUE'
|
||||
cand --profile 'Apply an environment profile (env + args, defined in the config)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -b 'Run detached in the background; output goes to the agent log file'
|
||||
cand --background 'Run detached in the background; output goes to the agent log file'
|
||||
cand -f 'Run in the foreground, attached to this terminal (the default)'
|
||||
@@ -96,6 +513,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand --timeout 'Grace period in seconds before killing (default: from config, 5s)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --force 'Kill immediately instead of terminating gracefully'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -112,9 +530,11 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;restart'= {
|
||||
cand --args 'Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)'
|
||||
cand --env 'Set an environment variable for the agent (repeatable): --env KEY=VALUE'
|
||||
cand --profile 'Apply an environment profile (env + args, defined in the config)'
|
||||
cand --timeout 'Grace period in seconds before killing (default: from config, 5s)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -b 'Run detached in the background; output goes to the agent log file'
|
||||
cand --background 'Run detached in the background; output goes to the agent log file'
|
||||
cand -f 'Run in the foreground, attached to this terminal (the default)'
|
||||
@@ -136,6 +556,135 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;status'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;sessions'= {
|
||||
cand --project 'Only sessions of this project'
|
||||
cand --status 'Only sessions with this status (running, stopped, failed, interrupted)'
|
||||
cand --show 'Show one session in detail (summary + log excerpt)'
|
||||
cand --resume 'Resume a finished session: relaunch the agent with its recorded arguments'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;stats'= {
|
||||
cand --period 'Only events of the last period (7d, 30d, 90d, all)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;top'= {
|
||||
cand --period 'Only events of the last period (7d, 30d, 90d, all)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;report'= {
|
||||
cand --output 'Output file (default: report-YYYYMMDD.md in the state directory)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --last-week 'Cover the last 7 days'
|
||||
cand --last-month 'Cover the last 30 days'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;projects'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;timeline'= {
|
||||
cand --project 'Only activity of this project'
|
||||
cand --since 'Only activity at or after this date (YYYY-MM-DD or RFC 3339)'
|
||||
cand --limit 'Maximum number of entries (default: 50)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;log'= {
|
||||
cand --kind 'Only these event kinds (comma separated: start,stop,run,install,...)'
|
||||
cand --since 'Only events at or after this date (YYYY-MM-DD or RFC 3339)'
|
||||
cand --limit 'Maximum number of events (default: 50)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --follow 'Follow the journal as new events arrive'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -152,6 +701,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand --method 'Select the install method (index, or type: npm, pip, uv, cargo, go, bun, curl, binary, git)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --force 'Reinstall even if already installed'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -168,6 +718,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;uninstall'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --purge 'Also remove logs and the agent entry from the user config file'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -184,6 +735,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;update'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --all 'Update every installed managed agent'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -199,8 +751,33 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
}
|
||||
&'am;search'= {
|
||||
cand --category 'Restrict to this category'
|
||||
cand --tag 'Only agents carrying this personal tag'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;history'= {
|
||||
cand --kind 'Only commands of this kind (am or shell)'
|
||||
cand --cwd 'Only commands run in this directory'
|
||||
cand --search 'Full-text search in the command line'
|
||||
cand --session 'Only commands of this session'
|
||||
cand --limit 'Maximum number of entries (default: 100)'
|
||||
cand --rerun 'Re-run the Nth most recent entry (with confirmation)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --failed 'Only failed commands'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -216,6 +793,57 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;info'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;init'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --force 'Overwrite an existing agent-manager.yaml'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;help'= {
|
||||
cand --find 'Search through all help commands table'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;version'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -231,6 +859,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;config'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -247,11 +876,12 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand edit 'Open the user configuration file in your editor'
|
||||
cand validate 'Validate the configuration file(s)'
|
||||
cand add 'Add another agent definition file to the user configuration'
|
||||
cand help 'Print this message or the help of the given subcommand(s)'
|
||||
cand set 'Set one configuration key without an editor (config set settings.default_shell pwsh)'
|
||||
}
|
||||
&'am;config;show'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -267,6 +897,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;config;path'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -282,6 +913,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;config;edit'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -297,6 +929,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;config;validate'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -312,6 +945,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;config;add'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -324,29 +958,26 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;config;help'= {
|
||||
cand show 'Print the effective (merged) configuration as YAML'
|
||||
cand path 'Print the location of the configuration file(s)'
|
||||
cand edit 'Open the user configuration file in your editor'
|
||||
cand validate 'Validate the configuration file(s)'
|
||||
cand add 'Add another agent definition file to the user configuration'
|
||||
cand help 'Print this message or the help of the given subcommand(s)'
|
||||
}
|
||||
&'am;config;help;show'= {
|
||||
}
|
||||
&'am;config;help;path'= {
|
||||
}
|
||||
&'am;config;help;edit'= {
|
||||
}
|
||||
&'am;config;help;validate'= {
|
||||
}
|
||||
&'am;config;help;add'= {
|
||||
}
|
||||
&'am;config;help;help'= {
|
||||
&'am;config;set'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;doctor'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --fix 'Attempt to repair problems (create directories, fix the state file)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -363,6 +994,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;run'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -378,6 +1010,8 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;completion'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --installed 'Add dynamic completion of the installed agents, aliases and groups (queried from ''am _agents'' at Tab time)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -394,6 +1028,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand --to 'Download the new binary to this path instead of replacing the current one'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand --check 'Only check whether a newer version exists'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
@@ -407,10 +1042,27 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;self-uninstall'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
cand --quiet 'Quiet mode: only errors are printed'
|
||||
cand -y 'Answer yes to every confirmation prompt'
|
||||
cand --yes 'Answer yes to every confirmation prompt'
|
||||
cand --dry-run 'Simulate the action without changing anything'
|
||||
cand --json 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
cand --no-color 'Disable ANSI colors'
|
||||
cand -h 'Print help (see more with ''--help'')'
|
||||
cand --help 'Print help (see more with ''--help'')'
|
||||
}
|
||||
&'am;export'= {
|
||||
cand --output 'Output file (default: am-export.json)'
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -426,6 +1078,7 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
&'am;import'= {
|
||||
cand -c 'Use an alternate configuration file'
|
||||
cand --config 'Use an alternate configuration file'
|
||||
cand --theme 'Color theme for the output (see ''am help theme'' for the list)'
|
||||
cand -v 'Verbose output: show every command executed and its details'
|
||||
cand --verbose 'Verbose output: show every command executed and its details'
|
||||
cand -q 'Quiet mode: only errors are printed'
|
||||
@@ -438,77 +1091,6 @@ set edit:completion:arg-completer[am] = {|@words|
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
}
|
||||
&'am;help'= {
|
||||
cand list 'List agents: installed ones, or every agent known to the catalog'
|
||||
cand start 'Start an agent (foreground by default, or detached with --background)'
|
||||
cand stop 'Stop a background agent (SIGTERM, then SIGKILL after the timeout)'
|
||||
cand restart 'Restart an agent: stop, then start with the same options'
|
||||
cand status 'Show the state of one agent, or of every installed agent'
|
||||
cand install 'Install an agent and its dependencies'
|
||||
cand uninstall 'Uninstall an agent and clean its files'
|
||||
cand update 'Update an installed agent to the latest available version'
|
||||
cand search 'Search the catalog by keyword (name, description, category, tags)'
|
||||
cand info 'Show detailed information about one agent'
|
||||
cand config 'Manage the configuration file'
|
||||
cand doctor 'Check the environment: tools, config validity, paths, permissions'
|
||||
cand run 'Run the agent command directly with the given arguments (no process management)'
|
||||
cand completion 'Generate a shell completion script'
|
||||
cand self-update 'Update agent-manager itself from GitHub Releases'
|
||||
cand export 'Export the configuration and installation state (backup)'
|
||||
cand import 'Import a previously exported configuration and state'
|
||||
cand help 'Print this message or the help of the given subcommand(s)'
|
||||
}
|
||||
&'am;help;list'= {
|
||||
}
|
||||
&'am;help;start'= {
|
||||
}
|
||||
&'am;help;stop'= {
|
||||
}
|
||||
&'am;help;restart'= {
|
||||
}
|
||||
&'am;help;status'= {
|
||||
}
|
||||
&'am;help;install'= {
|
||||
}
|
||||
&'am;help;uninstall'= {
|
||||
}
|
||||
&'am;help;update'= {
|
||||
}
|
||||
&'am;help;search'= {
|
||||
}
|
||||
&'am;help;info'= {
|
||||
}
|
||||
&'am;help;config'= {
|
||||
cand show 'Print the effective (merged) configuration as YAML'
|
||||
cand path 'Print the location of the configuration file(s)'
|
||||
cand edit 'Open the user configuration file in your editor'
|
||||
cand validate 'Validate the configuration file(s)'
|
||||
cand add 'Add another agent definition file to the user configuration'
|
||||
}
|
||||
&'am;help;config;show'= {
|
||||
}
|
||||
&'am;help;config;path'= {
|
||||
}
|
||||
&'am;help;config;edit'= {
|
||||
}
|
||||
&'am;help;config;validate'= {
|
||||
}
|
||||
&'am;help;config;add'= {
|
||||
}
|
||||
&'am;help;doctor'= {
|
||||
}
|
||||
&'am;help;run'= {
|
||||
}
|
||||
&'am;help;completion'= {
|
||||
}
|
||||
&'am;help;self-update'= {
|
||||
}
|
||||
&'am;help;export'= {
|
||||
}
|
||||
&'am;help;import'= {
|
||||
}
|
||||
&'am;help;help'= {
|
||||
}
|
||||
]
|
||||
$completions[$command]
|
||||
}
|
||||
|
||||
+441
-49
@@ -1,6 +1,6 @@
|
||||
# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
|
||||
function __fish_am_global_optspecs
|
||||
string join \n c/config= v/verbose q/quiet y/yes dry-run json no-color h/help V/version
|
||||
string join \n c/config= v/verbose q/quiet y/yes dry-run json no-color theme= h/help V/version
|
||||
end
|
||||
|
||||
function __fish_am_needs_command
|
||||
@@ -25,6 +25,7 @@ function __fish_am_using_subcommand
|
||||
end
|
||||
|
||||
complete -c am -n "__fish_am_needs_command" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_needs_command" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_needs_command" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_needs_command" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_needs_command" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -33,28 +34,56 @@ complete -c am -n "__fish_am_needs_command" -l json -d 'Emit machine-readable JS
|
||||
complete -c am -n "__fish_am_needs_command" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_needs_command" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c am -n "__fish_am_needs_command" -s V -l version -d 'Print version'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "list" -d 'List agents: installed ones, or every agent known to the catalog'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "list" -d 'List installed agents (default); use --all for the whole catalog'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "logs" -d 'Tail the log file of an agent (--follow for a live view)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "open" -d 'Open an agent\'s installation directory in the file manager'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "watch" -d 'Supervise an agent and optionally restart it on crash'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "dashboard" -d 'Live TUI dashboard: overview, activity, stats, sessions, projects'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "favorite" -d 'Mark an agent as a favorite (star in list and status)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "unfavorite" -d 'Remove the favorite star from an agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "note" -d 'Attach a free-form note to an agent (shown in \'am info\'); \'am note <agent>\' without text prints the current note'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "tag" -d 'Add a personal tag to an agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "untag" -d 'Remove a personal tag from an agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "tags" -d 'List personal tags (with counts), optionally for one agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "profile" -d 'Manage environment profiles (dev, prod, ...)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "man" -d 'Generate a man page for am (or for one command)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "_agents" -d 'Internal: list agent names for shell completions (hidden)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "alias" -d 'Manage command aliases (cc -> claude-code)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "secret" -d 'Manage secrets in the OS keyring (never in plaintext config)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "start" -d 'Start an agent (foreground by default, or detached with --background)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "stop" -d 'Stop a background agent (SIGTERM, then SIGKILL after the timeout)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "restart" -d 'Restart an agent: stop, then start with the same options'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "status" -d 'Show the state of one agent, or of every installed agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "sessions" -d 'List the sessions of every agent (and of the interactive shell)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "stats" -d 'Show usage statistics computed from the event journal'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "top" -d 'Show the most used agents (top 10)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "report" -d 'Write a markdown activity report'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "projects" -d 'Show which agent works on which project'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "timeline" -d 'One chronological view of every activity (journal + REPL history)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "log" -d 'Read the event journal: everything am did'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "install" -d 'Install an agent and its dependencies'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "uninstall" -d 'Uninstall an agent and clean its files'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "uninstall" -d 'Uninstall an agent (managed or external) and clean its files'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "update" -d 'Update an installed agent to the latest available version'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "search" -d 'Search the catalog by keyword (name, description, category, tags)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "history" -d 'Search the command history (am and shell commands)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "info" -d 'Show detailed information about one agent'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "init" -d 'Generate a local agent-manager.yaml for the current directory'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "help" -d 'Display help: the overview, a command, the command list, or a search'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "version" -d 'Display version and build information'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "config" -d 'Manage the configuration file'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "doctor" -d 'Check the environment: tools, config validity, paths, permissions'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "run" -d 'Run the agent command directly with the given arguments (no process management)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "completion" -d 'Generate a shell completion script'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "self-update" -d 'Update agent-manager itself from GitHub Releases'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "self-uninstall" -d 'Remove agent-manager and everything it created from this machine'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "export" -d 'Export the configuration and installation state (backup)'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "import" -d 'Import a previously exported configuration and state'
|
||||
complete -c am -n "__fish_am_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l category -d 'Only show agents of this category' -r
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l sort -d 'Sort by name, version or status (default: name)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l installed-only -d 'Only show agents that are installed (managed or external)'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l all -d 'Include hidden agents as well'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l all -d 'Show every agent known to the catalog, not only the installed ones'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l running -d 'Only show running agents'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -62,9 +91,236 @@ complete -c am -n "__fish_am_using_subcommand list" -l dry-run -d 'Simulate the
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l lines -d 'Number of lines to show (default: 20)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l follow -d 'Follow the log as it grows'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand logs" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand open" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand open" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand open" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l interval -d 'Check interval in seconds (default: 5)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l restart -d 'Restart the agent automatically when it dies (with backoff)'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l notify -d 'Desktop notification on every restart'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand watch" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand dashboard" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand favorite" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand unfavorite" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand note" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand note" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand note" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand tag" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand untag" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand tags" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -f -a "list" -d 'List every defined profile'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and not __fish_seen_subcommand_from list show" -f -a "show" -d 'Show one profile in detail (agent, env, args)'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand profile; and __fish_seen_subcommand_from show" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -l output -d 'Write the page(s) to this directory instead of stdout' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand man" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand man" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand man" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand man" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -l installed -d 'Only installed agents (managed + external), aliases and groups'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand _agents" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -f -a "add" -d 'Add an alias (am alias add cc claude-code)'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -f -a "remove" -d 'Remove an alias'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and not __fish_seen_subcommand_from add remove list" -f -a "list" -d 'List every alias'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from remove" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand alias; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -f -a "set" -d 'Store a secret for an agent'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -f -a "unset" -d 'Remove a secret'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and not __fish_seen_subcommand_from set unset list" -f -a "list" -d 'List stored secret names (values are never shown)'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l agent -d 'Agent it belongs to' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l value -d 'Secret value (prefer --value over shell history; never logged)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from set" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -l agent -d 'Agent it belongs to' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from unset" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand secret; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand start" -l args -d 'Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand start" -l env -d 'Set an environment variable for the agent (repeatable): --env KEY=VALUE' -r
|
||||
complete -c am -n "__fish_am_using_subcommand start" -l profile -d 'Apply an environment profile (env + args, defined in the config)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand start" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand start" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand start" -s b -l background -d 'Run detached in the background; output goes to the agent log file'
|
||||
complete -c am -n "__fish_am_using_subcommand start" -s f -l foreground -d 'Run in the foreground, attached to this terminal (the default)'
|
||||
complete -c am -n "__fish_am_using_subcommand start" -l notify -d 'Send a desktop notification once the agent has started'
|
||||
@@ -77,6 +333,7 @@ complete -c am -n "__fish_am_using_subcommand start" -l no-color -d 'Disable ANS
|
||||
complete -c am -n "__fish_am_using_subcommand start" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -l timeout -d 'Grace period in seconds before killing (default: from config, 5s)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -l force -d 'Kill immediately instead of terminating gracefully'
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -87,8 +344,10 @@ complete -c am -n "__fish_am_using_subcommand stop" -l no-color -d 'Disable ANSI
|
||||
complete -c am -n "__fish_am_using_subcommand stop" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l args -d 'Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l env -d 'Set an environment variable for the agent (repeatable): --env KEY=VALUE' -r
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l profile -d 'Apply an environment profile (env + args, defined in the config)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l timeout -d 'Grace period in seconds before killing (default: from config, 5s)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -s b -l background -d 'Run detached in the background; output goes to the agent log file'
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -s f -l foreground -d 'Run in the foreground, attached to this terminal (the default)'
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l notify -d 'Send a desktop notification once the agent has started'
|
||||
@@ -101,6 +360,7 @@ complete -c am -n "__fish_am_using_subcommand restart" -l json -d 'Emit machine-
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand restart" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand status" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand status" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand status" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand status" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand status" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -108,8 +368,88 @@ complete -c am -n "__fish_am_using_subcommand status" -l dry-run -d 'Simulate th
|
||||
complete -c am -n "__fish_am_using_subcommand status" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand status" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand status" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l project -d 'Only sessions of this project' -r
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l status -d 'Only sessions with this status (running, stopped, failed, interrupted)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l show -d 'Show one session in detail (summary + log excerpt)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l resume -d 'Resume a finished session: relaunch the agent with its recorded arguments' -r
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand sessions" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -l period -d 'Only events of the last period (7d, 30d, 90d, all)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand stats" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -l period -d 'Only events of the last period (7d, 30d, 90d, all)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand top" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand top" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand top" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand top" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l output -d 'Output file (default: report-YYYYMMDD.md in the state directory)' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand report" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l last-week -d 'Cover the last 7 days'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l last-month -d 'Cover the last 30 days'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand report" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand projects" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l project -d 'Only activity of this project' -r
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l since -d 'Only activity at or after this date (YYYY-MM-DD or RFC 3339)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l limit -d 'Maximum number of entries (default: 50)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand timeline" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l kind -d 'Only these event kinds (comma separated: start,stop,run,install,...)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l since -d 'Only events at or after this date (YYYY-MM-DD or RFC 3339)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l limit -d 'Maximum number of events (default: 50)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand log" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l follow -d 'Follow the journal as new events arrive'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand log" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand install" -l method -d 'Select the install method (index, or type: npm, pip, uv, cargo, go, bun, curl, binary, git)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand install" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand install" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand install" -l force -d 'Reinstall even if already installed'
|
||||
complete -c am -n "__fish_am_using_subcommand install" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand install" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -119,6 +459,7 @@ complete -c am -n "__fish_am_using_subcommand install" -l json -d 'Emit machine-
|
||||
complete -c am -n "__fish_am_using_subcommand install" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand install" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -l purge -d 'Also remove logs and the agent entry from the user config file'
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -128,6 +469,7 @@ complete -c am -n "__fish_am_using_subcommand uninstall" -l json -d 'Emit machin
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand uninstall" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand update" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand update" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand update" -l all -d 'Update every installed managed agent'
|
||||
complete -c am -n "__fish_am_using_subcommand update" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand update" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -137,7 +479,9 @@ complete -c am -n "__fish_am_using_subcommand update" -l json -d 'Emit machine-r
|
||||
complete -c am -n "__fish_am_using_subcommand update" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand update" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand search" -l category -d 'Restrict to this category' -r
|
||||
complete -c am -n "__fish_am_using_subcommand search" -l tag -d 'Only agents carrying this personal tag' -r
|
||||
complete -c am -n "__fish_am_using_subcommand search" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand search" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand search" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand search" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand search" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -145,7 +489,24 @@ complete -c am -n "__fish_am_using_subcommand search" -l dry-run -d 'Simulate th
|
||||
complete -c am -n "__fish_am_using_subcommand search" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand search" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand search" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l kind -d 'Only commands of this kind (am or shell)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l cwd -d 'Only commands run in this directory' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l search -d 'Full-text search in the command line' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l session -d 'Only commands of this session' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l limit -d 'Maximum number of entries (default: 100)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l rerun -d 'Re-run the Nth most recent entry (with confirmation)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l failed -d 'Only failed commands'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand history" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand info" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand info" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand info" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand info" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand info" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -153,21 +514,52 @@ complete -c am -n "__fish_am_using_subcommand info" -l dry-run -d 'Simulate the
|
||||
complete -c am -n "__fish_am_using_subcommand info" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand info" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand info" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "show" -d 'Print the effective (merged) configuration as YAML'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "path" -d 'Print the location of the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "edit" -d 'Open the user configuration file in your editor'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "validate" -d 'Validate the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "add" -d 'Add another agent definition file to the user configuration'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand init" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand init" -l force -d 'Overwrite an existing agent-manager.yaml'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand init" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -l find -d 'Search through all help commands table' -r
|
||||
complete -c am -n "__fish_am_using_subcommand help" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand help" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand help" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand help" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand version" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand version" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand version" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "show" -d 'Print the effective (merged) configuration as YAML'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "path" -d 'Print the location of the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "edit" -d 'Open the user configuration file in your editor'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "validate" -d 'Validate the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "add" -d 'Add another agent definition file to the user configuration'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and not __fish_seen_subcommand_from show path edit validate add set" -f -a "set" -d 'Set one configuration key without an editor (config set settings.default_shell pwsh)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -176,6 +568,7 @@ complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from show" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -184,6 +577,7 @@ complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from path" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -192,6 +586,7 @@ complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from edit" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -200,6 +595,7 @@ complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from validate" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -207,13 +603,17 @@ complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from add" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "show" -d 'Print the effective (merged) configuration as YAML'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "path" -d 'Print the location of the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "edit" -d 'Open the user configuration file in your editor'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "validate" -d 'Validate the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "add" -d 'Add another agent definition file to the user configuration'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand config; and __fish_seen_subcommand_from set" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -l fix -d 'Attempt to repair problems (create directories, fix the state file)'
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -223,6 +623,7 @@ complete -c am -n "__fish_am_using_subcommand doctor" -l json -d 'Emit machine-r
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand doctor" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand run" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand run" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand run" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand run" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand run" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -231,6 +632,8 @@ complete -c am -n "__fish_am_using_subcommand run" -l json -d 'Emit machine-read
|
||||
complete -c am -n "__fish_am_using_subcommand run" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand run" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -l installed -d 'Add dynamic completion of the installed agents, aliases and groups (queried from \'am _agents\' at Tab time)'
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -240,6 +643,7 @@ complete -c am -n "__fish_am_using_subcommand completion" -l no-color -d 'Disabl
|
||||
complete -c am -n "__fish_am_using_subcommand completion" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -l to -d 'Download the new binary to this path instead of replacing the current one' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -l check -d 'Only check whether a newer version exists'
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
@@ -248,8 +652,18 @@ complete -c am -n "__fish_am_using_subcommand self-update" -l dry-run -d 'Simula
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand self-update" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -l dry-run -d 'Simulate the action without changing anything'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand self-uninstall" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c am -n "__fish_am_using_subcommand export" -l output -d 'Output file (default: am-export.json)' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand export" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand export" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand export" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand export" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand export" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -258,6 +672,7 @@ complete -c am -n "__fish_am_using_subcommand export" -l json -d 'Emit machine-r
|
||||
complete -c am -n "__fish_am_using_subcommand export" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand export" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand import" -s c -l config -d 'Use an alternate configuration file' -r -F
|
||||
complete -c am -n "__fish_am_using_subcommand import" -l theme -d 'Color theme for the output (see \'am help theme\' for the list)' -r
|
||||
complete -c am -n "__fish_am_using_subcommand import" -s v -l verbose -d 'Verbose output: show every command executed and its details'
|
||||
complete -c am -n "__fish_am_using_subcommand import" -s q -l quiet -d 'Quiet mode: only errors are printed'
|
||||
complete -c am -n "__fish_am_using_subcommand import" -s y -l yes -d 'Answer yes to every confirmation prompt'
|
||||
@@ -265,26 +680,3 @@ complete -c am -n "__fish_am_using_subcommand import" -l dry-run -d 'Simulate th
|
||||
complete -c am -n "__fish_am_using_subcommand import" -l json -d 'Emit machine-readable JSON on stdout (for scripts)'
|
||||
complete -c am -n "__fish_am_using_subcommand import" -l no-color -d 'Disable ANSI colors'
|
||||
complete -c am -n "__fish_am_using_subcommand import" -s h -l help -d 'Print help'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "list" -d 'List agents: installed ones, or every agent known to the catalog'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "start" -d 'Start an agent (foreground by default, or detached with --background)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "stop" -d 'Stop a background agent (SIGTERM, then SIGKILL after the timeout)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "restart" -d 'Restart an agent: stop, then start with the same options'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "status" -d 'Show the state of one agent, or of every installed agent'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "install" -d 'Install an agent and its dependencies'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "uninstall" -d 'Uninstall an agent and clean its files'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "update" -d 'Update an installed agent to the latest available version'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "search" -d 'Search the catalog by keyword (name, description, category, tags)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "info" -d 'Show detailed information about one agent'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "config" -d 'Manage the configuration file'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "doctor" -d 'Check the environment: tools, config validity, paths, permissions'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "run" -d 'Run the agent command directly with the given arguments (no process management)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "completion" -d 'Generate a shell completion script'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "self-update" -d 'Update agent-manager itself from GitHub Releases'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "export" -d 'Export the configuration and installation state (backup)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "import" -d 'Import a previously exported configuration and state'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and not __fish_seen_subcommand_from list start stop restart status install uninstall update search info config doctor run completion self-update export import help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and __fish_seen_subcommand_from config" -f -a "show" -d 'Print the effective (merged) configuration as YAML'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and __fish_seen_subcommand_from config" -f -a "path" -d 'Print the location of the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and __fish_seen_subcommand_from config" -f -a "edit" -d 'Open the user configuration file in your editor'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and __fish_seen_subcommand_from config" -f -a "validate" -d 'Validate the configuration file(s)'
|
||||
complete -c am -n "__fish_am_using_subcommand help; and __fish_seen_subcommand_from config" -f -a "add" -d 'Add another agent definition file to the user configuration'
|
||||
|
||||
+206
-9
@@ -18,7 +18,106 @@ settings:
|
||||
auto_install_deps: true # offer to install missing dependencies
|
||||
confirm_before_run: true # confirm before running install scripts
|
||||
stop_timeout_secs: 5 # SIGTERM grace period before SIGKILL
|
||||
self_update_repo: null # e.g. "you/agent-manager" for am self-update
|
||||
self_update_repo: Projets/agent-manager # repo used by am self-update (release assets)
|
||||
self_update_base_url: https://git.dracodev.net/api/v1 # serveur de release (Gitea ici; GitHub: https://api.github.com)
|
||||
models_prune_days: 30 # un modèle est candidat au prune après N jours sans usage (#73)
|
||||
catalog_cache_ttl_secs: 3600 # TTL du cache des catalogues distants (#60 #67)
|
||||
catalog_url: null # URL officielle du catalogue distant (défaut: config.yaml du repo) (#60)
|
||||
backups_keep: 5 # nombre de backups conservés pour am update --rollback (#64)
|
||||
sessions_retention_days: 90 # purge des sessions terminées au-delà de N jours (#53)
|
||||
# Prix des modèles (USD par million de tokens) pour am stats --costs (#49).
|
||||
# cost_models: # décommenter pour surcharger
|
||||
# claude-sonnet-4: { input_per_mtok: 3.0, output_per_mtok: 15.0 }
|
||||
# deepseek-chat: { input_per_mtok: 0.27, output_per_mtok: 1.10 }
|
||||
# Seuils d'alerte de am monitor (#50) : 0 désactive le seuil.
|
||||
# monitor_thresholds:
|
||||
# cpu_pct: 80.0
|
||||
# mem_mb: 2048
|
||||
# Plugins d'événements (#75) : scripts exécutés sur on_install/on_start/
|
||||
# on_stop/on_update, contrat JSON stdin/stdout, timeout, échec non bloquant.
|
||||
# Le répertoire <state>/plugins/ contient les scripts (+ manifeste .yaml).
|
||||
# plugins:
|
||||
# timeout_secs: 10 # temps max d'un plugin (défaut 10 s)
|
||||
# enabled: [notify] # vide = tous les plugins du répertoire
|
||||
# Sauvegarde git de l'état (#66) : dépôt où am sync pousse state.json,
|
||||
# le journal et l'historique (logs/ et backups/ exclus automatiquement).
|
||||
# sync_repo: https://git.dracodev.net/bruno/am-state.git
|
||||
# sync_on_exit: true # pousse automatiquement à la fermeture du REPL (opt-in)
|
||||
# Télémétrie anonyme opt-in (#76) : compteurs agrégés uniquement (jamais de
|
||||
# chemins, commandes ni identifiants). Désactivée par défaut — RIEN n'est
|
||||
# collecté ni envoyé tant que enabled n'est pas explicitement true.
|
||||
# telemetry:
|
||||
# enabled: false
|
||||
# endpoint: https://exemple.tld/v1/ping # optionnel : envoi batch périodique
|
||||
# am ask (#78) : langage naturel → commande am. Les règles locales marchent
|
||||
# toujours, hors-ligne, sans dépendance. Le raffinement LLM optionnel passe
|
||||
# par le registre providers (base_url + token du keyring + modèle) — seul
|
||||
# le texte de la requête est envoyé, jamais les données du journal.
|
||||
# ask:
|
||||
# enabled: true # false désactive entièrement am ask
|
||||
# provider: deepseek # optionnel (défaut: settings.default_provider)
|
||||
# model: deepseek-chat # optionnel (défaut: modèle par défaut du provider)
|
||||
# Registre communautaire (#77) : sources de catalogues de confiance +
|
||||
# auteur par défaut pour am registry publish. L'installation d'une source
|
||||
# inconnue exige une confirmation (checksum sha256 vérifié avant tout).
|
||||
# registry:
|
||||
# sources:
|
||||
# - https://git.dracodev.net/bruno/am-catalog/raw/branch/main/am-catalog.yaml
|
||||
# author: bruno
|
||||
# am ai (#96 #97) : politique de sécurité Shell AI. dry-run par défaut —
|
||||
# aucune commande modifiante n'est exécutée sans confirmation explicite
|
||||
# (--yes). `confirm` demande validation pour les commandes risky ;
|
||||
# `auto` exécute tout (déconseillé). Les motifs supplémentaires s'ajoutent
|
||||
# aux patterns intégrés (rm -rf, dd if, mkfs, chmod -R 777, ...).
|
||||
# shell_ai:
|
||||
# default_safety: dry-run # dry-run | confirm | auto
|
||||
# risky_patterns:
|
||||
# - "rm -rf"
|
||||
# - "> /dev"
|
||||
# - "dd if"
|
||||
# Profil sandbox par agent (#79) : commandes autorisées (binaires), répertoires
|
||||
# de travail et politique réseau. Désactivé par défaut (mode non sandboxé).
|
||||
# Les tentatives refusées sont journalisées (events sandbox) pour l'audit.
|
||||
# Exemple dans un agent :
|
||||
# sandbox:
|
||||
# enabled: true
|
||||
# commands: [python, git]
|
||||
# dirs: ["~/workspace"]
|
||||
# network: false
|
||||
# Registre des providers LLM (#88) : nom -> base_url, modèles, modèle par
|
||||
# défaut. Le provider par défaut est utilisé à l'install/au run quand aucun
|
||||
# n'est donné (issue #90). Les tokens ne vont JAMAIS ici — ils vivent dans
|
||||
# le keyring OS sous providers/<nom>/api_key (issue #89, am providers set-token).
|
||||
# Pour retirer un provider du catalogue par défaut : am providers remove <nom>
|
||||
# (écrit "<nom>: null" dans votre config — le null supprime l'entrée au merge).
|
||||
default_provider: anthropic
|
||||
providers:
|
||||
anthropic:
|
||||
base_url: https://api.anthropic.com/v1
|
||||
default_model: claude-sonnet-4-5
|
||||
models: [claude-sonnet-4-5, claude-opus-4-1, claude-haiku-4-5]
|
||||
openai:
|
||||
base_url: https://api.openai.com/v1
|
||||
default_model: gpt-5.2
|
||||
models: [gpt-5.2, gpt-5.1-mini, o4-mini]
|
||||
deepseek:
|
||||
base_url: https://api.deepseek.com
|
||||
default_model: deepseek-chat
|
||||
models: [deepseek-chat, deepseek-reasoner]
|
||||
google:
|
||||
base_url: https://generativelanguage.googleapis.com/v1beta
|
||||
default_model: gemini-2.5-pro
|
||||
models: [gemini-2.5-pro, gemini-2.5-flash]
|
||||
openrouter:
|
||||
base_url: https://openrouter.ai/api/v1
|
||||
default_model: deepseek/deepseek-chat-v3-0324
|
||||
models:
|
||||
- deepseek/deepseek-chat-v3-0324
|
||||
- anthropic/claude-sonnet-4.5
|
||||
- openai/gpt-4o
|
||||
- google/gemini-2.5-pro
|
||||
- meta-llama/llama-3.3-70b-instruct
|
||||
- mistralai/mistral-large-2411
|
||||
|
||||
# --- Command aliases ----------------------------------------------------------
|
||||
aliases:
|
||||
@@ -30,6 +129,7 @@ aliases:
|
||||
gjc: gajae-code
|
||||
tiny: tiny-agents
|
||||
continue: continue-cli
|
||||
ai: aichat
|
||||
|
||||
# --- Groups (start/stop/restart several agents together) ----------------------
|
||||
groups:
|
||||
@@ -54,6 +154,12 @@ agents:
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0", install_hint: "https://nodejs.org" }
|
||||
run: claude
|
||||
provider: anthropic
|
||||
config:
|
||||
env_map:
|
||||
api_key: ANTHROPIC_API_KEY
|
||||
model: ANTHROPIC_MODEL
|
||||
base_url: ANTHROPIC_BASE_URL
|
||||
tags: [anthropic, assistant, source-available, mainstream]
|
||||
|
||||
- name: deepseek-harness
|
||||
@@ -67,6 +173,7 @@ agents:
|
||||
dependencies:
|
||||
- { name: node, min_version: "20.0.0", install_hint: "https://nodejs.org" }
|
||||
run: dsh
|
||||
provider: deepseek
|
||||
tags: [deepseek, harness, multi-agent, plugins, web-ui]
|
||||
|
||||
- name: hermes-agent
|
||||
@@ -207,6 +314,11 @@ agents:
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0", install_hint: "https://nodejs.org" }
|
||||
run: codex
|
||||
config:
|
||||
env_map:
|
||||
api_key: OPENAI_API_KEY
|
||||
model: OPENAI_MODEL
|
||||
base_url: OPENAI_BASE_URL
|
||||
tags: [openai, mainstream]
|
||||
|
||||
- name: openhands
|
||||
@@ -341,14 +453,14 @@ agents:
|
||||
|
||||
- name: kimi-cli
|
||||
display_name: "Kimi CLI"
|
||||
description: "Agent CLI officiel Moonshot AI, skills, MCP, intégration ACP IDE (Apache-2.0)."
|
||||
description: "Agent CLI officiel Moonshot AI, skills, MCP, intégration ACP IDE (Apache-2.0). Installé via uv (paquet PyPI kimi-cli)."
|
||||
category: coding-agent
|
||||
website: https://github.com/MoonshotAI/kimi-cli
|
||||
install:
|
||||
type: npm
|
||||
package: "@moonshotai/kimi-cli"
|
||||
type: uv
|
||||
package: kimi-cli
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0", install_hint: "https://nodejs.org" }
|
||||
- { name: uv, min_version: "0.4.0", install_hint: "https://docs.astral.sh/uv" }
|
||||
run: kimi
|
||||
tags: [moonshot, skills, mcp]
|
||||
|
||||
@@ -457,6 +569,15 @@ agents:
|
||||
repo: 1ay1/agentty
|
||||
binary: agentty
|
||||
run: agentty
|
||||
config:
|
||||
provider_default: openai
|
||||
env_map:
|
||||
api_key: AGENTTY_API_KEY
|
||||
model: AGENTTY_MODEL
|
||||
base_url: AGENTTY_BASE_URL
|
||||
files:
|
||||
- path: ~/.config/agentty/config.toml
|
||||
keys: [model, base_url]
|
||||
tags: [c++, static, sandbox]
|
||||
|
||||
- name: nullclaw
|
||||
@@ -699,6 +820,9 @@ agents:
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0", install_hint: "https://nodejs.org" }
|
||||
run: "npx lazycodex-ai"
|
||||
# Sonde PATH explicite : le premier mot de `run` est npx (interpréteur) —
|
||||
# sans `detect`, npx sur le PATH suffirait à déclarer l'agent « external ».
|
||||
detect: lazycodex-ai
|
||||
note: "s'intègre dans Codex (nécessite @openai/codex)"
|
||||
tags: [harness, codex, plan]
|
||||
|
||||
@@ -771,6 +895,71 @@ agents:
|
||||
note: "étapes de build spécifiques au repo — consultez son README"
|
||||
tags: [simulator, orchestration]
|
||||
|
||||
# ---------------------------------------------------------------- Shell AI
|
||||
- name: aichat
|
||||
display_name: "AIChat"
|
||||
description: "All-in-one LLM CLI avec Shell Assistant, Chat-REPL, RAG, AI Tools & Agents et support fichiers/répertoires (-f). Idéal pour exécuter des micro-tâches shell via langage naturel (issue #94)."
|
||||
category: shell-ai
|
||||
website: https://github.com/sigoden/aichat
|
||||
install:
|
||||
type: binary
|
||||
repo: sigoden/aichat
|
||||
binary: aichat
|
||||
run: aichat
|
||||
tags: [shell, rust, multi-provider, rag, local, fast]
|
||||
|
||||
- name: ai-cli
|
||||
display_name: "AI CLI"
|
||||
description: "Traduit le langage naturel en commandes shell (OpenAI, OpenRouter ou serveur local) avec politique de sécurité (risk / certainty) avant exécution (issue #95)."
|
||||
category: shell-ai
|
||||
website: https://github.com/kriserickson/ai-cli
|
||||
install:
|
||||
type: binary
|
||||
repo: kriserickson/ai-cli
|
||||
binary: ai
|
||||
run: ai
|
||||
tags: [shell, go, safety, multi-provider]
|
||||
|
||||
- name: fabric
|
||||
display_name: "Fabric"
|
||||
description: "Framework open source pour augmenter les humains avec l'IA : patterns réutilisables (summarize, extract wisdom, analyse de contenu), CLI Go 43k+ stars (issue #95)."
|
||||
category: shell-ai
|
||||
website: https://github.com/danielmiessler/fabric
|
||||
install:
|
||||
type: go
|
||||
package: github.com/danielmiessler/fabric/cmd/fabric@latest
|
||||
dependencies:
|
||||
- { name: go, min_version: "1.22.0", install_hint: "https://go.dev/dl" }
|
||||
run: fabric
|
||||
tags: [patterns, go, content]
|
||||
|
||||
- name: shell-ai
|
||||
display_name: "Shell AI"
|
||||
description: "Agent ReAct local-first propulsé par Ollama : zéro réseau, outils filesystem, exécution de commandes shell et intégration MCP (issue #95)."
|
||||
category: shell-ai
|
||||
website: https://github.com/nishant9083/shell-ai
|
||||
install:
|
||||
type: npm
|
||||
package: "@shell-ai/cli"
|
||||
dependencies:
|
||||
- { name: node, min_version: "18.0.0", install_hint: "https://nodejs.org" }
|
||||
run: shell-ai
|
||||
note: "nécessite Ollama et un modèle (ollama pull gpt-oss) — agent jeune (15 stars)"
|
||||
tags: [shell, ollama, local, mcp, typescript]
|
||||
|
||||
- name: shellgpt
|
||||
display_name: "ShellGPT"
|
||||
description: "Outil de productivité CLI propulsé par LLM (GPT-5…) : génère et exécute des commandes shell, écrit du code et des docs, 12k+ stars (issue #95)."
|
||||
category: shell-ai
|
||||
website: https://github.com/TheR1D/shell_gpt
|
||||
install:
|
||||
type: pip
|
||||
package: shell-gpt
|
||||
dependencies:
|
||||
- { name: python, min_version: "3.10.0", install_hint: "https://python.org" }
|
||||
run: sgpt
|
||||
tags: [shell, python, multi-provider]
|
||||
|
||||
# ----------------------------------------------------- Écosystème OpenClaw
|
||||
- name: openclaw
|
||||
display_name: "OpenClaw"
|
||||
@@ -796,6 +985,9 @@ agents:
|
||||
dependencies:
|
||||
- { name: python, min_version: "3.9.0", install_hint: "https://python.org" }
|
||||
run: "python -m nanobot"
|
||||
# Sonde PATH explicite : le premier mot de `run` est python (interpréteur) —
|
||||
# sans `detect`, /usr/bin/python suffirait à déclarer l'agent « external ».
|
||||
detect: nanobot
|
||||
tags: [python, lightweight]
|
||||
|
||||
- name: zeroclaw
|
||||
@@ -829,11 +1021,16 @@ agents:
|
||||
category: assistant
|
||||
website: https://github.com/sipeed/picoclaw
|
||||
install:
|
||||
type: git
|
||||
repo: "https://github.com/sipeed/picoclaw"
|
||||
dependencies:
|
||||
- { name: go, min_version: "1.21.0", install_hint: "https://go.dev/dl" }
|
||||
type: binary
|
||||
repo: sipeed/picoclaw
|
||||
binary: picoclaw
|
||||
run: picoclaw
|
||||
# PicoClaw gère sa config par sous-commandes (pas de fichier à écrire) :
|
||||
# ces commandes sont affichées après l'install avec {model} substitué.
|
||||
setup_hints:
|
||||
- "picoclaw onboard"
|
||||
- "picoclaw model {model}"
|
||||
- "picoclaw auth login"
|
||||
tags: [go, tiny]
|
||||
|
||||
- name: ironclaw
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# Tâche de benchmark (issue #62) : les mêmes arguments sont passés à la
|
||||
# commande de chaque agent. Copier dans <state_dir>/lab/ ou passer un
|
||||
# chemin explicite :
|
||||
# am lab --agents claude-code,aider --task hello.yaml --json
|
||||
name: hello
|
||||
description: "Répondre à la question la plus simple (sanity check du lab)."
|
||||
args: ["--prompt", "Réponds uniquement 'coucou' et rien d'autre."]
|
||||
# timeout: 300 # secondes par agent (défaut 600) — --timeout l'emporte
|
||||
@@ -0,0 +1,31 @@
|
||||
# Plugin scripts — agent-manager (issue #75)
|
||||
#
|
||||
# Les plugins sont des points d'extension par script, exécutés sur les
|
||||
# événements du cycle de vie des agents (complément des hooks de l'axe 6) :
|
||||
# on_install · on_start · on_stop · on_update
|
||||
#
|
||||
# Contrat :
|
||||
# - entrée : l'événement JSON sur stdin
|
||||
# {"event":"on_start","kind":"start","ts":"…","agent":"claude-code",
|
||||
# "pid":1234,"cwd":"…","project":"…","args":[…],"env_keys":[…],…}
|
||||
# - sortie : un objet JSON sur stdout
|
||||
# {"ok": true, "message": "…", "data": {…}}
|
||||
# ou {"ok": false, "error": "…"} — signalé en warning, jamais fatal
|
||||
# - une sortie invalide (pas de JSON) est signalée en warning sans casser am
|
||||
# - un plugin qui dépasse son timeout est tué (défaut 10 s)
|
||||
# - les plugins n'ont pas accès aux valeurs des secrets (env_keys seulement)
|
||||
# - AM_PLUGINS_RUNNING=1 est exporté pendant un plugin : un am imbriqué
|
||||
# saute les plugins (anti-récursion)
|
||||
#
|
||||
# Installation :
|
||||
# cp notify.py notify.yaml ~/.local/state/agent-manager/plugins/ (Linux)
|
||||
# cp notify.py notify.yaml %LOCALAPPDATA%\agent-manager\plugins\ (Windows)
|
||||
#
|
||||
# Vérification :
|
||||
# am plugins # liste les plugins découverts
|
||||
# am plugins --test notify # exécute le contrat sur un événement de test
|
||||
#
|
||||
# Configuration (config.yaml) :
|
||||
# plugins:
|
||||
# timeout_secs: 10 # temps max d'un plugin (défaut 10 s)
|
||||
# enabled: [notify] # vide = tous les plugins du répertoire
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Plugin exemple (issue #75) : poste les événements install/update vers un
|
||||
webhook CI. Si la variable d'environnement CI_WEBHOOK_URL n'est pas définie,
|
||||
le plugin répond ok sans rien faire (échec non bloquant, jamais fatal).
|
||||
|
||||
Exemple : CI_WEBHOOK_URL=https://hooks.example.com/am-ci am update --all
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import urllib.request
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ev = json.load(sys.stdin)
|
||||
url = os.environ.get("CI_WEBHOOK_URL")
|
||||
if not url:
|
||||
print(json.dumps({"ok": True, "message": "CI_WEBHOOK_URL non définie — rien à faire"}))
|
||||
return 0
|
||||
req = urllib.request.Request(
|
||||
url,
|
||||
data=json.dumps(ev).encode(),
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=5) as resp:
|
||||
status = resp.status
|
||||
except Exception as exc: # échec non bloquant : warning seulement
|
||||
print(json.dumps({"ok": False, "error": f"webhook: {exc}"}))
|
||||
return 0
|
||||
print(json.dumps({"ok": True, "message": f"webhook {status}"}))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,4 @@
|
||||
# Manifest du plugin ci-webhook (issue #75).
|
||||
command: "python ci-webhook.py" # Linux : "python3 ci-webhook.py"
|
||||
events: [on_install, on_update]
|
||||
timeout_secs: 10
|
||||
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Plugin exemple (issue #75) : notifie le démarrage / l'arrêt d'un agent.
|
||||
|
||||
Contrat : l'événement JSON arrive sur stdin, la réponse JSON part sur stdout.
|
||||
Installation : copier notify.py + notify.yaml dans <state_dir>/plugins/ puis
|
||||
relancer am. Test : am plugins --test notify
|
||||
"""
|
||||
|
||||
import json
|
||||
import sys
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ev = json.load(sys.stdin)
|
||||
agent = ev.get("agent") or "inconnu"
|
||||
event = ev.get("event", "?")
|
||||
pid = ev.get("pid")
|
||||
detail = f" (pid {pid})" if pid else ""
|
||||
print(json.dumps({"ok": True, "message": f"{event} de {agent}{detail}"}))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,7 @@
|
||||
# Manifest du plugin notify (issue #75).
|
||||
# command: interpréteur + script (indispensable sur Windows pour .py).
|
||||
command: "python notify.py" # Linux : "python3 notify.py"
|
||||
# Événements écoutés (défaut : les 4 événements du cycle de vie).
|
||||
events: [on_start, on_stop]
|
||||
# Temps maximal d'exécution avant kill (défaut : settings.plugins.timeout_secs, 10).
|
||||
timeout_secs: 5
|
||||
+11
-1
@@ -24,7 +24,7 @@ function Install-FromSource {
|
||||
Write-Host "Installation depuis les sources (cargo install --git $BaseUrl.git) ..."
|
||||
cargo install --git "$BaseUrl.git" --locked
|
||||
if ($LASTEXITCODE -ne 0) { Fail "cargo install a echoue" }
|
||||
$bin = Join-Path $env:USERPROFILE ".cargo\binam.exe"
|
||||
$bin = Join-Path $env:USERPROFILE ".cargo\bin\am.exe"
|
||||
Write-Host ""
|
||||
Write-Host "OK - am est installe dans $bin"
|
||||
Write-Host "Essayez : am list | am doctor (mise a jour : relancez ce script)"
|
||||
@@ -47,7 +47,10 @@ if ($arch -eq "x86_64") {
|
||||
$tmpDir = Join-Path $env:TEMP "am-$tag"
|
||||
Remove-Item $tmpDir -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Expand-Archive -Path $tmp -DestinationPath $tmpDir -Force
|
||||
# L'entrée de l'archive varie selon le pipeline : « am.exe » ou
|
||||
# « am-windows-x86_64.exe » (nom de l'asset). Accepter les deux.
|
||||
$exe = Join-Path $tmpDir "am.exe"
|
||||
if (-not (Test-Path $exe)) { $exe = Join-Path $tmpDir "am-windows-x86_64.exe" }
|
||||
if (Test-Path $exe) {
|
||||
New-Item -ItemType Directory -Force -Path $binDir | Out-Null
|
||||
Copy-Item $exe (Join-Path $binDir "am.exe") -Force
|
||||
@@ -75,6 +78,13 @@ if (-not $InstallDir) {
|
||||
$env:Path = "$binDir;$env:Path"
|
||||
& (Join-Path $binDir "am.exe") --version
|
||||
Write-Host ""
|
||||
# Épique v1.1.0 : wizard d'onboarding (provider + token + aichat + rôles)
|
||||
# uniquement quand stdin est un terminal interactif (pas en CI).
|
||||
if ([Console]::IsInputRedirected -eq $false) {
|
||||
Write-Host "Configuration initiale (provider, token, aichat) :"
|
||||
& (Join-Path $binDir "am.exe") setup
|
||||
}
|
||||
Write-Host ""
|
||||
Write-Host "OK - 'am' est installe. Essayez :"
|
||||
Write-Host " am list"
|
||||
Write-Host " am doctor"
|
||||
|
||||
+26
-3
@@ -22,6 +22,13 @@ case "$arch" in
|
||||
*) fail "architecture non supportée: $arch" ;;
|
||||
esac
|
||||
|
||||
os=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
case "$os" in
|
||||
linux) platform="linux" ;;
|
||||
darwin) platform="macos" ;;
|
||||
*) fail "système non supporté: $os" ;;
|
||||
esac
|
||||
|
||||
install_from_source() {
|
||||
if ! command -v cargo >/dev/null 2>&1; then
|
||||
fail "pas de binaire précompilé pour $arch et cargo est absent — installez Rust (https://rustup.rs) puis relancez"
|
||||
@@ -45,14 +52,23 @@ fi
|
||||
|
||||
installed=""
|
||||
if [ -n "$tag" ] && command -v curl >/dev/null 2>&1; then
|
||||
asset="am-linux-$arch.tar.gz"
|
||||
asset="am-$platform-$arch.tar.gz"
|
||||
url="$BASE_URL/releases/download/$tag/$asset"
|
||||
echo "Téléchargement de $url …"
|
||||
if curl -fsSL --connect-timeout 20 -o "$tmpdir/am.tar.gz" "$url"; then
|
||||
tar -xzf "$tmpdir/am.tar.gz" -C "$tmpdir" 2>/dev/null || true
|
||||
if [ -f "$tmpdir/am" ]; then
|
||||
# L'entrée de l'archive varie selon le pipeline CI : « am » ou
|
||||
# « am-linux-x86_64 » (nom de la release). Prendre le premier fichier
|
||||
# extrait.
|
||||
bin=""
|
||||
for cand in "$tmpdir/am" "$tmpdir/am-$platform-$arch" "$tmpdir/am-$arch" "$tmpdir"/*; do
|
||||
if [ -f "$cand" ] && [ -z "$bin" ]; then
|
||||
bin="$cand"
|
||||
fi
|
||||
done
|
||||
if [ -n "$bin" ]; then
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
cp "$tmpdir/am" "$INSTALL_DIR/am"
|
||||
cp "$bin" "$INSTALL_DIR/am"
|
||||
chmod +x "$INSTALL_DIR/am"
|
||||
installed=1
|
||||
fi
|
||||
@@ -77,6 +93,13 @@ esac
|
||||
|
||||
"$INSTALL_DIR/am" --version || true
|
||||
echo ""
|
||||
# Épique v1.1.0 : wizard d'onboarding (provider + token + aichat + rôles)
|
||||
# uniquement quand stdin est un terminal interactif (pas en CI).
|
||||
if [ -t 0 ]; then
|
||||
echo "Configuration initiale (provider, token, aichat) :"
|
||||
"$INSTALL_DIR/am" setup
|
||||
fi
|
||||
echo ""
|
||||
echo "OK — 'am' est installé. Essayez :"
|
||||
echo " am list"
|
||||
echo " am doctor"
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-ai 1 "ai "
|
||||
.SH NAME
|
||||
ai \- Langage naturel → action shell via AIChat (issues #96 #97); alias: shell
|
||||
.SH SYNOPSIS
|
||||
\fBai\fR [\fB\-e\fR|\fB\-\-exec\fR] [\fB\-f\fR|\fB\-\-files\fR] [\fB\-\-provider\fR] [\fB\-\-model\fR] [\fB\-\-role\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIPROMPT\fR>
|
||||
.SH DESCRIPTION
|
||||
Langage naturel → action shell via AIChat (issues #96 #97); alias: shell
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-e\fR, \fB\-\-exec\fR
|
||||
Execute the generated shell command (after the safety policy)
|
||||
.TP
|
||||
\fB\-f\fR, \fB\-\-files\fR \fI<PATH>\fR
|
||||
Files or directories passed as context (repeatable; default: the current directory)
|
||||
.TP
|
||||
\fB\-\-provider\fR \fI<ID>\fR
|
||||
Provider of the registry used by aichat (env vars + model)
|
||||
.TP
|
||||
\fB\-\-model\fR \fI<MODEL>\fR
|
||||
Force a model (aichat \-\-model)
|
||||
.TP
|
||||
\fB\-\-role\fR \fI<ROLE>\fR
|
||||
Use one of the generated copilot roles (am\-copilot, am\-operator, am\-dev, am\-do, am\-analyst, am\-orchestrator — issue v1.1.0 F3)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIPROMPT\fR>
|
||||
The request in natural language
|
||||
@@ -0,0 +1,26 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-alias 1 "alias "
|
||||
.SH NAME
|
||||
alias \- Manage command aliases (cc \-> claude\-code)
|
||||
.SH SYNOPSIS
|
||||
\fBalias\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Manage command aliases (cc \-> claude\-code)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
alias\-add(1)
|
||||
Add an alias (am alias add cc claude\-code)
|
||||
.TP
|
||||
alias\-remove(1)
|
||||
Remove an alias
|
||||
.TP
|
||||
alias\-list(1)
|
||||
List every alias
|
||||
.TP
|
||||
alias\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-ask 1 "ask "
|
||||
.SH NAME
|
||||
ask \- Ask a natural\-language request and get the matching am command(s) (issue #78): local rules first, optional LLM refinement, confirmation before execution
|
||||
.SH SYNOPSIS
|
||||
\fBask\fR [\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIREQUEST\fR>
|
||||
.SH DESCRIPTION
|
||||
Ask a natural\-language request and get the matching am command(s) (issue #78): local rules first, optional LLM refinement, confirmation before execution
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-yes\fR
|
||||
Skip the confirmation prompt
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIREQUEST\fR>
|
||||
The request in natural language
|
||||
@@ -0,0 +1,13 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-audit 1 "audit "
|
||||
.SH NAME
|
||||
audit \- Audit the configuration: who changed what, when (issue #63)
|
||||
.SH SYNOPSIS
|
||||
\fBaudit\fR [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Audit the configuration: who changed what, when (issue #63)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,26 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-catalog 1 "catalog "
|
||||
.SH NAME
|
||||
catalog \- Manage remote catalogs: update the official one, add external ones
|
||||
.SH SYNOPSIS
|
||||
\fBcatalog\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Manage remote catalogs: update the official one, add external ones
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
catalog\-update(1)
|
||||
Fetch the official catalog, show the diff and register it as an include
|
||||
.TP
|
||||
catalog\-add(1)
|
||||
Register an external catalog (same YAML format) by URL
|
||||
.TP
|
||||
catalog\-list(1)
|
||||
List the registered remote catalogs
|
||||
.TP
|
||||
catalog\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,35 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-completion 1 "completion "
|
||||
.SH NAME
|
||||
completion \- Generate a shell completion script
|
||||
.SH SYNOPSIS
|
||||
\fBcompletion\fR [\fB\-\-installed\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fISHELL\fR>
|
||||
.SH DESCRIPTION
|
||||
Generate a shell completion script
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-installed\fR
|
||||
Add dynamic completion of the installed agents, aliases and groups (queried from \*(Aqam _agents\*(Aq at Tab time)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fISHELL\fR>
|
||||
Shell to generate completions for
|
||||
.br
|
||||
|
||||
.br
|
||||
\fIPossible values:\fR
|
||||
.RS 14
|
||||
.IP \(bu 2
|
||||
bash
|
||||
.IP \(bu 2
|
||||
elvish
|
||||
.IP \(bu 2
|
||||
fish
|
||||
.IP \(bu 2
|
||||
powershell
|
||||
.IP \(bu 2
|
||||
zsh
|
||||
.RE
|
||||
@@ -0,0 +1,35 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-config 1 "config "
|
||||
.SH NAME
|
||||
config \- Manage the configuration file
|
||||
.SH SYNOPSIS
|
||||
\fBconfig\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Manage the configuration file
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
config\-show(1)
|
||||
Print the effective (merged) configuration as YAML
|
||||
.TP
|
||||
config\-path(1)
|
||||
Print the location of the configuration file(s)
|
||||
.TP
|
||||
config\-edit(1)
|
||||
Open the user configuration file in your editor
|
||||
.TP
|
||||
config\-validate(1)
|
||||
Validate the configuration file(s)
|
||||
.TP
|
||||
config\-add(1)
|
||||
Add another agent definition file to the user configuration
|
||||
.TP
|
||||
config\-set(1)
|
||||
Set one configuration key without an editor (config set settings.default_shell pwsh)
|
||||
.TP
|
||||
config\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,13 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-dashboard 1 "dashboard "
|
||||
.SH NAME
|
||||
dashboard \- Live TUI dashboard: overview, activity, stats, sessions, projects
|
||||
.SH SYNOPSIS
|
||||
\fBdashboard\fR [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Live TUI dashboard: overview, activity, stats, sessions, projects
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-doctor 1 "doctor "
|
||||
.SH NAME
|
||||
doctor \- Check the environment: tools, config validity, paths, permissions
|
||||
.SH SYNOPSIS
|
||||
\fBdoctor\fR [\fB\-\-fix\fR] [\fB\-\-watch\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Check the environment: tools, config validity, paths, permissions
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-fix\fR
|
||||
Attempt to repair problems (create directories, fix the state file)
|
||||
.TP
|
||||
\fB\-\-watch\fR \fI<SECONDS>\fR
|
||||
Re\-run the checks every N seconds, alerting on failure (issue #59)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-export 1 "export "
|
||||
.SH NAME
|
||||
export \- Export the configuration and installation state (backup)
|
||||
.SH SYNOPSIS
|
||||
\fBexport\fR [\fB\-\-output\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Export the configuration and installation state (backup)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-output\fR \fI<FILE>\fR [default: am\-export.json]
|
||||
Output file (default: am\-export.json)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-favorite 1 "favorite "
|
||||
.SH NAME
|
||||
favorite \- Mark an agent as a favorite (star in list and status)
|
||||
.SH SYNOPSIS
|
||||
\fBfavorite\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Mark an agent as a favorite (star in list and status)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-help 1 "help "
|
||||
.SH NAME
|
||||
help \- Display help: the overview, a command, the command list, or a search
|
||||
.SH SYNOPSIS
|
||||
\fBhelp\fR [\fB\-\-find\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fICOMMAND\fR]
|
||||
.SH DESCRIPTION
|
||||
Display help: the overview, a command, the command list, or a search
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-find\fR \fI<TEXT>\fR
|
||||
Search through all help commands table
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fICOMMAND\fR]
|
||||
Command name (also accepts an agent name or alias); "commands" lists every command
|
||||
@@ -0,0 +1,40 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-history 1 "history "
|
||||
.SH NAME
|
||||
history \- Search the command history (am and shell commands)
|
||||
.SH SYNOPSIS
|
||||
\fBhistory\fR [\fB\-\-kind\fR] [\fB\-\-cwd\fR] [\fB\-\-search\fR] [\fB\-\-failed\fR] [\fB\-\-session\fR] [\fB\-\-limit\fR] [\fB\-\-rerun\fR] [\fB\-\-save\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIRANGE\fR]
|
||||
.SH DESCRIPTION
|
||||
Search the command history (am and shell commands)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-kind\fR \fI<KIND>\fR
|
||||
Only commands of this kind (am or shell)
|
||||
.TP
|
||||
\fB\-\-cwd\fR \fI<DIR>\fR
|
||||
Only commands run in this directory
|
||||
.TP
|
||||
\fB\-\-search\fR \fI<TEXT>\fR
|
||||
Full\-text search in the command line
|
||||
.TP
|
||||
\fB\-\-failed\fR
|
||||
Only failed commands
|
||||
.TP
|
||||
\fB\-\-session\fR \fI<ID>\fR
|
||||
Only commands of this session
|
||||
.TP
|
||||
\fB\-\-limit\fR \fI<N>\fR [default: 100]
|
||||
Maximum number of entries (default: 100)
|
||||
.TP
|
||||
\fB\-\-rerun\fR \fI<N>\fR
|
||||
Re\-run the Nth most recent entry (with confirmation)
|
||||
.TP
|
||||
\fB\-\-save\fR \fI<FILE>\fR
|
||||
Export the range as a playbook YAML file (issue #51)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIRANGE\fR]
|
||||
Range to export as a playbook: "12..25" (1\-based, newest first)
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-import 1 "import "
|
||||
.SH NAME
|
||||
import \- Import a previously exported configuration and state
|
||||
.SH SYNOPSIS
|
||||
\fBimport\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIFILE\fR>
|
||||
.SH DESCRIPTION
|
||||
Import a previously exported configuration and state
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIFILE\fR>
|
||||
File exported by the export command
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-info 1 "info "
|
||||
.SH NAME
|
||||
info \- Show detailed information about one agent
|
||||
.SH SYNOPSIS
|
||||
\fBinfo\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Show detailed information about one agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-init 1 "init "
|
||||
.SH NAME
|
||||
init \- Generate a local agent\-manager.yaml for the current directory
|
||||
.SH SYNOPSIS
|
||||
\fBinit\fR [\fB\-\-force\fR] [\fB\-\-template\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Generate a local agent\-manager.yaml for the current directory
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-force\fR
|
||||
Overwrite an existing agent\-manager.yaml
|
||||
.TP
|
||||
\fB\-\-template\fR \fI<TEMPLATE>\fR
|
||||
Use a template (web, python, rust, cli) instead of stack detection; "list" shows the available templates
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,31 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-install 1 "install "
|
||||
.SH NAME
|
||||
install \- Install an agent and its dependencies
|
||||
.SH SYNOPSIS
|
||||
\fBinstall\fR [\fB\-\-method\fR] [\fB\-\-force\fR] [\fB\-\-provider\fR] [\fB\-\-model\fR] [\fB\-\-no\-config\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Install an agent and its dependencies
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-method\fR \fI<METHOD>\fR
|
||||
Select the install method (index, or type: npm, pip, uv, cargo, go, bun, curl, binary, git)
|
||||
.TP
|
||||
\fB\-\-force\fR
|
||||
Reinstall even if already installed
|
||||
.TP
|
||||
\fB\-\-provider\fR \fI<PROVIDER>\fR
|
||||
Provider to configure (default: the agent\*(Aqs provider, else settings.default_provider) (issue #90)
|
||||
.TP
|
||||
\fB\-\-model\fR \fI<MODEL>\fR
|
||||
Model to configure (default: the provider\*(Aqs default model) (issue #90)
|
||||
.TP
|
||||
\fB\-\-no\-config\fR
|
||||
Skip the post\-install provider configuration (issue #91)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,28 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-lab 1 "lab "
|
||||
.SH NAME
|
||||
lab \- Benchmark: run the same task on several agents and compare (issue #62)
|
||||
.SH SYNOPSIS
|
||||
\fBlab\fR [\fB\-\-agents\fR] [\fB\-\-task\fR] [\fB\-\-parallel\fR] [\fB\-\-timeout\fR] [\fB\-\-list\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Benchmark: run the same task on several agents and compare (issue #62)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-agents\fR \fI<AGENTS>\fR
|
||||
Comma\-separated agent names (or aliases) to benchmark
|
||||
.TP
|
||||
\fB\-\-task\fR \fI<FILE>\fR
|
||||
Task file (a bare name resolves under state_dir/lab/, .yaml appended)
|
||||
.TP
|
||||
\fB\-\-parallel\fR
|
||||
Run every agent concurrently instead of one after another
|
||||
.TP
|
||||
\fB\-\-timeout\fR \fI<SECS>\fR
|
||||
Override the task timeout in seconds
|
||||
.TP
|
||||
\fB\-\-list\fR
|
||||
List the task files of the lab directory
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,25 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-list 1 "list "
|
||||
.SH NAME
|
||||
list \- List installed agents (default); use \-\-all for the whole catalog
|
||||
.SH SYNOPSIS
|
||||
\fBlist\fR [\fB\-\-all\fR] [\fB\-\-category\fR] [\fB\-\-running\fR] [\fB\-\-sort\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
List installed agents (default); use \-\-all for the whole catalog
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-all\fR
|
||||
Show every agent known to the catalog, not only the installed ones
|
||||
.TP
|
||||
\fB\-\-category\fR \fI<CATEGORY>\fR
|
||||
Only show agents of this category
|
||||
.TP
|
||||
\fB\-\-running\fR
|
||||
Only show running agents
|
||||
.TP
|
||||
\fB\-\-sort\fR \fI<KEY>\fR
|
||||
Sort by name, version or status (default: name)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,28 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-log 1 "log "
|
||||
.SH NAME
|
||||
log \- Read the event journal: everything am did
|
||||
.SH SYNOPSIS
|
||||
\fBlog\fR [\fB\-\-kind\fR] [\fB\-\-since\fR] [\fB\-\-limit\fR] [\fB\-\-follow\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Read the event journal: everything am did
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-kind\fR \fI<KINDS>\fR
|
||||
Only these event kinds (comma separated: start,stop,run,install,...)
|
||||
.TP
|
||||
\fB\-\-since\fR \fI<DATE>\fR
|
||||
Only events at or after this date (YYYY\-MM\-DD or RFC 3339)
|
||||
.TP
|
||||
\fB\-\-limit\fR \fI<N>\fR [default: 50]
|
||||
Maximum number of events (default: 50)
|
||||
.TP
|
||||
\fB\-\-follow\fR
|
||||
Follow the journal as new events arrive
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Only events of this agent
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-logs 1 "logs "
|
||||
.SH NAME
|
||||
logs \- Tail the log file of an agent (\-\-follow for a live view)
|
||||
.SH SYNOPSIS
|
||||
\fBlogs\fR [\fB\-\-lines\fR] [\fB\-\-follow\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Tail the log file of an agent (\-\-follow for a live view)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-lines\fR \fI<N>\fR [default: 20]
|
||||
Number of lines to show (default: 20)
|
||||
.TP
|
||||
\fB\-\-follow\fR
|
||||
Follow the log as it grows
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-man 1 "man "
|
||||
.SH NAME
|
||||
man \- Generate a man page for am (or for one command)
|
||||
.SH SYNOPSIS
|
||||
\fBman\fR [\fB\-\-output\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fICOMMAND\fR]
|
||||
.SH DESCRIPTION
|
||||
Generate a man page for am (or for one command)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-output\fR \fI<DIR>\fR
|
||||
Write the page(s) to this directory instead of stdout
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fICOMMAND\fR]
|
||||
Command name (omit for the whole CLI)
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-migrate 1 "migrate "
|
||||
.SH NAME
|
||||
migrate \- Transfer the installation and state to another machine (issue #68)
|
||||
.SH SYNOPSIS
|
||||
\fBmigrate\fR [\fB\-\-export\fR] [\fB\-\-output\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIBUNDLE\fR]
|
||||
.SH DESCRIPTION
|
||||
Transfer the installation and state to another machine (issue #68)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-export\fR
|
||||
Export the bundle (default) or import one
|
||||
.TP
|
||||
\fB\-\-output\fR \fI<FILE>\fR
|
||||
Bundle path for export (default agent\-manager\-migrate.amx)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIBUNDLE\fR]
|
||||
Bundle path to import
|
||||
@@ -0,0 +1,25 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-models 1 "models "
|
||||
.SH NAME
|
||||
models \- List local models (ollama, llama.cpp, LM Studio) and prune unused ones
|
||||
.SH SYNOPSIS
|
||||
\fBmodels\fR [\fB\-\-prune\fR] [\fB\-\-dry\-run\fR] [\fB\-\-yes\fR] [\fB\-\-days\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
List local models (ollama, llama.cpp, LM Studio) and prune unused ones
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-prune\fR
|
||||
Purge unused models instead of listing them
|
||||
.TP
|
||||
\fB\-\-dry\-run\fR
|
||||
Only list what would be pruned, delete nothing
|
||||
.TP
|
||||
\fB\-\-yes\fR
|
||||
Answer yes to the deletion prompt
|
||||
.TP
|
||||
\fB\-\-days\fR \fI<DAYS>\fR
|
||||
Consider a model unused after N days (default: 30)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-monitor 1 "monitor "
|
||||
.SH NAME
|
||||
monitor \- Real\-time monitor of the managed processes (issue #50)
|
||||
.SH SYNOPSIS
|
||||
\fBmonitor\fR [\fB\-\-interval\fR] [\fB\-\-json\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Real\-time monitor of the managed processes (issue #50)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-interval\fR \fI<SECONDS>\fR
|
||||
Refresh interval in seconds (default 2)
|
||||
.TP
|
||||
\fB\-\-json\fR
|
||||
Print one JSON document per tick instead of the TUI
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-note 1 "note "
|
||||
.SH NAME
|
||||
note \- Attach a free\-form note to an agent (shown in \*(Aqam info\*(Aq); \*(Aqam note <agent>\*(Aq without text prints the current note
|
||||
.SH SYNOPSIS
|
||||
\fBnote\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR> [\fITEXT...\fR]
|
||||
.SH DESCRIPTION
|
||||
Attach a free\-form note to an agent (shown in \*(Aqam info\*(Aq); \*(Aqam note <agent>\*(Aq without text prints the current note
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
.TP
|
||||
[\fITEXT...\fR]
|
||||
Note text (several words are joined); empty prints the note
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-open 1 "open "
|
||||
.SH NAME
|
||||
open \- Open an agent\*(Aqs installation directory in the file manager
|
||||
.SH SYNOPSIS
|
||||
\fBopen\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Open an agent\*(Aqs installation directory in the file manager
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-playbook 1 "playbook "
|
||||
.SH NAME
|
||||
playbook \- Replay a saved playbook step by step with confirmation (issue #51)
|
||||
.SH SYNOPSIS
|
||||
\fBplaybook\fR [\fB\-\-var\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIFILE\fR>
|
||||
.SH DESCRIPTION
|
||||
Replay a saved playbook step by step with confirmation (issue #51)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-var\fR \fI<NAME=VALUE>\fR
|
||||
Variable values, repeatable: \-\-var name=value
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIFILE\fR>
|
||||
Playbook file (state_dir/playbooks/ when a bare name is given)
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-plugins 1 "plugins "
|
||||
.SH NAME
|
||||
plugins \- List the event plugins and test one (issue #75)
|
||||
.SH SYNOPSIS
|
||||
\fBplugins\fR [\fB\-\-test\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
List the event plugins and test one (issue #75)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-test\fR \fI<NAME>\fR
|
||||
Run one plugin against a synthetic event and print its response
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,23 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-profile 1 "profile "
|
||||
.SH NAME
|
||||
profile \- Manage environment profiles (dev, prod, ...)
|
||||
.SH SYNOPSIS
|
||||
\fBprofile\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Manage environment profiles (dev, prod, ...)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
profile\-list(1)
|
||||
List every defined profile
|
||||
.TP
|
||||
profile\-show(1)
|
||||
Show one profile in detail (agent, env, args)
|
||||
.TP
|
||||
profile\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-projects 1 "projects "
|
||||
.SH NAME
|
||||
projects \- Show which agent works on which project
|
||||
.SH SYNOPSIS
|
||||
\fBprojects\fR [\fB\-h\fR|\fB\-\-help\fR] [\fINAME\fR]
|
||||
.SH DESCRIPTION
|
||||
Show which agent works on which project
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fINAME\fR]
|
||||
Project name (omit to list every project)
|
||||
@@ -0,0 +1,38 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-providers 1 "providers "
|
||||
.SH NAME
|
||||
providers \- Manage the LLM provider registry: base URLs, models, default provider
|
||||
.SH SYNOPSIS
|
||||
\fBproviders\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIsubcommands\fR]
|
||||
.SH DESCRIPTION
|
||||
Manage the LLM provider registry: base URLs, models, default provider
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
providers\-list(1)
|
||||
List the registered providers (the default one is starred)
|
||||
.TP
|
||||
providers\-show(1)
|
||||
Show one provider in detail (base URL, models, default model)
|
||||
.TP
|
||||
providers\-add(1)
|
||||
Register a provider, or update an existing one
|
||||
.TP
|
||||
providers\-remove(1)
|
||||
Remove a provider from the registry
|
||||
.TP
|
||||
providers\-set\-token(1)
|
||||
Store the provider API token in the OS keyring (shared by every agent of this provider through the @secret cascade, issue #89)
|
||||
.TP
|
||||
providers\-token(1)
|
||||
Check whether a provider token exists (the value is never shown)
|
||||
.TP
|
||||
providers\-default(1)
|
||||
Set the default provider
|
||||
.TP
|
||||
providers\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,29 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-registry 1 "registry "
|
||||
.SH NAME
|
||||
registry \- Community registry (issue #77): publish, search and install agent catalogs hosted on Gitea
|
||||
.SH SYNOPSIS
|
||||
\fBregistry\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIsubcommands\fR]
|
||||
.SH DESCRIPTION
|
||||
Community registry (issue #77): publish, search and install agent catalogs hosted on Gitea
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
registry\-publish(1)
|
||||
Prepare a catalog + manifest (source, version, author, sha256) for publication on Gitea
|
||||
.TP
|
||||
registry\-search(1)
|
||||
Search agents across the registered sources (settings.registry.sources)
|
||||
.TP
|
||||
registry\-install(1)
|
||||
Install a catalog from the registry: manifest + checksum validation, then an explicit trust decision for unknown sources
|
||||
.TP
|
||||
registry\-list(1)
|
||||
List the registered sources
|
||||
.TP
|
||||
registry\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-report 1 "report "
|
||||
.SH NAME
|
||||
report \- Write a markdown activity report
|
||||
.SH SYNOPSIS
|
||||
\fBreport\fR [\fB\-\-last\-week\fR] [\fB\-\-last\-month\fR] [\fB\-\-output\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Write a markdown activity report
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-last\-week\fR
|
||||
Cover the last 7 days
|
||||
.TP
|
||||
\fB\-\-last\-month\fR
|
||||
Cover the last 30 days
|
||||
.TP
|
||||
\fB\-\-output\fR \fI<FILE>\fR
|
||||
Output file (default: report\-YYYYMMDD.md in the state directory)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,55 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-restart 1 "restart "
|
||||
.SH NAME
|
||||
restart \- Restart an agent: stop, then start with the same options
|
||||
.SH SYNOPSIS
|
||||
\fBrestart\fR [\fB\-b\fR|\fB\-\-background\fR] [\fB\-f\fR|\fB\-\-foreground\fR] [\fB\-\-args\fR] [\fB\-\-env\fR] [\fB\-\-notify\fR] [\fB\-\-profile\fR] [\fB\-\-model\fR] [\fB\-\-provider\fR] [\fB\-\-no\-sandbox\fR] [\fB\-\-parallel\fR] [\fB\-\-container\fR] [\fB\-\-force\fR] [\fB\-\-timeout\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Restart an agent: stop, then start with the same options
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-b\fR, \fB\-\-background\fR
|
||||
Run detached in the background; output goes to the agent log file
|
||||
.TP
|
||||
\fB\-f\fR, \fB\-\-foreground\fR
|
||||
Run in the foreground, attached to this terminal (the default)
|
||||
.TP
|
||||
\fB\-\-args\fR [\fI<ARGS>...\fR]
|
||||
Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)
|
||||
.TP
|
||||
\fB\-\-env\fR \fI<KEY=VALUE>\fR
|
||||
Set an environment variable for the agent (repeatable): \-\-env KEY=VALUE
|
||||
.TP
|
||||
\fB\-\-notify\fR
|
||||
Send a desktop notification once the agent has started
|
||||
.TP
|
||||
\fB\-\-profile\fR \fI<NAME>\fR
|
||||
Apply an environment profile (env + args, defined in the config)
|
||||
.TP
|
||||
\fB\-\-model\fR \fI<MODEL>\fR
|
||||
Local model to use for this run (validated against the local runtimes)
|
||||
.TP
|
||||
\fB\-\-provider\fR \fI<PROVIDER>\fR
|
||||
Provider to use for this run (issue #92): resolved from the registry
|
||||
.TP
|
||||
\fB\-\-no\-sandbox\fR
|
||||
Skip the agent\*(Aqs sandbox profile for this run (issue #79)
|
||||
.TP
|
||||
\fB\-\-parallel\fR
|
||||
Start every member of a group simultaneously (issue #57)
|
||||
.TP
|
||||
\fB\-\-container\fR
|
||||
Run the agent inside a container (issue #58)
|
||||
.TP
|
||||
\fB\-\-force\fR
|
||||
Kill immediately instead of terminating gracefully
|
||||
.TP
|
||||
\fB\-\-timeout\fR \fI<SECS>\fR
|
||||
Grace period in seconds before killing (default: from config, 5s)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Agent name, alias, or group:<name> (defaults to the project\*(Aqs default agent)
|
||||
@@ -0,0 +1,31 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-run 1 "run "
|
||||
.SH NAME
|
||||
run \- Run the agent command directly with the given arguments (no process management)
|
||||
.SH SYNOPSIS
|
||||
\fBrun\fR [\fB\-\-model\fR] [\fB\-\-provider\fR] [\fB\-\-no\-sandbox\fR] [\fB\-\-container\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR> [\fIARGS...\fR]
|
||||
.SH DESCRIPTION
|
||||
Run the agent command directly with the given arguments (no process management)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-model\fR \fI<MODEL>\fR
|
||||
Local model to use for this run (validated against the local runtimes)
|
||||
.TP
|
||||
\fB\-\-provider\fR \fI<PROVIDER>\fR
|
||||
Provider to use for this run (issue #92): registry lookup, base_url + keyring token + model
|
||||
.TP
|
||||
\fB\-\-no\-sandbox\fR
|
||||
Skip the agent\*(Aqs sandbox profile (issue #79)
|
||||
.TP
|
||||
\fB\-\-container\fR
|
||||
Run the agent inside a container (issue #58)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
.TP
|
||||
[\fIARGS...\fR]
|
||||
Arguments passed through to the agent command
|
||||
@@ -0,0 +1,29 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-schedule 1 "schedule "
|
||||
.SH NAME
|
||||
schedule \- Schedule am commands (issue #56)
|
||||
.SH SYNOPSIS
|
||||
\fBschedule\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Schedule am commands (issue #56)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
schedule\-add(1)
|
||||
Add a daily schedule (ex: \*(Aqam schedule add update \-\-all\*(Aq)
|
||||
.TP
|
||||
schedule\-list(1)
|
||||
List the schedules
|
||||
.TP
|
||||
schedule\-remove(1)
|
||||
Remove a schedule by id
|
||||
.TP
|
||||
schedule\-run(1)
|
||||
Run a schedule now (invoked by the OS task, issue #56)
|
||||
.TP
|
||||
schedule\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-search 1 "search "
|
||||
.SH NAME
|
||||
search \- Search the catalog by keyword (name, description, category, tags)
|
||||
.SH SYNOPSIS
|
||||
\fBsearch\fR [\fB\-\-category\fR] [\fB\-\-tag\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIKEYWORD\fR]
|
||||
.SH DESCRIPTION
|
||||
Search the catalog by keyword (name, description, category, tags)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-category\fR \fI<CATEGORY>\fR
|
||||
Restrict to this category
|
||||
.TP
|
||||
\fB\-\-tag\fR \fI<TAG>\fR
|
||||
Only agents carrying this personal tag
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIKEYWORD\fR]
|
||||
Keyword to search for (case\-insensitive substring)
|
||||
@@ -0,0 +1,26 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-secret 1 "secret "
|
||||
.SH NAME
|
||||
secret \- Manage secrets in the OS keyring (never in plaintext config)
|
||||
.SH SYNOPSIS
|
||||
\fBsecret\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Manage secrets in the OS keyring (never in plaintext config)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
secret\-set(1)
|
||||
Store a secret for an agent (or a provider, issue #89)
|
||||
.TP
|
||||
secret\-unset(1)
|
||||
Remove a secret
|
||||
.TP
|
||||
secret\-list(1)
|
||||
List stored secret names (values are never shown)
|
||||
.TP
|
||||
secret\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,15 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-self-uninstall 1 "self-uninstall "
|
||||
.SH NAME
|
||||
self\-uninstall \- Remove agent\-manager and everything it created from this machine
|
||||
.SH SYNOPSIS
|
||||
\fBself\-uninstall\fR [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Remove agent\-manager and everything it created from this machine
|
||||
.PP
|
||||
Stops every managed background agent, then deletes the data, state and configuration directories, and finally the executable itself. Combine with \-\-yes for a fully automated one\-liner.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help (see a summary with \*(Aq\-h\*(Aq)
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-self-update 1 "self-update "
|
||||
.SH NAME
|
||||
self\-update \- Update agent\-manager itself from the latest release
|
||||
.SH SYNOPSIS
|
||||
\fBself\-update\fR [\fB\-\-check\fR] [\fB\-\-to\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Update agent\-manager itself from the latest release
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-check\fR
|
||||
Only check whether a newer version exists
|
||||
.TP
|
||||
\fB\-\-to\fR \fI<FILE>\fR
|
||||
Download the new binary to this path instead of replacing the current one
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,25 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-serve 1 "serve "
|
||||
.SH NAME
|
||||
serve \- Authenticated HTTP + WebSocket API to drive am remotely (issue #80)
|
||||
.SH SYNOPSIS
|
||||
\fBserve\fR [\fB\-\-token\fR] [\fB\-\-host\fR] [\fB\-\-port\fR] [\fB\-\-rate\-limit\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Authenticated HTTP + WebSocket API to drive am remotely (issue #80)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-token\fR \fI<TOKEN>\fR
|
||||
Bearer token required on every request (mandatory)
|
||||
.TP
|
||||
\fB\-\-host\fR \fI<HOST>\fR
|
||||
Listen address (default 127.0.0.1)
|
||||
.TP
|
||||
\fB\-\-port\fR \fI<PORT>\fR
|
||||
Listening port (default 8080)
|
||||
.TP
|
||||
\fB\-\-rate\-limit\fR \fI<N>\fR
|
||||
Per\-IP request budget per minute (default 120)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,26 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-service 1 "service "
|
||||
.SH NAME
|
||||
service \- Register an agent as a system service (issue #55)
|
||||
.SH SYNOPSIS
|
||||
\fBservice\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
||||
.SH DESCRIPTION
|
||||
Register an agent as a system service (issue #55)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
service\-install(1)
|
||||
Install the service unit (systemd / launchd / Task Scheduler)
|
||||
.TP
|
||||
service\-uninstall(1)
|
||||
Remove the service unit
|
||||
.TP
|
||||
service\-status(1)
|
||||
Show whether the service is installed
|
||||
.TP
|
||||
service\-help(1)
|
||||
Print this message or the help of the given subcommand(s)
|
||||
@@ -0,0 +1,37 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-sessions 1 "sessions "
|
||||
.SH NAME
|
||||
sessions \- List the sessions of every agent (and of the interactive shell)
|
||||
.SH SYNOPSIS
|
||||
\fBsessions\fR [\fB\-\-project\fR] [\fB\-\-status\fR] [\fB\-\-show\fR] [\fB\-\-resume\fR] [\fB\-\-export\fR] [\fB\-\-output\fR] [\fB\-\-retention\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
List the sessions of every agent (and of the interactive shell)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-project\fR \fI<PROJECT>\fR
|
||||
Only sessions of this project
|
||||
.TP
|
||||
\fB\-\-status\fR \fI<STATUS>\fR
|
||||
Only sessions with this status (running, stopped, failed, interrupted)
|
||||
.TP
|
||||
\fB\-\-show\fR \fI<ID>\fR
|
||||
Show one session in detail (summary + log excerpt)
|
||||
.TP
|
||||
\fB\-\-resume\fR \fI<ID>\fR
|
||||
Resume a finished session: relaunch the agent with its recorded arguments
|
||||
.TP
|
||||
\fB\-\-export\fR \fI<ID>\fR
|
||||
Export one session (metadata, commands, log excerpt) to a JSON file
|
||||
.TP
|
||||
\fB\-\-output\fR \fI<FILE>\fR
|
||||
Destination of the export (default: ./am\-session\-<ID>.json)
|
||||
.TP
|
||||
\fB\-\-retention\fR \fI<DAYS>\fR
|
||||
Purge sessions finished more than N days ago (settings default 90)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Only sessions of this agent
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-setup 1 "setup "
|
||||
.SH NAME
|
||||
setup \- Onboarding wizard: provider, token, modèle par défaut, aichat, rôles copilot (épique v1.1.0)
|
||||
.SH SYNOPSIS
|
||||
\fBsetup\fR [\fB\-\-roles\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Onboarding wizard: provider, token, modèle par défaut, aichat, rôles copilot (épique v1.1.0)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-roles\fR
|
||||
Only (re)generate the am\-* copilot roles for aichat
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,49 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-start 1 "start "
|
||||
.SH NAME
|
||||
start \- Start an agent (foreground by default, or detached with \-\-background)
|
||||
.SH SYNOPSIS
|
||||
\fBstart\fR [\fB\-b\fR|\fB\-\-background\fR] [\fB\-f\fR|\fB\-\-foreground\fR] [\fB\-\-args\fR] [\fB\-\-env\fR] [\fB\-\-notify\fR] [\fB\-\-profile\fR] [\fB\-\-model\fR] [\fB\-\-provider\fR] [\fB\-\-no\-sandbox\fR] [\fB\-\-parallel\fR] [\fB\-\-container\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Start an agent (foreground by default, or detached with \-\-background)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-b\fR, \fB\-\-background\fR
|
||||
Run detached in the background; output goes to the agent log file
|
||||
.TP
|
||||
\fB\-f\fR, \fB\-\-foreground\fR
|
||||
Run in the foreground, attached to this terminal (the default)
|
||||
.TP
|
||||
\fB\-\-args\fR [\fI<ARGS>...\fR]
|
||||
Extra arguments passed to the agent (repeatable; quoted strings are split on spaces)
|
||||
.TP
|
||||
\fB\-\-env\fR \fI<KEY=VALUE>\fR
|
||||
Set an environment variable for the agent (repeatable): \-\-env KEY=VALUE
|
||||
.TP
|
||||
\fB\-\-notify\fR
|
||||
Send a desktop notification once the agent has started
|
||||
.TP
|
||||
\fB\-\-profile\fR \fI<NAME>\fR
|
||||
Apply an environment profile (env + args, defined in the config)
|
||||
.TP
|
||||
\fB\-\-model\fR \fI<MODEL>\fR
|
||||
Local model to use for this run (validated against the local runtimes)
|
||||
.TP
|
||||
\fB\-\-provider\fR \fI<PROVIDER>\fR
|
||||
Provider to use for this run (issue #92): resolved from the registry
|
||||
.TP
|
||||
\fB\-\-no\-sandbox\fR
|
||||
Skip the agent\*(Aqs sandbox profile for this run (issue #79)
|
||||
.TP
|
||||
\fB\-\-parallel\fR
|
||||
Start every member of a group simultaneously (issue #57)
|
||||
.TP
|
||||
\fB\-\-container\fR
|
||||
Run the agent inside a container (issue #58)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Agent name, alias, or group:<name> (defaults to the project\*(Aqs default agent)
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-stats 1 "stats "
|
||||
.SH NAME
|
||||
stats \- Show usage statistics computed from the event journal
|
||||
.SH SYNOPSIS
|
||||
\fBstats\fR [\fB\-\-period\fR] [\fB\-\-costs\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Show usage statistics computed from the event journal
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-period\fR \fI<PERIOD>\fR
|
||||
Only events of the last period (7d, 30d, 90d, all)
|
||||
.TP
|
||||
\fB\-\-costs\fR
|
||||
Show token usage and estimated spend per agent (issue #49)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Agent name or alias (omit for the global view)
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-status 1 "status "
|
||||
.SH NAME
|
||||
status \- Show the state of one agent, or of every installed agent
|
||||
.SH SYNOPSIS
|
||||
\fBstatus\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Show the state of one agent, or of every installed agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Agent name or alias (omit to show all installed agents)
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-stop 1 "stop "
|
||||
.SH NAME
|
||||
stop \- Stop a background agent (SIGTERM, then SIGKILL after the timeout)
|
||||
.SH SYNOPSIS
|
||||
\fBstop\fR [\fB\-\-force\fR] [\fB\-\-timeout\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Stop a background agent (SIGTERM, then SIGKILL after the timeout)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-force\fR
|
||||
Kill immediately instead of terminating gracefully
|
||||
.TP
|
||||
\fB\-\-timeout\fR \fI<SECS>\fR
|
||||
Grace period in seconds before killing (default: from config, 5s)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name, alias, or group:<name>
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-suggest 1 "suggest "
|
||||
.SH NAME
|
||||
suggest \- Suggest agents matching a query, boosted by real usage (issue #61)
|
||||
.SH SYNOPSIS
|
||||
\fBsuggest\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIQUERY\fR>
|
||||
.SH DESCRIPTION
|
||||
Suggest agents matching a query, boosted by real usage (issue #61)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIQUERY\fR>
|
||||
Free\-form request ("un agent pour du Python")
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-sync 1 "sync "
|
||||
.SH NAME
|
||||
sync \- Push the state into the configured git repository (issue #66)
|
||||
.SH SYNOPSIS
|
||||
\fBsync\fR [\fB\-\-message\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Push the state into the configured git repository (issue #66)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-message\fR \fI<MESSAGE>\fR
|
||||
Commit message (default: "am sync — state update")
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-tag 1 "tag "
|
||||
.SH NAME
|
||||
tag \- Add a personal tag to an agent
|
||||
.SH SYNOPSIS
|
||||
\fBtag\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR> <\fITAG\fR>
|
||||
.SH DESCRIPTION
|
||||
Add a personal tag to an agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
.TP
|
||||
<\fITAG\fR>
|
||||
One or more tags to add
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-tags 1 "tags "
|
||||
.SH NAME
|
||||
tags \- List personal tags (with counts), optionally for one agent
|
||||
.SH SYNOPSIS
|
||||
\fBtags\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
List personal tags (with counts), optionally for one agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Only show the tags of this agent
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-theme 1 "theme "
|
||||
.SH NAME
|
||||
theme \- Set or show the active color theme (persisted for the next run)
|
||||
.SH SYNOPSIS
|
||||
\fBtheme\fR [\fB\-h\fR|\fB\-\-help\fR] [\fINAME\fR]
|
||||
.SH DESCRIPTION
|
||||
Set or show the active color theme (persisted for the next run)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fINAME\fR]
|
||||
Theme name (omit to list available themes)
|
||||
@@ -0,0 +1,25 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-timeline 1 "timeline "
|
||||
.SH NAME
|
||||
timeline \- One chronological view of every activity (journal + REPL history)
|
||||
.SH SYNOPSIS
|
||||
\fBtimeline\fR [\fB\-\-project\fR] [\fB\-\-since\fR] [\fB\-\-limit\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
One chronological view of every activity (journal + REPL history)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-project\fR \fI<PROJECT>\fR
|
||||
Only activity of this project
|
||||
.TP
|
||||
\fB\-\-since\fR \fI<DATE>\fR
|
||||
Only activity at or after this date (YYYY\-MM\-DD or RFC 3339)
|
||||
.TP
|
||||
\fB\-\-limit\fR \fI<N>\fR [default: 50]
|
||||
Maximum number of entries (default: 50)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Only activity of this agent
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-tip 1 "tip "
|
||||
.SH NAME
|
||||
tip \- Cheat sheet: the most useful commands, their key options, your most\-used commands and a rotating tip of the day
|
||||
.SH SYNOPSIS
|
||||
\fBtip\fR [\fB\-\-random\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Cheat sheet: the most useful commands, their key options, your most\-used commands and a rotating tip of the day
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-random\fR
|
||||
Show a single random tip instead of the whole page
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-top 1 "top "
|
||||
.SH NAME
|
||||
top \- Show the most used agents (top 10)
|
||||
.SH SYNOPSIS
|
||||
\fBtop\fR [\fB\-\-period\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Show the most used agents (top 10)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-period\fR \fI<PERIOD>\fR
|
||||
Only events of the last period (7d, 30d, 90d, all)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,16 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-unfavorite 1 "unfavorite "
|
||||
.SH NAME
|
||||
unfavorite \- Remove the favorite star from an agent
|
||||
.SH SYNOPSIS
|
||||
\fBunfavorite\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Remove the favorite star from an agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-uninstall 1 "uninstall "
|
||||
.SH NAME
|
||||
uninstall \- Uninstall an agent (managed or external) and clean its files
|
||||
.SH SYNOPSIS
|
||||
\fBuninstall\fR [\fB\-\-purge\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Uninstall an agent (managed or external) and clean its files
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-purge\fR
|
||||
Also remove logs and the agent entry from the user config file
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-untag 1 "untag "
|
||||
.SH NAME
|
||||
untag \- Remove a personal tag from an agent
|
||||
.SH SYNOPSIS
|
||||
\fBuntag\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR> <\fITAG\fR>
|
||||
.SH DESCRIPTION
|
||||
Remove a personal tag from an agent
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
.TP
|
||||
<\fITAG\fR>
|
||||
Tag to remove
|
||||
@@ -0,0 +1,22 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-update 1 "update "
|
||||
.SH NAME
|
||||
update \- Update an installed agent to the latest available version
|
||||
.SH SYNOPSIS
|
||||
\fBupdate\fR [\fB\-\-all\fR] [\fB\-\-rollback\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIAGENT\fR]
|
||||
.SH DESCRIPTION
|
||||
Update an installed agent to the latest available version
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-all\fR
|
||||
Update every installed managed agent
|
||||
.TP
|
||||
\fB\-\-rollback\fR [\fI<ROLLBACK>\fR]
|
||||
Roll back to a pre\-update backup instead of updating ("latest" or a backup id; "\-\-rollback list" shows them)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
[\fIAGENT\fR]
|
||||
Agent name or alias (required unless \-\-all)
|
||||
@@ -0,0 +1,13 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-version 1 "version "
|
||||
.SH NAME
|
||||
version \- Display version and build information
|
||||
.SH SYNOPSIS
|
||||
\fBversion\fR [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Display version and build information
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,25 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-watch 1 "watch "
|
||||
.SH NAME
|
||||
watch \- Supervise an agent and optionally restart it on crash
|
||||
.SH SYNOPSIS
|
||||
\fBwatch\fR [\fB\-\-restart\fR] [\fB\-\-notify\fR] [\fB\-\-interval\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIAGENT\fR>
|
||||
.SH DESCRIPTION
|
||||
Supervise an agent and optionally restart it on crash
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-restart\fR
|
||||
Restart the agent automatically when it dies (with backoff)
|
||||
.TP
|
||||
\fB\-\-notify\fR
|
||||
Desktop notification on every restart
|
||||
.TP
|
||||
\fB\-\-interval\fR \fI<SECS>\fR [default: 5]
|
||||
Check interval in seconds (default: 5)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
.TP
|
||||
<\fIAGENT\fR>
|
||||
Agent name or alias
|
||||
@@ -0,0 +1,19 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am-web 1 "web "
|
||||
.SH NAME
|
||||
web \- Local read\-only web dashboard with charts (issue #54)
|
||||
.SH SYNOPSIS
|
||||
\fBweb\fR [\fB\-\-port\fR] [\fB\-\-no\-open\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
||||
.SH DESCRIPTION
|
||||
Local read\-only web dashboard with charts (issue #54)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-port\fR \fI<PORT>\fR
|
||||
Port to listen on (default 7878)
|
||||
.TP
|
||||
\fB\-\-no\-open\fR
|
||||
Do not open the browser automatically
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help
|
||||
@@ -0,0 +1,253 @@
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.TH am 1 "am 1.1.0"
|
||||
.SH NAME
|
||||
am \- agent\-manager (am) — manage local AI coding agents
|
||||
.SH SYNOPSIS
|
||||
\fBam\fR [\fB\-c\fR|\fB\-\-config\fR] [\fB\-v\fR|\fB\-\-verbose\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-\-dry\-run\fR] [\fB\-\-json\fR] [\fB\-\-no\-color\fR] [\fB\-\-theme\fR] [\fB\-\-lang\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] [\fIsubcommands\fR]
|
||||
.SH DESCRIPTION
|
||||
agent\-manager (am) — a CLI to manage local AI coding agents.
|
||||
.PP
|
||||
Install, uninstall, start, stop, restart and update AI agents from a YAML
|
||||
catalog. Handles dependencies (Node, Python, Go, Rust, Bun), binaries from
|
||||
GitHub Releases, install scripts, and git repositories. All state lives under
|
||||
your user directories; nothing pollutes the system.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-c\fR, \fB\-\-config\fR \fI<FILE>\fR
|
||||
Use an alternate configuration file
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-verbose\fR
|
||||
Verbose output: show every command executed and its details
|
||||
.TP
|
||||
\fB\-q\fR, \fB\-\-quiet\fR
|
||||
Quiet mode: only errors are printed
|
||||
.TP
|
||||
\fB\-y\fR, \fB\-\-yes\fR
|
||||
Answer yes to every confirmation prompt
|
||||
.TP
|
||||
\fB\-\-dry\-run\fR
|
||||
Simulate the action without changing anything
|
||||
.TP
|
||||
\fB\-\-json\fR
|
||||
Emit machine\-readable JSON on stdout (for scripts)
|
||||
.TP
|
||||
\fB\-\-no\-color\fR
|
||||
Disable ANSI colors
|
||||
.TP
|
||||
\fB\-\-theme\fR \fI<THEME>\fR
|
||||
Color theme for the output (see \*(Aqam help theme\*(Aq for the list)
|
||||
.TP
|
||||
\fB\-\-lang\fR \fI<LANG>\fR
|
||||
Output language: fr (default) or en (issue #74)
|
||||
.br
|
||||
|
||||
.br
|
||||
\fIPossible values:\fR
|
||||
.RS 14
|
||||
.IP \(bu 2
|
||||
fr
|
||||
.IP \(bu 2
|
||||
en
|
||||
.RE
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Print help (see a summary with \*(Aq\-h\*(Aq)
|
||||
.TP
|
||||
\fB\-V\fR, \fB\-\-version\fR
|
||||
Print version
|
||||
.SH SUBCOMMANDS
|
||||
.TP
|
||||
am\-list(1)
|
||||
List installed agents (default); use \-\-all for the whole catalog
|
||||
.TP
|
||||
am\-logs(1)
|
||||
Tail the log file of an agent (\-\-follow for a live view)
|
||||
.TP
|
||||
am\-open(1)
|
||||
Open an agent\*(Aqs installation directory in the file manager
|
||||
.TP
|
||||
am\-watch(1)
|
||||
Supervise an agent and optionally restart it on crash
|
||||
.TP
|
||||
am\-dashboard(1)
|
||||
Live TUI dashboard: overview, activity, stats, sessions, projects
|
||||
.TP
|
||||
am\-favorite(1)
|
||||
Mark an agent as a favorite (star in list and status)
|
||||
.TP
|
||||
am\-unfavorite(1)
|
||||
Remove the favorite star from an agent
|
||||
.TP
|
||||
am\-note(1)
|
||||
Attach a free\-form note to an agent (shown in \*(Aqam info\*(Aq); \*(Aqam note <agent>\*(Aq without text prints the current note
|
||||
.TP
|
||||
am\-tag(1)
|
||||
Add a personal tag to an agent
|
||||
.TP
|
||||
am\-untag(1)
|
||||
Remove a personal tag from an agent
|
||||
.TP
|
||||
am\-tags(1)
|
||||
List personal tags (with counts), optionally for one agent
|
||||
.TP
|
||||
am\-profile(1)
|
||||
Manage environment profiles (dev, prod, ...)
|
||||
.TP
|
||||
am\-man(1)
|
||||
Generate a man page for am (or for one command)
|
||||
.TP
|
||||
am\-theme(1)
|
||||
Set or show the active color theme (persisted for the next run)
|
||||
.TP
|
||||
am\-alias(1)
|
||||
Manage command aliases (cc \-> claude\-code)
|
||||
.TP
|
||||
am\-secret(1)
|
||||
Manage secrets in the OS keyring (never in plaintext config)
|
||||
.TP
|
||||
am\-audit(1)
|
||||
Audit the configuration: who changed what, when (issue #63)
|
||||
.TP
|
||||
am\-service(1)
|
||||
Register an agent as a system service (issue #55)
|
||||
.TP
|
||||
am\-schedule(1)
|
||||
Schedule am commands (issue #56)
|
||||
.TP
|
||||
am\-models(1)
|
||||
List local models (ollama, llama.cpp, LM Studio) and prune unused ones
|
||||
.TP
|
||||
am\-registry(1)
|
||||
Community registry (issue #77): publish, search and install agent catalogs hosted on Gitea
|
||||
.TP
|
||||
am\-catalog(1)
|
||||
Manage remote catalogs: update the official one, add external ones
|
||||
.TP
|
||||
am\-providers(1)
|
||||
Manage the LLM provider registry: base URLs, models, default provider
|
||||
.TP
|
||||
am\-suggest(1)
|
||||
Suggest agents matching a query, boosted by real usage (issue #61)
|
||||
.TP
|
||||
am\-ask(1)
|
||||
Ask a natural\-language request and get the matching am command(s) (issue #78): local rules first, optional LLM refinement, confirmation before execution
|
||||
.TP
|
||||
am\-ai(1)
|
||||
Langage naturel → action shell via AIChat (issues #96 #97); alias: shell
|
||||
.TP
|
||||
am\-setup(1)
|
||||
Onboarding wizard: provider, token, modèle par défaut, aichat, rôles copilot (épique v1.1.0)
|
||||
.TP
|
||||
am\-start(1)
|
||||
Start an agent (foreground by default, or detached with \-\-background)
|
||||
.TP
|
||||
am\-stop(1)
|
||||
Stop a background agent (SIGTERM, then SIGKILL after the timeout)
|
||||
.TP
|
||||
am\-restart(1)
|
||||
Restart an agent: stop, then start with the same options
|
||||
.TP
|
||||
am\-status(1)
|
||||
Show the state of one agent, or of every installed agent
|
||||
.TP
|
||||
am\-sessions(1)
|
||||
List the sessions of every agent (and of the interactive shell)
|
||||
.TP
|
||||
am\-stats(1)
|
||||
Show usage statistics computed from the event journal
|
||||
.TP
|
||||
am\-monitor(1)
|
||||
Real\-time monitor of the managed processes (issue #50)
|
||||
.TP
|
||||
am\-web(1)
|
||||
Local read\-only web dashboard with charts (issue #54)
|
||||
.TP
|
||||
am\-serve(1)
|
||||
Authenticated HTTP + WebSocket API to drive am remotely (issue #80)
|
||||
.TP
|
||||
am\-sync(1)
|
||||
Push the state into the configured git repository (issue #66)
|
||||
.TP
|
||||
am\-migrate(1)
|
||||
Transfer the installation and state to another machine (issue #68)
|
||||
.TP
|
||||
am\-top(1)
|
||||
Show the most used agents (top 10)
|
||||
.TP
|
||||
am\-report(1)
|
||||
Write a markdown activity report
|
||||
.TP
|
||||
am\-projects(1)
|
||||
Show which agent works on which project
|
||||
.TP
|
||||
am\-timeline(1)
|
||||
One chronological view of every activity (journal + REPL history)
|
||||
.TP
|
||||
am\-log(1)
|
||||
Read the event journal: everything am did
|
||||
.TP
|
||||
am\-install(1)
|
||||
Install an agent and its dependencies
|
||||
.TP
|
||||
am\-uninstall(1)
|
||||
Uninstall an agent (managed or external) and clean its files
|
||||
.TP
|
||||
am\-update(1)
|
||||
Update an installed agent to the latest available version
|
||||
.TP
|
||||
am\-search(1)
|
||||
Search the catalog by keyword (name, description, category, tags)
|
||||
.TP
|
||||
am\-history(1)
|
||||
Search the command history (am and shell commands)
|
||||
.TP
|
||||
am\-playbook(1)
|
||||
Replay a saved playbook step by step with confirmation (issue #51)
|
||||
.TP
|
||||
am\-lab(1)
|
||||
Benchmark: run the same task on several agents and compare (issue #62)
|
||||
.TP
|
||||
am\-plugins(1)
|
||||
List the event plugins and test one (issue #75)
|
||||
.TP
|
||||
am\-info(1)
|
||||
Show detailed information about one agent
|
||||
.TP
|
||||
am\-init(1)
|
||||
Generate a local agent\-manager.yaml for the current directory
|
||||
.TP
|
||||
am\-help(1)
|
||||
Display help: the overview, a command, the command list, or a search
|
||||
.TP
|
||||
am\-version(1)
|
||||
Display version and build information
|
||||
.TP
|
||||
am\-tip(1)
|
||||
Cheat sheet: the most useful commands, their key options, your most\-used commands and a rotating tip of the day
|
||||
.TP
|
||||
am\-config(1)
|
||||
Manage the configuration file
|
||||
.TP
|
||||
am\-doctor(1)
|
||||
Check the environment: tools, config validity, paths, permissions
|
||||
.TP
|
||||
am\-run(1)
|
||||
Run the agent command directly with the given arguments (no process management)
|
||||
.TP
|
||||
am\-completion(1)
|
||||
Generate a shell completion script
|
||||
.TP
|
||||
am\-self\-update(1)
|
||||
Update agent\-manager itself from the latest release
|
||||
.TP
|
||||
am\-self\-uninstall(1)
|
||||
Remove agent\-manager and everything it created from this machine
|
||||
.TP
|
||||
am\-export(1)
|
||||
Export the configuration and installation state (backup)
|
||||
.TP
|
||||
am\-import(1)
|
||||
Import a previously exported configuration and state
|
||||
.SH VERSION
|
||||
v1.1.0
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
# Builds an am_<version>_amd64.deb from dist/am-linux-x86_64.
|
||||
# Usage: packaging/deb/make-deb.sh <version> [arch]
|
||||
set -e
|
||||
VERSION="$1"
|
||||
ARCH="${2:-amd64}"
|
||||
ROOT="$(mktemp -d)"
|
||||
PKG="am_${VERSION}_${ARCH}"
|
||||
|
||||
mkdir -p "$ROOT/$PKG/usr/bin" "$ROOT/$PKG/usr/share/doc/am" "$ROOT/$PKG/DEBIAN"
|
||||
cp dist/am-linux-x86_64 "$ROOT/$PKG/usr/bin/am"
|
||||
chmod 755 "$ROOT/$PKG/usr/bin/am"
|
||||
|
||||
cat > "$ROOT/$PKG/DEBIAN/control" <<EOF
|
||||
Package: am
|
||||
Version: $VERSION
|
||||
Section: utils
|
||||
Priority: optional
|
||||
Architecture: $ARCH
|
||||
Maintainer: bruno <[email protected]>
|
||||
Description: Manage local AI coding agents
|
||||
List, install, start, stop and update local AI coding agents with
|
||||
automatic dependency handling and a YAML-driven catalog.
|
||||
EOF
|
||||
|
||||
cat > "$ROOT/$PKG/usr/share/doc/am/copyright" <<EOF
|
||||
Copyright (c) 2026 bruno
|
||||
License: MIT
|
||||
EOF
|
||||
|
||||
dpkg-deb --build --root-owner-group "$ROOT/$PKG" "dist/$PKG.deb"
|
||||
rm -rf "$ROOT"
|
||||
echo "built dist/$PKG.deb"
|
||||
@@ -0,0 +1,36 @@
|
||||
# Homebrew formula - pour un tap local, ou a soumettre a homebrew/core.
|
||||
# Rendu : scripts/render-manifests.ps1 (remplace {{VERSION}} et les sha256).
|
||||
class Am < Formula
|
||||
desc "Manage local AI coding agents: list, install, start, stop, update"
|
||||
homepage "https://git.dracodev.net/Projets/agent-manager"
|
||||
license "MIT"
|
||||
version "{{VERSION}}"
|
||||
|
||||
on_macos do
|
||||
if Hardware::CPU.arm?
|
||||
url "https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-macos-aarch64.tar.gz"
|
||||
sha256 "{{SHA256_MACOS_AARCH64}}"
|
||||
else
|
||||
url "https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-macos-x86_64.tar.gz"
|
||||
sha256 "{{SHA256_MACOS_X86_64}}"
|
||||
end
|
||||
end
|
||||
|
||||
on_linux do
|
||||
if Hardware::CPU.arm?
|
||||
url "https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-linux-aarch64.tar.gz"
|
||||
sha256 "{{SHA256_LINUX_AARCH64}}"
|
||||
else
|
||||
url "https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-linux-x86_64.tar.gz"
|
||||
sha256 "{{SHA256_LINUX_X86_64}}"
|
||||
end
|
||||
end
|
||||
|
||||
def install
|
||||
bin.install "am"
|
||||
end
|
||||
|
||||
test do
|
||||
system bin/"am", "version"
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
# RPM spec - build avec: rpmbuild -bb packaging/rpm/am.spec
|
||||
# (rendu par scripts/render-manifests.ps1: %%{VERSION} -> version)
|
||||
Name: am
|
||||
Version: {{VERSION}}
|
||||
Release: 1%{?dist}
|
||||
Summary: Manage local AI coding agents
|
||||
License: MIT
|
||||
URL: https://git.dracodev.net/Projets/agent-manager
|
||||
Source0: am-linux-x86_64.tar.gz
|
||||
|
||||
%description
|
||||
am lists, installs, starts, stops and updates local AI coding agents
|
||||
(Claude Code, Codex, Aider, ...) with automatic dependency handling and a
|
||||
YAML-driven catalog.
|
||||
|
||||
%prep
|
||||
%setup -c -T
|
||||
tar -xzf %{SOURCE0}
|
||||
|
||||
%install
|
||||
install -Dm755 am %{buildroot}%{_bindir}/am
|
||||
|
||||
%files
|
||||
%{_bindir}/am
|
||||
|
||||
%changelog
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"version": "{{VERSION}}",
|
||||
"description": "Manage local AI coding agents: list, install, start, stop, update - with automatic dependency handling and a YAML-driven catalog.",
|
||||
"homepage": "https://git.dracodev.net/Projets/agent-manager",
|
||||
"license": "MIT",
|
||||
"architecture": {
|
||||
"64bit": {
|
||||
"url": "https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-windows-x86_64.zip",
|
||||
"hash": "{{SHA256_WINDOWS}}"
|
||||
}
|
||||
},
|
||||
"bin": "am.exe",
|
||||
"checkver": {
|
||||
"url": "https://git.dracodev.net/api/v1/repos/Projets/agent-manager/releases/latest",
|
||||
"regex": "tag_name\":\s*\"v([\d.]+)\""
|
||||
},
|
||||
"autoupdate": {
|
||||
"architecture": {
|
||||
"64bit": {
|
||||
"url": "https://git.dracodev.net/Projets/agent-manager/releases/download/v$version/am-windows-x86_64.zip"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# Winget manifest (version 1.6) - submit to microsoft/winget-pkgs
|
||||
# Rendering: scripts/render-manifests.ps1
|
||||
PackageIdentifier: BrunoDracodev.AgentManager
|
||||
PackageVersion: {{VERSION}}
|
||||
MinimumOSVersion: 10.0.0.0
|
||||
InstallerType: zip
|
||||
Installers:
|
||||
- Architecture: x64
|
||||
InstallerUrl: https://git.dracodev.net/Projets/agent-manager/releases/download/v{{VERSION}}/am-windows-x86_64.zip
|
||||
InstallerSha256: {{SHA256_WINDOWS}}
|
||||
NestedInstallerType: portable
|
||||
NestedInstallerFiles:
|
||||
- RelativeFilePath: am.exe
|
||||
PortableCommandAlias: am
|
||||
ManifestType: installer
|
||||
ManifestVersion: 1.6.0
|
||||
@@ -0,0 +1,18 @@
|
||||
# Winget locale manifest - submit to microsoft/winget-pkgs
|
||||
PackageIdentifier: BrunoDracodev.AgentManager
|
||||
PackageVersion: {{VERSION}}
|
||||
PackageLocale: en-US
|
||||
Publisher: bruno (dracodev)
|
||||
PackageName: agent-manager (am)
|
||||
PackageUrl: https://git.dracodev.net/Projets/agent-manager
|
||||
License: MIT
|
||||
ShortDescription: Manage local AI coding agents - list, install, start, stop, update - with automatic dependency handling.
|
||||
Moniker: am
|
||||
Tags:
|
||||
- agent
|
||||
- claude
|
||||
- cli
|
||||
- coding
|
||||
- llm
|
||||
ManifestType: defaultLocale
|
||||
ManifestVersion: 1.6.0
|
||||
@@ -0,0 +1,6 @@
|
||||
# Winget version manifest - submit to microsoft/winget-pkgs
|
||||
PackageIdentifier: BrunoDracodev.AgentManager
|
||||
PackageVersion: {{VERSION}}
|
||||
DefaultLocale: en-US
|
||||
ManifestType: version
|
||||
ManifestVersion: 1.6.0
|
||||
@@ -0,0 +1,29 @@
|
||||
# Builds the release artefacts for the current platform (Windows):
|
||||
# target/release/am.exe -> dist/am-windows-x86_64.zip
|
||||
# Also prints the sha256 of every archive (for the packaging manifests).
|
||||
param([switch]$NoTest)
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
cargo build --release --locked
|
||||
if (-not $NoTest) { cargo test --release --locked }
|
||||
|
||||
New-Item -ItemType Directory -Force dist | Out-Null
|
||||
$zip = "dist/am-windows-x86_64.zip"
|
||||
Remove-Item $zip -ErrorAction SilentlyContinue
|
||||
Compress-Archive -Path target/release/am.exe -DestinationPath $zip
|
||||
|
||||
function Get-Sha256Net([string]$path) {
|
||||
$stream = [System.IO.File]::OpenRead($path)
|
||||
try {
|
||||
$sha = [System.Security.Cryptography.SHA256]::Create()
|
||||
$bytes = $sha.ComputeHash($stream)
|
||||
return ([BitConverter]::ToString($bytes) -replace '-', '').ToLower()
|
||||
} finally { $stream.Close() }
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Artefacts:"
|
||||
Get-ChildItem dist -File | ForEach-Object {
|
||||
$hash = Get-Sha256Net $_.FullName
|
||||
Write-Host (" {0,-32} {1} sha256:{2}" -f $_.Name, $_.Length, $hash)
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
# Renders the packaging templates (scoop, winget, homebrew, rpm) with the
|
||||
# version and the sha256 of every release archive.
|
||||
# Usage: scripts/render-manifests.ps1 -Version 0.4.3 [-DistDir dist]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)][string]$Version,
|
||||
[string]$DistDir = "dist"
|
||||
)
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Get-Sha([string]$file) {
|
||||
$p = Join-Path $DistDir $file
|
||||
if (-not (Test-Path $p)) {
|
||||
Write-Warning "missing $p - placeholder 0000... (build it or wait for the CI runner)"
|
||||
return "0000000000000000000000000000000000000000000000000000000000000000"
|
||||
}
|
||||
(Get-FileHash $p -Algorithm SHA256).Hash.ToLower()
|
||||
}
|
||||
|
||||
$vars = [ordered]@{
|
||||
"{{VERSION}}" = $Version
|
||||
"{{SHA256_WINDOWS}}" = Get-Sha "am-windows-x86_64.zip"
|
||||
"{{SHA256_LINUX_X86_64}}" = Get-Sha "am-linux-x86_64.tar.gz"
|
||||
"{{SHA256_LINUX_AARCH64}}" = Get-Sha "am-linux-aarch64.tar.gz"
|
||||
"{{SHA256_MACOS_X86_64}}" = Get-Sha "am-macos-x86_64.tar.gz"
|
||||
"{{SHA256_MACOS_AARCH64}}" = Get-Sha "am-macos-aarch64.tar.gz"
|
||||
}
|
||||
|
||||
$targets = @(
|
||||
@{ Src = "packaging/scoop/am.json"; Dst = "dist/scoop/am.json" },
|
||||
@{ Src = "packaging/winget/agent-manager.installer.yaml"; Dst = "dist/winget/agent-manager.installer.yaml" },
|
||||
@{ Src = "packaging/winget/agent-manager.locale.en-US.yaml"; Dst = "dist/winget/agent-manager.locale.en-US.yaml" },
|
||||
@{ Src = "packaging/winget/agent-manager.yaml"; Dst = "dist/winget/agent-manager.yaml" },
|
||||
@{ Src = "packaging/homebrew/am.rb"; Dst = "dist/homebrew/am.rb" },
|
||||
@{ Src = "packaging/rpm/am.spec"; Dst = "dist/rpm/am.spec" }
|
||||
)
|
||||
|
||||
foreach ($t in $targets) {
|
||||
$text = Get-Content $t.Src -Raw
|
||||
foreach ($k in $vars.Keys) { $text = $text.Replace($k, $vars[$k]) }
|
||||
New-Item -ItemType Directory -Force (Split-Path $t.Dst) | Out-Null
|
||||
Set-Content -Path $t.Dst -Value $text -NoNewline -Encoding utf8
|
||||
Write-Host "rendered $($t.Dst)"
|
||||
}
|
||||
Write-Host ""
|
||||
Write-Host "Manifests rendus dans dist/. Puis :"
|
||||
Write-Host " - scoop : scoop install dist/scoop/am.json (ou ajoutez-le a votre bucket)"
|
||||
Write-Host " - winget : soumettez dist/winget/*.yaml a microsoft/winget-pkgs"
|
||||
Write-Host " - homebrew : servez dist/homebrew/am.rb via un tap, ou soumettez a homebrew/core"
|
||||
Write-Host " - rpm : copiez dist/rpm/am.spec + dist/am-linux-x86_64.tar.gz dans ~/rpmbuild/{SPECS,SOURCES} puis rpmbuild -bb"
|
||||
Write-Host " - deb : packaging/deb/make-deb.sh $Version"
|
||||
@@ -0,0 +1,298 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>am web — Cockpit sombre (mockup)</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
:root {
|
||||
--bg:#0b0f14; --panel:#121821; --panel2:#0f151c; --border:#1d2733;
|
||||
--fg:#e6edf3; --muted:#8b98a5; --accent:#3ddc97; --accent2:#38bdf8;
|
||||
--ok:#34d399; --warn:#f59e0b; --err:#f87171; --purple:#a78bfa;
|
||||
}
|
||||
body {
|
||||
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
|
||||
background:var(--bg); color:var(--fg); line-height:1.5; font-size:14px;
|
||||
}
|
||||
.layout { display:flex; min-height:100vh; }
|
||||
/* ---------- Sidebar ---------- */
|
||||
.side {
|
||||
width:225px; flex-shrink:0; background:var(--panel2);
|
||||
border-right:1px solid var(--border); padding:18px 12px;
|
||||
display:flex; flex-direction:column; gap:4px; position:sticky; top:0; height:100vh;
|
||||
}
|
||||
.logo { display:flex; align-items:center; gap:10px; padding:4px 8px 18px; }
|
||||
.logo-badge {
|
||||
width:34px; height:34px; border-radius:9px; background:linear-gradient(135deg,#3ddc97,#38bdf8);
|
||||
display:flex; align-items:center; justify-content:center; font-weight:800; font-size:16px; color:#0b0f14;
|
||||
}
|
||||
.logo b { font-size:16px; letter-spacing:.5px; }
|
||||
.logo small { display:block; color:var(--muted); font-size:11px; font-weight:400; }
|
||||
.nav-item {
|
||||
display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:8px;
|
||||
color:var(--muted); cursor:pointer; border:1px solid transparent; font-size:13.5px;
|
||||
}
|
||||
.nav-item:hover { background:rgba(61,220,151,.07); color:var(--fg); }
|
||||
.nav-item.active { background:rgba(61,220,151,.12); color:var(--accent); border-color:rgba(61,220,151,.25); font-weight:600; }
|
||||
.nav-item .ico { width:18px; text-align:center; }
|
||||
.side-foot { margin-top:auto; padding:12px 8px 4px; border-top:1px solid var(--border); color:var(--muted); font-size:11.5px; }
|
||||
.side-foot .dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--ok); margin-right:6px; }
|
||||
/* ---------- Main ---------- */
|
||||
.main { flex:1; padding:22px 28px 40px; max-width:1200px; }
|
||||
.topbar { display:flex; align-items:center; justify-content:space-between; margin-bottom:22px; gap:12px; flex-wrap:wrap; }
|
||||
.topbar h1 { font-size:20px; font-weight:700; }
|
||||
.topbar .sub { color:var(--muted); font-size:12.5px; margin-top:2px; }
|
||||
.top-actions { display:flex; align-items:center; gap:10px; }
|
||||
.badge {
|
||||
font-size:11.5px; padding:4px 10px; border-radius:99px; border:1px solid var(--border);
|
||||
color:var(--muted); background:var(--panel); font-family:ui-monospace,Consolas,monospace;
|
||||
}
|
||||
.badge.live { color:var(--ok); border-color:rgba(52,211,153,.4); }
|
||||
.badge.live::before { content:"● "; }
|
||||
.btn {
|
||||
background:var(--accent); color:#0b0f14; border:none; border-radius:8px; padding:7px 14px;
|
||||
font-weight:700; font-size:13px; cursor:pointer;
|
||||
}
|
||||
.btn:hover { filter:brightness(1.1); }
|
||||
.btn.ghost { background:transparent; color:var(--muted); border:1px solid var(--border); font-weight:500; }
|
||||
.btn.ghost:hover { color:var(--fg); border-color:var(--muted); }
|
||||
/* ---------- KPI cards ---------- */
|
||||
.kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px; }
|
||||
.kpi { background:var(--panel); border:1px solid var(--border); border-radius:12px; padding:16px 18px; }
|
||||
.kpi .label { color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.6px; }
|
||||
.kpi .value { font-size:28px; font-weight:800; margin-top:6px; }
|
||||
.kpi .delta { font-size:11.5px; margin-top:4px; }
|
||||
.kpi .delta.up { color:var(--ok); } .kpi .delta.down { color:var(--err); }
|
||||
.kpi .emoji { float:right; font-size:20px; opacity:.9; }
|
||||
/* ---------- Panels ---------- */
|
||||
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:18px; }
|
||||
.panel { background:var(--panel); border:1px solid var(--border); border-radius:12px; padding:16px 18px; }
|
||||
.panel h3 { font-size:13px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); margin-bottom:14px; }
|
||||
/* bars */
|
||||
.bar-row { display:flex; align-items:center; gap:10px; margin-bottom:9px; font-size:12.5px; }
|
||||
.bar-row .name { width:110px; color:var(--fg); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
||||
.bar-row .track { flex:1; height:14px; background:var(--panel2); border-radius:7px; overflow:hidden; }
|
||||
.bar-row .fill { height:100%; border-radius:7px; background:linear-gradient(90deg,var(--accent),var(--accent2)); }
|
||||
.bar-row .val { width:34px; text-align:right; color:var(--muted); font-family:ui-monospace,monospace; }
|
||||
/* trend svg */
|
||||
.trend-wrap { position:relative; }
|
||||
.trend-axis { display:flex; justify-content:space-between; color:var(--muted); font-size:10.5px; margin-top:4px; font-family:ui-monospace,monospace; }
|
||||
/* tables */
|
||||
table { width:100%; border-collapse:collapse; font-size:12.5px; }
|
||||
th { text-align:left; color:var(--muted); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.5px; padding:7px 10px; border-bottom:1px solid var(--border); }
|
||||
td { padding:8px 10px; border-bottom:1px solid rgba(29,39,51,.5); }
|
||||
tbody tr:hover { background:rgba(61,220,151,.05); }
|
||||
.pill { font-size:10.5px; padding:2px 8px; border-radius:99px; font-weight:600; }
|
||||
.pill.ok { background:rgba(52,211,153,.14); color:var(--ok); }
|
||||
.pill.run { background:rgba(56,189,248,.14); color:var(--accent2); }
|
||||
.pill.fail { background:rgba(248,113,113,.14); color:var(--err); }
|
||||
.pill.mut { background:rgba(167,139,250,.14); color:var(--purple); }
|
||||
.mono { font-family:ui-monospace,Consolas,monospace; font-size:11.5px; color:var(--muted); }
|
||||
.search { width:100%; background:var(--panel2); border:1px solid var(--border); border-radius:8px; color:var(--fg); padding:8px 12px; font-size:12.5px; margin-bottom:10px; }
|
||||
.search:focus { outline:none; border-color:var(--accent); }
|
||||
/* timeline */
|
||||
.tl { list-style:none; }
|
||||
.tl li { display:flex; gap:12px; padding:8px 0; border-bottom:1px solid rgba(29,39,51,.5); align-items:baseline; }
|
||||
.tl .dot { width:8px; height:8px; border-radius:50%; margin-top:6px; flex-shrink:0; }
|
||||
.tl .t { color:var(--fg); } .tl .a { color:var(--accent); font-weight:600; }
|
||||
.tl .m { color:var(--muted); font-size:11.5px; margin-left:auto; white-space:nowrap; font-family:ui-monospace,monospace; }
|
||||
.empty-note { color:var(--muted); font-size:12px; text-align:center; padding:18px 0; }
|
||||
.panel.hidden, .view { display:none; } .view.active { display:block; }
|
||||
@media (max-width:900px){ .kpis{grid-template-columns:repeat(2,1fr);} .grid2{grid-template-columns:1fr;} .side{width:64px;} .side .lbl,.logo small,.side-foot span{display:none;} }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layout">
|
||||
<aside class="side">
|
||||
<div class="logo">
|
||||
<div class="logo-badge">am</div>
|
||||
<div><b>agent-manager</b><small>cockpit des agents</small></div>
|
||||
</div>
|
||||
<div class="nav-item active" data-view="overview"><span class="ico">▦</span><span class="lbl">Vue d'ensemble</span></div>
|
||||
<div class="nav-item" data-view="stats"><span class="ico">📊</span><span class="lbl">Statistiques</span></div>
|
||||
<div class="nav-item" data-view="sessions"><span class="ico">⏱</span><span class="lbl">Sessions</span></div>
|
||||
<div class="nav-item" data-view="events"><span class="ico">📜</span><span class="lbl">Événements</span></div>
|
||||
<div class="nav-item" data-view="projects"><span class="ico">🗂</span><span class="lbl">Projets</span></div>
|
||||
<div class="side-foot">
|
||||
<span><span class="dot"></span>v0.6.0 · lang FR ·<br>127.0.0.1:7878</span>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<main class="main">
|
||||
<div class="topbar">
|
||||
<div>
|
||||
<h1 id="view-title">Vue d'ensemble</h1>
|
||||
<div class="sub" id="last-update">Dernière mise à jour : il y a 5 s</div>
|
||||
</div>
|
||||
<div class="top-actions">
|
||||
<span class="badge live">serveur local</span>
|
||||
<span class="badge">127.0.0.1:7878</span>
|
||||
<button class="btn ghost" onclick="fakeRefresh()">↻ Actualiser</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ===== OVERVIEW ===== -->
|
||||
<section class="view active" id="overview">
|
||||
<div class="kpis">
|
||||
<div class="kpi"><span class="emoji">🤖</span><div class="label">Agents installés</div><div class="value">9</div><div class="delta up">▲ +1 cette semaine</div></div>
|
||||
<div class="kpi"><span class="emoji">⚡</span><div class="label">En cours</div><div class="value">2</div><div class="delta up">● claude-code · codex</div></div>
|
||||
<div class="kpi"><span class="emoji">⏱</span><div class="label">Sessions (7 j)</div><div class="value">47</div><div class="delta up">▲ +12 % vs semaine préc.</div></div>
|
||||
<div class="kpi"><span class="emoji">📜</span><div class="label">Événements (24 h)</div><div class="value">132</div><div class="delta down">▼ 8 % vs hier</div></div>
|
||||
</div>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Top agents — sessions (7 j)</h3>
|
||||
<div class="bar-row"><span class="name">claude-code</span><div class="track"><div class="fill" style="width:100%"></div></div><span class="val">18</span></div>
|
||||
<div class="bar-row"><span class="name">aider</span><div class="track"><div class="fill" style="width:50%"></div></div><span class="val">9</span></div>
|
||||
<div class="bar-row"><span class="name">codex</span><div class="track"><div class="fill" style="width:44%"></div></div><span class="val">8</span></div>
|
||||
<div class="bar-row"><span class="name">gemini-cli</span><div class="track"><div class="fill" style="width:28%"></div></div><span class="val">5</span></div>
|
||||
<div class="bar-row"><span class="name">jcode</span><div class="track"><div class="fill" style="width:22%"></div></div><span class="val">4</span></div>
|
||||
<div class="bar-row"><span class="name">opencode</span><div class="track"><div class="fill" style="width:17%"></div></div><span class="val">3</span></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Activité — sessions par jour (14 j)</h3>
|
||||
<div class="trend-wrap">
|
||||
<svg viewBox="0 0 480 150" width="100%" height="150">
|
||||
<defs><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#3ddc97" stop-opacity=".35"/><stop offset="1" stop-color="#3ddc97" stop-opacity="0"/></linearGradient></defs>
|
||||
<path d="M0,120 L37,108 L74,116 L111,96 L148,104 L185,84 L222,92 L259,72 L296,80 L333,62 L370,70 L407,48 L444,58 L480,34 L480,150 L0,150 Z" fill="url(#g)"/>
|
||||
<polyline points="0,120 37,108 74,116 111,96 148,104 185,84 222,92 259,72 296,80 333,62 370,70 407,48 444,58 480,34" fill="none" stroke="#3ddc97" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<circle cx="480" cy="34" r="4" fill="#38bdf8"/>
|
||||
</svg>
|
||||
<div class="trend-axis"><span>04 août</span><span>11 août</span><span>aujourd'hui</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Activité récente</h3>
|
||||
<ul class="tl">
|
||||
<li><span class="dot" style="background:var(--ok)"></span><span class="t"><span class="a">claude-code</span> terminé — session 3 h 12 min</span><span class="m">il y a 2 min</span></li>
|
||||
<li><span class="dot" style="background:var(--accent2)"></span><span class="t"><span class="a">codex</span> démarré — projet flowdeck</span><span class="m">il y a 14 min</span></li>
|
||||
<li><span class="dot" style="background:var(--purple)"></span><span class="t"><span class="a">jcode</span> mis à jour 0.76.0 → 0.78.1</span><span class="m">il y a 1 h</span></li>
|
||||
<li><span class="dot" style="background:var(--err)"></span><span class="t"><span class="a">aider</span> échec — exit code 1</span><span class="m">il y a 3 h</span></li>
|
||||
<li><span class="dot" style="background:var(--ok)"></span><span class="t"><span class="a">gemini-cli</span> terminé — session 42 min</span><span class="m">il y a 5 h</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Sessions en cours</h3>
|
||||
<table>
|
||||
<thead><tr><th>Agent</th><th>Projet</th><th>Durée</th><th>Démarrée</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>claude-code</td><td>agent-manager</td><td class="mono">3 h 12 min</td><td class="mono">14:26</td></tr>
|
||||
<tr><td>codex</td><td>flowdeck</td><td class="mono">14 min</td><td class="mono">17:18</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="empty-note" id="running-empty" style="display:none">Aucune session en cours</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== STATS ===== -->
|
||||
<section class="view" id="stats">
|
||||
<div class="panel">
|
||||
<h3>Statistiques par agent — période 30 j</h3>
|
||||
<table>
|
||||
<thead><tr><th>Agent</th><th>Sessions</th><th>Durée totale</th><th>Taux de succès</th><th>Coût estimé</th><th>Dernière activité</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>claude-code</td><td>54</td><td class="mono">38 h 12 m</td><td><span class="pill ok">94 %</span></td><td class="mono">12,40 €</td><td class="mono">il y a 2 min</td></tr>
|
||||
<tr><td>aider</td><td>31</td><td class="mono">21 h 48 m</td><td><span class="pill ok">87 %</span></td><td class="mono">4,10 €</td><td class="mono">il y a 3 h</td></tr>
|
||||
<tr><td>codex</td><td>27</td><td class="mono">19 h 05 m</td><td><span class="pill ok">89 %</span></td><td class="mono">8,75 €</td><td class="mono">il y a 14 min</td></tr>
|
||||
<tr><td>gemini-cli</td><td>14</td><td class="mono">6 h 33 m</td><td><span class="pill ok">79 %</span></td><td class="mono">0 € (local)</td><td class="mono">il y a 5 h</td></tr>
|
||||
<tr><td>jcode</td><td>12</td><td class="mono">5 h 02 m</td><td><span class="pill run">67 %</span></td><td class="mono">1,20 €</td><td class="mono">hier</td></tr>
|
||||
<tr><td>opencode</td><td>9</td><td class="mono">4 h 40 m</td><td><span class="pill fail">55 %</span></td><td class="mono">0,90 €</td><td class="mono">il y a 2 j</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== SESSIONS ===== -->
|
||||
<section class="view" id="sessions">
|
||||
<div class="panel">
|
||||
<h3>Sessions — 7 derniers jours</h3>
|
||||
<input class="search" id="sess-search" placeholder="Filtrer par agent, projet ou id…" oninput="filterSessions(this.value)">
|
||||
<table>
|
||||
<thead><tr><th>Session</th><th>Agent</th><th>Projet</th><th>Statut</th><th>Durée</th><th>Fin</th></tr></thead>
|
||||
<tbody id="sess-body">
|
||||
<tr><td class="mono">20260818_172631_b4e2f1</td><td>claude-code</td><td>agent-manager</td><td><span class="pill run">en cours</span></td><td class="mono">3 h 12 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_171812_c9d0a4</td><td>codex</td><td>flowdeck</td><td><span class="pill run">en cours</span></td><td class="mono">14 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_153402_a1b2c3</td><td>claude-code</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">1 h 05 min</td><td class="mono">16:40</td></tr>
|
||||
<tr><td class="mono">20260818_142118_d4e5f6</td><td>aider</td><td>obsigate</td><td><span class="pill fail">échec</span></td><td class="mono">12 min</td><td class="mono">14:33</td></tr>
|
||||
<tr><td class="mono">20260818_113047_e7f8a9</td><td>gemini-cli</td><td>imago</td><td><span class="pill ok">terminée</span></td><td class="mono">42 min</td><td class="mono">12:12</td></tr>
|
||||
<tr><td class="mono">20260817_220933_b0c1d2</td><td>claude-code</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">2 h 47 min</td><td class="mono">23:50</td></tr>
|
||||
<tr><td class="mono">20260817_183011_e2f3a4</td><td>jcode</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">1 h 22 min</td><td class="mono">19:35</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="empty-note" id="sess-empty" style="display:none">Aucune session ne correspond au filtre</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== EVENTS ===== -->
|
||||
<section class="view" id="events">
|
||||
<div class="panel">
|
||||
<h3>Journal d'événements — aujourd'hui</h3>
|
||||
<ul class="tl">
|
||||
<li><span class="dot" style="background:var(--accent2)"></span><span class="t"><span class="a">start</span> codex — projet flowdeck</span><span class="m">17:18</span></li>
|
||||
<li><span class="dot" style="background:var(--ok)"></span><span class="t"><span class="a">stop</span> claude-code — session 1 h 05 min</span><span class="m">16:40</span></li>
|
||||
<li><span class="dot" style="background:var(--accent2)"></span><span class="t"><span class="a">start</span> claude-code — projet agent-manager</span><span class="m">15:34</span></li>
|
||||
<li><span class="dot" style="background:var(--err)"></span><span class="t"><span class="a">run</span> aider — exit code 1 (fichier manquant)</span><span class="m">14:33</span></li>
|
||||
<li><span class="dot" style="background:var(--purple)"></span><span class="t"><span class="a">update</span> jcode 0.76.0 → 0.78.1</span><span class="m">13:05</span></li>
|
||||
<li><span class="dot" style="background:var(--ok)"></span><span class="t"><span class="a">stop</span> gemini-cli — session 42 min</span><span class="m">12:12</span></li>
|
||||
<li><span class="dot" style="background:var(--accent2)"></span><span class="t"><span class="a">start</span> gemini-cli — projet imago</span><span class="m">11:30</span></li>
|
||||
<li><span class="dot" style="background:var(--purple)"></span><span class="t"><span class="a">install</span> opencode 0.14.2 — méthode binary</span><span class="m">10:02</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== PROJECTS ===== -->
|
||||
<section class="view" id="projects">
|
||||
<div class="kpis" style="grid-template-columns:repeat(3,1fr)">
|
||||
<div class="kpi"><div class="label">Projets suivis</div><div class="value">4</div><div class="delta up">▲ 1 nouveau cette semaine</div></div>
|
||||
<div class="kpi"><div class="label">Sessions (7 j)</div><div class="value">47</div><div class="delta up">▲ +12 %</div></div>
|
||||
<div class="kpi"><div class="label">Temps total</div><div class="value">96 h</div><div class="delta up">▲ +8 h vs semaine préc.</div></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Projets</h3>
|
||||
<table>
|
||||
<thead><tr><th>Projet</th><th>Agents</th><th>Sessions (7 j)</th><th>Temps</th><th>Dernière activité</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><b>agent-manager</b> <span class="mono">· Rust</span></td><td>claude-code · jcode · codex</td><td>24</td><td class="mono">41 h</td><td class="mono">il y a 2 min</td></tr>
|
||||
<tr><td><b>flowdeck</b> <span class="mono">· Python</span></td><td>codex · aider</td><td>11</td><td class="mono">19 h</td><td class="mono">il y a 14 min</td></tr>
|
||||
<tr><td><b>obsigate</b> <span class="mono">· Python</span></td><td>aider · gemini-cli</td><td>8</td><td class="mono">22 h</td><td class="mono">il y a 3 h</td></tr>
|
||||
<tr><td><b>imago</b> <span class="mono">· Python</span></td><td>gemini-cli</td><td>4</td><td class="mono">14 h</td><td class="mono">il y a 5 h</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const titles = { overview:"Vue d'ensemble", stats:"Statistiques", sessions:"Sessions", events:"Événements", projects:"Projets" };
|
||||
document.querySelectorAll('.nav-item').forEach(el => {
|
||||
el.addEventListener('click', () => {
|
||||
document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
|
||||
document.querySelectorAll('.view').forEach(v => v.classList.remove('active'));
|
||||
el.classList.add('active');
|
||||
const v = el.dataset.view;
|
||||
document.getElementById(v).classList.add('active');
|
||||
document.getElementById('view-title').textContent = titles[v];
|
||||
});
|
||||
});
|
||||
function fakeRefresh(){
|
||||
const t = new Date();
|
||||
document.getElementById('last-update').textContent = 'Dernière mise à jour : ' + t.toLocaleTimeString('fr-FR');
|
||||
}
|
||||
function filterSessions(q){
|
||||
q = q.toLowerCase();
|
||||
let shown = 0;
|
||||
document.querySelectorAll('#sess-body tr').forEach(tr => {
|
||||
const ok = tr.textContent.toLowerCase().includes(q);
|
||||
tr.style.display = ok ? '' : 'none';
|
||||
if (ok) shown++;
|
||||
});
|
||||
document.getElementById('sess-empty').style.display = shown ? 'none' : 'block';
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,216 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>am web — Admin clair (mockup)</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
:root {
|
||||
--bg:#f6f7f9; --panel:#ffffff; --border:#e3e7ec; --fg:#1c2430; --muted:#64748b;
|
||||
--accent:#2563eb; --ok:#16a34a; --warn:#d97706; --err:#dc2626; --purple:#7c3aed;
|
||||
}
|
||||
body {
|
||||
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
|
||||
background:var(--bg); color:var(--fg); line-height:1.5; font-size:14px;
|
||||
}
|
||||
/* header bar */
|
||||
.head {
|
||||
background:var(--panel); border-bottom:1px solid var(--border);
|
||||
padding:0 28px; height:56px; display:flex; align-items:center; gap:24px; position:sticky; top:0; z-index:5;
|
||||
}
|
||||
.head .brand { font-weight:800; font-size:16px; display:flex; align-items:center; gap:9px; }
|
||||
.brand .sq { width:26px; height:26px; border-radius:7px; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; font-size:13px; }
|
||||
.tabs { display:flex; gap:4px; height:100%; }
|
||||
.tab { display:flex; align-items:center; padding:0 16px; color:var(--muted); cursor:pointer; font-size:13.5px; font-weight:500; border-bottom:2px solid transparent; }
|
||||
.tab:hover { color:var(--fg); }
|
||||
.tab.active { color:var(--accent); border-bottom-color:var(--accent); font-weight:600; }
|
||||
.head .spacer { flex:1; }
|
||||
.hbadge { font-size:11.5px; color:var(--muted); background:var(--bg); border:1px solid var(--border); padding:4px 10px; border-radius:99px; font-family:ui-monospace,Consolas,monospace; }
|
||||
.hbadge.ok { color:var(--ok); }
|
||||
.btn { background:var(--accent); color:#fff; border:none; border-radius:7px; padding:7px 14px; font-weight:600; font-size:13px; cursor:pointer; }
|
||||
.btn:hover { background:#1d4ed8; }
|
||||
.btn.ghost { background:transparent; color:var(--muted); border:1px solid var(--border); font-weight:500; }
|
||||
.btn.ghost:hover { color:var(--fg); }
|
||||
.wrap { max-width:1150px; margin:26px auto; padding:0 28px; }
|
||||
.page-title { font-size:19px; font-weight:700; margin-bottom:4px; }
|
||||
.page-sub { color:var(--muted); font-size:12.5px; margin-bottom:20px; }
|
||||
.cards { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px; }
|
||||
.card { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:15px 17px; box-shadow:0 1px 2px rgba(16,24,40,.04); }
|
||||
.card .l { color:var(--muted); font-size:11.5px; text-transform:uppercase; letter-spacing:.5px; }
|
||||
.card .v { font-size:26px; font-weight:800; margin-top:5px; color:#111827; }
|
||||
.card .d { font-size:11.5px; margin-top:3px; } .card .d.up{color:var(--ok);} .card .d.down{color:var(--err);}
|
||||
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:18px; }
|
||||
.panel { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:16px 18px; box-shadow:0 1px 2px rgba(16,24,40,.04); }
|
||||
.panel h3 { font-size:12.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin-bottom:14px; }
|
||||
table { width:100%; border-collapse:collapse; font-size:13px; }
|
||||
th { text-align:left; color:var(--muted); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.4px; padding:7px 10px; border-bottom:1px solid var(--border); background:var(--bg); }
|
||||
td { padding:9px 10px; border-bottom:1px solid var(--border); }
|
||||
tbody tr:hover { background:#fafbfc; }
|
||||
.pill { font-size:10.5px; padding:2px 9px; border-radius:99px; font-weight:600; }
|
||||
.pill.ok { background:#dcfce7; color:var(--ok); } .pill.run { background:#dbeafe; color:#1d4ed8; }
|
||||
.pill.fail { background:#fee2e2; color:var(--err); } .pill.mut { background:#ede9fe; color:var(--purple); }
|
||||
.mono { font-family:ui-monospace,Consolas,monospace; font-size:11.5px; color:var(--muted); }
|
||||
.bar-row { display:flex; align-items:center; gap:10px; margin-bottom:9px; font-size:12.5px; }
|
||||
.bar-row .name { width:110px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
||||
.bar-row .track { flex:1; height:12px; background:#eef1f5; border-radius:6px; overflow:hidden; }
|
||||
.bar-row .fill { height:100%; background:var(--accent); border-radius:6px; }
|
||||
.bar-row .val { width:32px; text-align:right; color:var(--muted); font-family:ui-monospace,monospace; }
|
||||
.search { width:100%; border:1px solid var(--border); border-radius:7px; padding:8px 12px; font-size:13px; margin-bottom:10px; background:#fff; }
|
||||
.search:focus { outline:none; border-color:var(--accent); }
|
||||
.view { display:none; } .view.active { display:block; }
|
||||
@media (max-width:900px){ .cards{grid-template-columns:repeat(2,1fr);} .grid2{grid-template-columns:1fr;} }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="head">
|
||||
<div class="brand"><span class="sq">am</span> agent-manager</div>
|
||||
<div class="tabs">
|
||||
<div class="tab active" data-view="overview">Vue d'ensemble</div>
|
||||
<div class="tab" data-view="stats">Statistiques</div>
|
||||
<div class="tab" data-view="sessions">Sessions</div>
|
||||
<div class="tab" data-view="events">Événements</div>
|
||||
<div class="tab" data-view="projects">Projets</div>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
<span class="hbadge ok">● local</span>
|
||||
<span class="hbadge">127.0.0.1:7878 · v0.6.0</span>
|
||||
<button class="btn ghost" onclick="fakeRefresh()">↻ Actualiser</button>
|
||||
</div>
|
||||
|
||||
<div class="wrap">
|
||||
<div class="page-title" id="view-title">Vue d'ensemble</div>
|
||||
<div class="page-sub" id="last-update">Dernière mise à jour : il y a 5 s · lang FR</div>
|
||||
|
||||
<section class="view active" id="overview">
|
||||
<div class="cards">
|
||||
<div class="card"><div class="l">Agents installés</div><div class="v">9</div><div class="d up">▲ +1 cette semaine</div></div>
|
||||
<div class="card"><div class="l">En cours</div><div class="v">2</div><div class="d up">● claude-code · codex</div></div>
|
||||
<div class="card"><div class="l">Sessions (7 j)</div><div class="v">47</div><div class="d up">▲ +12 %</div></div>
|
||||
<div class="card"><div class="l">Événements (24 h)</div><div class="v">132</div><div class="d down">▼ 8 % vs hier</div></div>
|
||||
</div>
|
||||
<div class="grid2">
|
||||
<div class="panel">
|
||||
<h3>Top agents — sessions (7 j)</h3>
|
||||
<div class="bar-row"><span class="name">claude-code</span><div class="track"><div class="fill" style="width:100%"></div></div><span class="val">18</span></div>
|
||||
<div class="bar-row"><span class="name">aider</span><div class="track"><div class="fill" style="width:50%"></div></div><span class="val">9</span></div>
|
||||
<div class="bar-row"><span class="name">codex</span><div class="track"><div class="fill" style="width:44%"></div></div><span class="val">8</span></div>
|
||||
<div class="bar-row"><span class="name">gemini-cli</span><div class="track"><div class="fill" style="width:28%"></div></div><span class="val">5</span></div>
|
||||
<div class="bar-row"><span class="name">jcode</span><div class="track"><div class="fill" style="width:22%"></div></div><span class="val">4</span></div>
|
||||
<div class="bar-row"><span class="name">opencode</span><div class="track"><div class="fill" style="width:17%"></div></div><span class="val">3</span></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Activité — sessions par jour (14 j)</h3>
|
||||
<svg viewBox="0 0 480 150" width="100%" height="150">
|
||||
<defs><linearGradient id="g2" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#2563eb" stop-opacity=".2"/><stop offset="1" stop-color="#2563eb" stop-opacity="0"/></linearGradient></defs>
|
||||
<path d="M0,120 L37,108 L74,116 L111,96 L148,104 L185,84 L222,92 L259,72 L296,80 L333,62 L370,70 L407,48 L444,58 L480,34 L480,150 L0,150 Z" fill="url(#g2)"/>
|
||||
<polyline points="0,120 37,108 74,116 111,96 148,104 185,84 222,92 259,72 296,80 333,62 370,70 407,48 444,58 480,34" fill="none" stroke="#2563eb" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<div style="display:flex;justify-content:space-between;color:var(--muted);font-size:10.5px;font-family:ui-monospace,monospace;margin-top:4px"><span>04 août</span><span>11 août</span><span>aujourd'hui</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h3>Sessions — 7 derniers jours</h3>
|
||||
<input class="search" placeholder="Filtrer par agent, projet ou id…" oninput="filterSessions(this.value)">
|
||||
<table>
|
||||
<thead><tr><th>Session</th><th>Agent</th><th>Projet</th><th>Statut</th><th>Durée</th><th>Fin</th></tr></thead>
|
||||
<tbody id="sess-body-ov">
|
||||
<tr><td class="mono">20260818_172631_b4e2f1</td><td>claude-code</td><td>agent-manager</td><td><span class="pill run">en cours</span></td><td class="mono">3 h 12 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_171812_c9d0a4</td><td>codex</td><td>flowdeck</td><td><span class="pill run">en cours</span></td><td class="mono">14 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_153402_a1b2c3</td><td>claude-code</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">1 h 05 min</td><td class="mono">16:40</td></tr>
|
||||
<tr><td class="mono">20260818_142118_d4e5f6</td><td>aider</td><td>obsigate</td><td><span class="pill fail">échec</span></td><td class="mono">12 min</td><td class="mono">14:33</td></tr>
|
||||
<tr><td class="mono">20260818_113047_e7f8a9</td><td>gemini-cli</td><td>imago</td><td><span class="pill ok">terminée</span></td><td class="mono">42 min</td><td class="mono">12:12</td></tr>
|
||||
<tr><td class="mono">20260817_220933_b0c1d2</td><td>claude-code</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">2 h 47 min</td><td class="mono">23:50</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="stats">
|
||||
<div class="panel">
|
||||
<h3>Statistiques par agent — période 30 j</h3>
|
||||
<table>
|
||||
<thead><tr><th>Agent</th><th>Sessions</th><th>Durée totale</th><th>Taux de succès</th><th>Coût estimé</th><th>Dernière activité</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>claude-code</td><td>54</td><td class="mono">38 h 12 m</td><td><span class="pill ok">94 %</span></td><td class="mono">12,40 €</td><td class="mono">il y a 2 min</td></tr>
|
||||
<tr><td>aider</td><td>31</td><td class="mono">21 h 48 m</td><td><span class="pill ok">87 %</span></td><td class="mono">4,10 €</td><td class="mono">il y a 3 h</td></tr>
|
||||
<tr><td>codex</td><td>27</td><td class="mono">19 h 05 m</td><td><span class="pill ok">89 %</span></td><td class="mono">8,75 €</td><td class="mono">il y a 14 min</td></tr>
|
||||
<tr><td>gemini-cli</td><td>14</td><td class="mono">6 h 33 m</td><td><span class="pill ok">79 %</span></td><td class="mono">0 € (local)</td><td class="mono">il y a 5 h</td></tr>
|
||||
<tr><td>jcode</td><td>12</td><td class="mono">5 h 02 m</td><td><span class="pill run">67 %</span></td><td class="mono">1,20 €</td><td class="mono">hier</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="sessions">
|
||||
<div class="panel">
|
||||
<h3>Sessions — 7 derniers jours</h3>
|
||||
<input class="search" placeholder="Filtrer par agent, projet ou id…" oninput="filterSessions(this.value)">
|
||||
<table>
|
||||
<thead><tr><th>Session</th><th>Agent</th><th>Projet</th><th>Statut</th><th>Durée</th><th>Fin</th></tr></thead>
|
||||
<tbody id="sess-body">
|
||||
<tr><td class="mono">20260818_172631_b4e2f1</td><td>claude-code</td><td>agent-manager</td><td><span class="pill run">en cours</span></td><td class="mono">3 h 12 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_171812_c9d0a4</td><td>codex</td><td>flowdeck</td><td><span class="pill run">en cours</span></td><td class="mono">14 min</td><td class="mono">—</td></tr>
|
||||
<tr><td class="mono">20260818_153402_a1b2c3</td><td>claude-code</td><td>agent-manager</td><td><span class="pill ok">terminée</span></td><td class="mono">1 h 05 min</td><td class="mono">16:40</td></tr>
|
||||
<tr><td class="mono">20260818_142118_d4e5f6</td><td>aider</td><td>obsigate</td><td><span class="pill fail">échec</span></td><td class="mono">12 min</td><td class="mono">14:33</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="events">
|
||||
<div class="panel">
|
||||
<h3>Journal d'événements — aujourd'hui</h3>
|
||||
<table>
|
||||
<thead><tr><th>Heure</th><th>Type</th><th>Agent</th><th>Détail</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="mono">17:18</td><td><span class="pill run">start</span></td><td>codex</td><td>projet flowdeck</td></tr>
|
||||
<tr><td class="mono">16:40</td><td><span class="pill ok">stop</span></td><td>claude-code</td><td>session 1 h 05 min</td></tr>
|
||||
<tr><td class="mono">15:34</td><td><span class="pill run">start</span></td><td>claude-code</td><td>projet agent-manager</td></tr>
|
||||
<tr><td class="mono">14:33</td><td><span class="pill fail">run</span></td><td>aider</td><td>exit code 1</td></tr>
|
||||
<tr><td class="mono">13:05</td><td><span class="pill mut">update</span></td><td>jcode</td><td>0.76.0 → 0.78.1</td></tr>
|
||||
<tr><td class="mono">10:02</td><td><span class="pill mut">install</span></td><td>opencode</td><td>0.14.2 — méthode binary</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="projects">
|
||||
<div class="panel">
|
||||
<h3>Projets</h3>
|
||||
<table>
|
||||
<thead><tr><th>Projet</th><th>Agents</th><th>Sessions (7 j)</th><th>Temps</th><th>Dernière activité</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><b>agent-manager</b> <span class="mono">· Rust</span></td><td>claude-code · jcode · codex</td><td>24</td><td class="mono">41 h</td><td class="mono">il y a 2 min</td></tr>
|
||||
<tr><td><b>flowdeck</b> <span class="mono">· Python</span></td><td>codex · aider</td><td>11</td><td class="mono">19 h</td><td class="mono">il y a 14 min</td></tr>
|
||||
<tr><td><b>obsigate</b> <span class="mono">· Python</span></td><td>aider · gemini-cli</td><td>8</td><td class="mono">22 h</td><td class="mono">il y a 3 h</td></tr>
|
||||
<tr><td><b>imago</b> <span class="mono">· Python</span></td><td>gemini-cli</td><td>4</td><td class="mono">14 h</td><td class="mono">il y a 5 h</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const titles = { overview:"Vue d'ensemble", stats:"Statistiques", sessions:"Sessions", events:"Événements", projects:"Projets" };
|
||||
document.querySelectorAll('.tab').forEach(el => {
|
||||
el.addEventListener('click', () => {
|
||||
document.querySelectorAll('.tab').forEach(n => n.classList.remove('active'));
|
||||
document.querySelectorAll('.view').forEach(v => v.classList.remove('active'));
|
||||
el.classList.add('active');
|
||||
document.getElementById(el.dataset.view).classList.add('active');
|
||||
document.getElementById('view-title').textContent = titles[el.dataset.view];
|
||||
});
|
||||
});
|
||||
function fakeRefresh(){
|
||||
document.getElementById('last-update').textContent = 'Dernière mise à jour : ' + new Date().toLocaleTimeString('fr-FR') + ' · lang FR';
|
||||
}
|
||||
function filterSessions(q){
|
||||
q = q.toLowerCase();
|
||||
document.querySelectorAll('#sess-body tr, #sess-body-ov tr').forEach(tr => {
|
||||
tr.style.display = tr.textContent.toLowerCase().includes(q) ? '' : 'none';
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,222 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>am web — Terminal dense (mockup)</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
:root {
|
||||
--bg:#0d1117; --panel:#10161f; --border:#212a36; --fg:#c9d4e0; --muted:#6e7b8a;
|
||||
--accent:#3fb950; --accent2:#58a6ff; --ok:#3fb950; --warn:#d29922; --err:#f85149; --purple:#bc8cff;
|
||||
}
|
||||
body {
|
||||
font-family:ui-monospace,SFMono-Regular,Consolas,"Cascadia Mono",Menlo,monospace;
|
||||
background:var(--bg); color:var(--fg); font-size:12.5px; line-height:1.5;
|
||||
}
|
||||
.top {
|
||||
border-bottom:1px solid var(--border); padding:9px 16px; display:flex; align-items:center; gap:16px;
|
||||
background:var(--panel); position:sticky; top:0; z-index:5;
|
||||
}
|
||||
.top .prompt { color:var(--accent); font-weight:700; }
|
||||
.top .brand { color:var(--fg); }
|
||||
.tabs { display:flex; gap:2px; }
|
||||
.tab { padding:3px 10px; cursor:pointer; color:var(--muted); border:1px solid transparent; border-radius:5px; }
|
||||
.tab:hover { color:var(--fg); }
|
||||
.tab.active { color:var(--accent); background:rgba(63,185,80,.08); border-color:rgba(63,185,80,.3); }
|
||||
.top .spacer { flex:1; }
|
||||
.stat { color:var(--muted); font-size:11.5px; }
|
||||
.stat b { color:var(--ok); font-weight:400; }
|
||||
.btn { background:transparent; border:1px solid var(--border); color:var(--fg); border-radius:5px; padding:3px 10px; font-family:inherit; font-size:12px; cursor:pointer; }
|
||||
.btn:hover { border-color:var(--accent); color:var(--accent); }
|
||||
.wrap { max-width:1180px; margin:0 auto; padding:14px 16px 40px; }
|
||||
/* overview row */
|
||||
.kv { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:14px; }
|
||||
.kv-item { border:1px solid var(--border); background:var(--panel); border-radius:6px; padding:9px 12px; }
|
||||
.kv-item .k { color:var(--muted); font-size:10.5px; text-transform:uppercase; letter-spacing:.8px; }
|
||||
.kv-item .v { font-size:21px; font-weight:700; color:var(--fg); margin-top:2px; }
|
||||
.kv-item .v small { color:var(--muted); font-size:11px; font-weight:400; }
|
||||
.kv-item.running .v { color:var(--accent); }
|
||||
.kv-item.running .v::before { content:"● "; }
|
||||
.row { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:14px; }
|
||||
.box { border:1px solid var(--border); background:var(--panel); border-radius:6px; overflow:hidden; }
|
||||
.box .h { padding:7px 12px; border-bottom:1px solid var(--border); color:var(--muted); font-size:10.5px; text-transform:uppercase; letter-spacing:.8px; display:flex; justify-content:space-between; }
|
||||
.box .h .n { color:var(--accent); text-transform:none; letter-spacing:0; }
|
||||
.box .b { padding:10px 12px; }
|
||||
/* bars */
|
||||
.br { display:grid; grid-template-columns:95px 1fr 30px; gap:8px; align-items:center; margin-bottom:6px; }
|
||||
.br .nm { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
||||
.br .tr { height:10px; background:var(--bg); border-radius:3px; overflow:hidden; }
|
||||
.br .fl { height:100%; background:var(--accent); opacity:.85; }
|
||||
.br .vl { text-align:right; color:var(--muted); }
|
||||
/* tables */
|
||||
table { width:100%; border-collapse:collapse; }
|
||||
th { text-align:left; color:var(--muted); font-weight:400; font-size:10.5px; text-transform:uppercase; letter-spacing:.6px; padding:5px 10px; border-bottom:1px solid var(--border); }
|
||||
td { padding:5px 10px; border-bottom:1px solid rgba(33,42,54,.6); white-space:nowrap; }
|
||||
td.wrap { white-space:normal; }
|
||||
tbody tr:hover { background:rgba(63,185,80,.05); }
|
||||
.st { font-size:11px; } .st::before { content:"● "; }
|
||||
.st.ok { color:var(--ok); } .st.run { color:var(--accent2); } .st.fail { color:var(--err); } .st.mut { color:var(--purple); }
|
||||
.dim { color:var(--muted); }
|
||||
.view { display:none; } .view.active { display:block; }
|
||||
@media (max-width:900px){ .row{grid-template-columns:1fr;} .kv{grid-template-columns:repeat(2,1fr);} }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="top">
|
||||
<span class="prompt">$</span><span class="brand">am web</span>
|
||||
<div class="tabs">
|
||||
<div class="tab active" data-view="overview">overview</div>
|
||||
<div class="tab" data-view="stats">stats</div>
|
||||
<div class="tab" data-view="sessions">sessions</div>
|
||||
<div class="tab" data-view="events">events</div>
|
||||
<div class="tab" data-view="projects">projects</div>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
<span class="stat">v0.6.0 · <b>●</b> local · 127.0.0.1:7878</span>
|
||||
<button class="btn" onclick="fakeRefresh()">↻ refresh</button>
|
||||
</div>
|
||||
|
||||
<div class="wrap">
|
||||
<section class="view active" id="overview">
|
||||
<div class="kv">
|
||||
<div class="kv-item"><div class="k">agents installés</div><div class="v">9</div></div>
|
||||
<div class="kv-item running"><div class="k">en cours</div><div class="v">2</div></div>
|
||||
<div class="kv-item"><div class="k">sessions 7j</div><div class="v">47 <small>▲12%</small></div></div>
|
||||
<div class="kv-item"><div class="k">events 24h</div><div class="v">132 <small>▼8%</small></div></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="box">
|
||||
<div class="h">top agents · sessions 7j</div>
|
||||
<div class="b">
|
||||
<div class="br"><span class="nm">claude-code</span><div class="tr"><div class="fl" style="width:100%"></div></div><span class="vl">18</span></div>
|
||||
<div class="br"><span class="nm">aider</span><div class="tr"><div class="fl" style="width:50%"></div></div><span class="vl">9</span></div>
|
||||
<div class="br"><span class="nm">codex</span><div class="tr"><div class="fl" style="width:44%"></div></div><span class="vl">8</span></div>
|
||||
<div class="br"><span class="nm">gemini-cli</span><div class="tr"><div class="fl" style="width:28%"></div></div><span class="vl">5</span></div>
|
||||
<div class="br"><span class="nm">jcode</span><div class="tr"><div class="fl" style="width:22%"></div></div><span class="vl">4</span></div>
|
||||
<div class="br"><span class="nm">opencode</span><div class="tr"><div class="fl" style="width:17%"></div></div><span class="vl">3</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="h">activité 14j <span class="n">sessions/jour</span></div>
|
||||
<div class="b">
|
||||
<svg viewBox="0 0 480 150" width="100%" height="140">
|
||||
<defs><linearGradient id="g3" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#3fb950" stop-opacity=".3"/><stop offset="1" stop-color="#3fb950" stop-opacity="0"/></linearGradient></defs>
|
||||
<path d="M0,120 L37,108 L74,116 L111,96 L148,104 L185,84 L222,92 L259,72 L296,80 L333,62 L370,70 L407,48 L444,58 L480,34 L480,150 L0,150 Z" fill="url(#g3)"/>
|
||||
<polyline points="0,120 37,108 74,116 111,96 148,104 185,84 222,92 259,72 296,80 333,62 370,70 407,48 444,58 480,34" fill="none" stroke="#3fb950" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<div style="display:flex;justify-content:space-between;color:var(--muted);font-size:10px"><span>04/08</span><span>11/08</span><span>18/08</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="h">sessions en cours</div>
|
||||
<div class="b" style="padding:0">
|
||||
<table>
|
||||
<thead><tr><th>id</th><th>agent</th><th>projet</th><th>durée</th><th>depuis</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="dim">20260818_172631_b4e2f1</td><td>claude-code</td><td>agent-manager</td><td>3h12m</td><td class="dim">14:26</td></tr>
|
||||
<tr><td class="dim">20260818_171812_c9d0a4</td><td>codex</td><td>flowdeck</td><td>14m</td><td class="dim">17:18</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="stats">
|
||||
<div class="box">
|
||||
<div class="h">stats par agent · 30j</div>
|
||||
<div class="b" style="padding:0">
|
||||
<table>
|
||||
<thead><tr><th>agent</th><th>sessions</th><th>durée</th><th>succès</th><th>coût</th><th>dernière act.</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>claude-code</td><td>54</td><td>38h12m</td><td><span class="st ok">94%</span></td><td class="dim">12,40 €</td><td class="dim">2 min</td></tr>
|
||||
<tr><td>aider</td><td>31</td><td>21h48m</td><td><span class="st ok">87%</span></td><td class="dim">4,10 €</td><td class="dim">3 h</td></tr>
|
||||
<tr><td>codex</td><td>27</td><td>19h05m</td><td><span class="st ok">89%</span></td><td class="dim">8,75 €</td><td class="dim">14 min</td></tr>
|
||||
<tr><td>gemini-cli</td><td>14</td><td>6h33m</td><td><span class="st ok">79%</span></td><td class="dim">0 € local</td><td class="dim">5 h</td></tr>
|
||||
<tr><td>jcode</td><td>12</td><td>5h02m</td><td><span class="st run">67%</span></td><td class="dim">1,20 €</td><td class="dim">hier</td></tr>
|
||||
<tr><td>opencode</td><td>9</td><td>4h40m</td><td><span class="st fail">55%</span></td><td class="dim">0,90 €</td><td class="dim">2 j</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="sessions">
|
||||
<div class="box">
|
||||
<div class="h">sessions · 7j</div>
|
||||
<div class="b" style="padding:8px 12px 0">
|
||||
<input id="sess-search" placeholder="$ grep sessions…" style="width:100%;background:var(--bg);border:1px solid var(--border);color:var(--fg);font-family:inherit;font-size:12px;padding:6px 10px;border-radius:4px;margin-bottom:6px" oninput="filterSessions(this.value)">
|
||||
</div>
|
||||
<div class="b" style="padding:0">
|
||||
<table>
|
||||
<thead><tr><th>id</th><th>agent</th><th>projet</th><th>statut</th><th>durée</th><th>fin</th></tr></thead>
|
||||
<tbody id="sess-body">
|
||||
<tr><td class="dim">20260818_172631_b4e2f1</td><td>claude-code</td><td>agent-manager</td><td><span class="st run">running</span></td><td>3h12m</td><td class="dim">—</td></tr>
|
||||
<tr><td class="dim">20260818_171812_c9d0a4</td><td>codex</td><td>flowdeck</td><td><span class="st run">running</span></td><td>14m</td><td class="dim">—</td></tr>
|
||||
<tr><td class="dim">20260818_153402_a1b2c3</td><td>claude-code</td><td>agent-manager</td><td><span class="st ok">done</span></td><td>1h05m</td><td class="dim">16:40</td></tr>
|
||||
<tr><td class="dim">20260818_142118_d4e5f6</td><td>aider</td><td>obsigate</td><td><span class="st fail">failed</span></td><td>12m</td><td class="dim">14:33</td></tr>
|
||||
<tr><td class="dim">20260818_113047_e7f8a9</td><td>gemini-cli</td><td>imago</td><td><span class="st ok">done</span></td><td>42m</td><td class="dim">12:12</td></tr>
|
||||
<tr><td class="dim">20260817_220933_b0c1d2</td><td>claude-code</td><td>agent-manager</td><td><span class="st ok">done</span></td><td>2h47m</td><td class="dim">23:50</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="events">
|
||||
<div class="box">
|
||||
<div class="h">events · aujourd'hui</div>
|
||||
<div class="b" style="padding:0">
|
||||
<table>
|
||||
<thead><tr><th>heure</th><th>type</th><th>agent</th><th class="wrap">détail</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="dim">17:18</td><td><span class="st run">start</span></td><td>codex</td><td class="wrap">projet flowdeck</td></tr>
|
||||
<tr><td class="dim">16:40</td><td><span class="st ok">stop</span></td><td>claude-code</td><td class="wrap">session 1h05m</td></tr>
|
||||
<tr><td class="dim">15:34</td><td><span class="st run">start</span></td><td>claude-code</td><td class="wrap">projet agent-manager</td></tr>
|
||||
<tr><td class="dim">14:33</td><td><span class="st fail">run</span></td><td>aider</td><td class="wrap">exit code 1 — fichier manquant</td></tr>
|
||||
<tr><td class="dim">13:05</td><td><span class="st mut">update</span></td><td>jcode</td><td class="wrap">0.76.0 → 0.78.1</td></tr>
|
||||
<tr><td class="dim">10:02</td><td><span class="st mut">install</span></td><td>opencode</td><td class="wrap">0.14.2 — méthode binary</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="projects">
|
||||
<div class="box">
|
||||
<div class="h">projects</div>
|
||||
<div class="b" style="padding:0">
|
||||
<table>
|
||||
<thead><tr><th>projet</th><th>agents</th><th>sessions 7j</th><th>temps</th><th>dernière act.</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>agent-manager <span class="dim">· Rust</span></td><td>claude-code · jcode · codex</td><td>24</td><td class="dim">41h</td><td class="dim">2 min</td></tr>
|
||||
<tr><td>flowdeck <span class="dim">· Python</span></td><td>codex · aider</td><td>11</td><td class="dim">19h</td><td class="dim">14 min</td></tr>
|
||||
<tr><td>obsigate <span class="dim">· Python</span></td><td>aider · gemini-cli</td><td>8</td><td class="dim">22h</td><td class="dim">3 h</td></tr>
|
||||
<tr><td>imago <span class="dim">· Python</span></td><td>gemini-cli</td><td>4</td><td class="dim">14h</td><td class="dim">5 h</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.querySelectorAll('.tab').forEach(el => {
|
||||
el.addEventListener('click', () => {
|
||||
document.querySelectorAll('.tab').forEach(n => n.classList.remove('active'));
|
||||
document.querySelectorAll('.view').forEach(v => v.classList.remove('active'));
|
||||
el.classList.add('active');
|
||||
document.getElementById(el.dataset.view).classList.add('active');
|
||||
});
|
||||
});
|
||||
function fakeRefresh(){}
|
||||
function filterSessions(q){
|
||||
q = q.toLowerCase();
|
||||
document.querySelectorAll('#sess-body tr').forEach(tr => {
|
||||
tr.style.display = tr.textContent.toLowerCase().includes(q) ? '' : 'none';
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user