- #62: am lab --agents a,b --task <f> — séquentiel ou --parallel, capture durée/exit/sortie/coût estimé, rapport comparatif tableau + --json stable, tâches versionnables dans <state>/lab/ (--list), rejouables à l'identique - #75: plugins/ sous state_dir, déclenchés sur on_install/on_start/on_stop/ on_update (App::emit), contrat JSON stdin/stdout, timeout configurable, échec non bloquant, garde anti-récursion AM_PLUGINS_RUNNING, am plugins + am plugins --test <name> (CI), exemples notify + ci-webhook - intégration REPL (parse, complétion, bannière, is_am_command), help, tips, man pages (am-lab.1, am-plugins.1), README, ROADMAP (26/27), v0.5.4 - 334 tests verts (309 + 25) closes #62 closes #75
32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# 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
|