fix: REPL — ask/serve/registry routées vers am au lieu du shell système

is_am_command() ne connaissait pas ask/serve/registry : le REPL les
envoyait au shell système ('command not found'). Ajout aux trois
points de contact (is_am_command, COMMAND_DESCRIPTIONS, banner) +
test élargi. Docs alignées sur v1.0 : README (ask/providers/registry/
serve), ROADMAP v2.3 (v0.7.0 + v1.0.0 livrés), ARCHITECTURE (arbre src
+ section copilote & plateforme), tips ask/serve/registry. Version 1.0.2,
man pages régénérées. CI release : cross-compile Linux musl + Windows
mingw sur un seul runner, macOS optionnel.
This commit is contained in:
2026-08-20 10:22:21 -04:00
parent 38d38d51e3
commit d0f52eb7c0
10 changed files with 156 additions and 66 deletions
+25
View File
@@ -103,6 +103,12 @@ pub static SECTIONS: &[TipSection] = &[
options: &[("--json", "sortie machine-readable")],
example: "suggest un agent pour du Python",
},
TipEntry {
usage: "ask <demande>",
about: "langage naturel → commande(s) am : règles locales hors-ligne, raffinement LLM optionnel (issue #78)",
options: &[("--yes", "exécute la commande sans confirmation")],
example: "ask installe claude et lance-le",
},
TipEntry {
usage: "models",
about: "inventaire des modèles locaux (ollama, llama.cpp, LM Studio)",
@@ -119,6 +125,15 @@ pub static SECTIONS: &[TipSection] = &[
options: &[("add <url>", "ajoute un catalogue d'équipe par URL")],
example: "catalog add https://git.dracodev.net/team/agents.yaml",
},
TipEntry {
usage: "registry publish <catalogue.yaml> --source <url>",
about: "registre communautaire : publie, cherche ou installe un catalogue (manifeste + checksum sha256 vérifié)",
options: &[
("search <mot>", "cherche dans le registre"),
("install <url>", "installe après vérification du checksum et décision de confiance"),
],
example: "registry search agents python",
},
TipEntry {
usage: "audit",
about: "qui a modifié quoi, quand (checksums config + journal d'événements)",
@@ -251,6 +266,16 @@ pub static SECTIONS: &[TipSection] = &[
],
example: "web --port 9090",
},
TipEntry {
usage: "serve --token <tok>",
about: "API HTTP + WebSocket authentifiée pour piloter am à distance (stats, run, start, stop, ask) (issue #80)",
options: &[
("--port <p>", "port d'écoute (défaut 8080)"),
("--host <h>", "adresse d'écoute (défaut 127.0.0.1)"),
("--rate-limit <n>", "requêtes par IP et par minute (défaut 120)"),
],
example: "serve --token mon-token --port 9000",
},
TipEntry {
usage: "sync",
about: "pousse l'état (state.json, journal, historique) dans le dépôt git configuré (sync_repo)",
+6 -2
View File
@@ -113,6 +113,7 @@ const COMMAND_DESCRIPTIONS: &[(&str, &str)] = &[
("registry", "publish, search and install agent catalogs (Gitea)"),
("providers", "manage the LLM provider registry (base URLs, models, default)"),
("suggest", "recommend an agent for a request"),
("ask", "natural language → am commands (local rules first, optional LLM refinement)"),
("audit", "who changed what, when (config checksums)"),
("service", "register an agent as a system service (autostart)"),
("schedule", "plan am commands (daily) and check the fleet health"),
@@ -798,7 +799,7 @@ pub fn banner_box(
.to_string(),
));
rows.push(inner(
" models models · models --prune · catalog · suggest · audit".to_string(),
" models models · models --prune · catalog · suggest · ask · audit".to_string(),
));
rows.push(inner(
" automate service install · schedule add · doctor --watch · monitor · sync · migrate · playbook".to_string(),
@@ -2014,13 +2015,16 @@ pub fn is_am_command(word: &str) -> bool {
| "tip"
| "models"
| "catalog"
| "registry"
| "providers"
| "suggest"
| "ask"
| "audit"
| "service"
| "schedule"
| "monitor"
| "web"
| "serve"
| "sync"
| "migrate"
| "playbook"
@@ -2676,7 +2680,7 @@ mod tests {
for cmd in [
"list", "status", "search", "info", "install", "uninstall", "update", "start",
"stop", "restart", "run", "doctor", "config", "completion", "self-update",
"self-uninstall", "export", "import",
"self-uninstall", "export", "import", "ask", "serve", "registry",
] {
assert!(is_am_command(cmd), "{cmd}");
}