Files
agent-manager/examples/plugins
bruno 4c7866a25a feat: phase 2 — am lab (benchmark N agents) + plugins d'événements (contrat JSON)
- #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
2026-08-18 14:17:30 -04:00
..

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