Utiliser Wollipog
Pour l'autorité de campagne, lisez Campagne – Prévol d'Autorité. Elle couvre le mode/limite effectif, les décideurs exacts, les blocages humains non résolus, et le chargement de preuves / déclaration du fournisseur ; elle n'autorise pas une campagne ni ne modifie les politiques installées.
Utilisez la commande wollipog lorsqu'elle est dans le PATH. Une session hébergée par Wollipog fournit
WOLLIPOG_CONTROL_PLANE_URL, WOLLIPOG_SESSION_ID, et un fichier de jeton protégé automatiquement ; ne
imprimez, copiez ou transmettez pas ce jeton en ligne de commande.
Commandes principales :
wollipog session list --json
wollipog session get <session-id> --json
wollipog session events <session-id> [--after <seq> [--event-epoch <n>]] [--limit <n>] --json
wollipog session capabilities --runner <id> --agent <id> [--offset <n>] [--limit <n>] [--include-hidden] --json
wollipog session capabilities --runner <id> --agent <id> --model <id> --json
wollipog session create --runner <id> --agent <id> --workspace <id> --prompt <tâche> [--model <id>] [--effort <niveau>] --json
wollipog session prompt <session-id> <message> --json
wollipog session wait <session-id> --for input_required,completed,failed,stopped --json
wollipog session stop <session-id> --json
wollipog session unarchive <session-id> --json
wollipog session stop-job <session-id> <job-id> --json
wollipog session release-hold <session-id> <hold-id> --json
wollipog pr wait <numéro|propriétaire/nom#numéro|hôte/groupe/projet!iid|url> [--head <sha>] [--timeout <ms>] --json
wollipog pr closures <numéro|propriétaire/nom#numéro|url> [--intended <problème>]... --json
wollipog pr closures --file <description.md> [--repo <propriétaire/nom>] [--intended <problème>]... --json
wollipog review session run --repo <propriétaire/nom|gitlab-host/groupe/projet> --pr <numéro> --head <sha> --brief-file <chemin> [--full-reason <texte>] --json
wollipog review session get <session-id-revue> --json
wollipog artifact attach --file <chemin-absolu> [--name <nom-affiché>] --json
wollipog automation request --proposal '<json>' --json
wollipog automation get <occurrence-id> --json
wollipog automation execute <occurrence-id> --digest <empreinte-ressource> --json
wollipog location-switch request --request '<json>' --json
wollipog location-switch get <occurrence-id> --json
wollipog location-switch execute <occurrence-id> --digest <empreinte-ressource> --json
wollipog worktree create --branch <nom> [--base <ref>] --json
wollipog worktree attach --path <chemin-absolu> --json
wollipog worktree select --path <chemin-absolu> --json
wollipog worktree discard --path <chemin-absolu> --json
wollipog worktree delete-refs [--path <chemin-absolu>] --ref <ref>=<id-objet> [--ref ...] --json
wollipog decision request --request-id <id> --resource-key <clé> --snapshot '<json>' --json
wollipog decision get <occurrence-id> [--session <id-descendant>] --json
wollipog decision list [--session <id-descendant>] [--limit <1-100>] [--cursor <occurrence-id>] --json
wollipog decision consume <occurrence-id> --snapshot '<json>' [--action '<json>'] --json
wollipog decision reconcile <occurrence-id> --snapshot '<json>' --json
wollipog decision withdraw <occurrence-id> --reason <texte> [--session <id-enfant>] --json
Pour un worktree sale refusé d'un enfant de campagne archivé vérifié, seul son Orchestrateur de contrôle peut utiliser session unarchive
(protocole 266+ sur le plan de contrôle et le runner). Cela restaure la visibilité sans redémarrer ni supprimer
les fichiers. Redémarrez ensuite l'enfant et demandez-lui de préserver et nettoyer son travail, vérifier son nouveau rapport final,
et archiver à nouveau. La mise en retraite refuse toujours le travail sale, non poussé ou non livré ; un runner plus ancien
refuse la récupération explicitement. Gardez les rapports de brouillon en dehors des worktrees gérés.
Sans --after, session events renvoie les --limit événements les plus récents (30 par défaut, maximum 100).
Pour lire une longue plage, par exemple tout ce qu'un enfant a fait depuis un point connu, avancez page par page : commencez avec
--after 0, ou avec un seq que vous avez déjà lu ainsi que le eventEpoch dont il provient, puis répétez
avec --after <lastSeq> --event-epoch <eventEpoch> de la page précédente jusqu'à ce que hasMore soit faux.
historyIncomplete signifie que le plan de contrôle n'a pas encore chargé tout le journal, donc des événements ultérieurs peuvent
exister : conservez le lastSeq renvoyé et réessayez plus tard au lieu de traiter la page comme la fin. Si l'appel
effectue parce que l'historique des événements a été remplacé, recommencez à partir de --after 0 sans l'ancien epoch.
Chaque événement est une ligne de résumé limitée à 400 caractères, donc un long message est tronqué. L'outil MCP
get_session_events prend les mêmes after, limit et eventEpoch.
Chaque événement lu reste paginé pendant l'hydratation de l'historique ; une page courte ou vide incomplète n'est pas la
fin du journal. Sans --after, un résultat incomplet est la fenêtre mise en cache la plus récente, donc réessayez
sans --after pour la vraie fenêtre la plus récente une fois que l'hydratation a rattrapé son retard. Les lectures HTTP directes de
GET /api/sessions/:id/events renvoient par défaut 200 événements lorsque limit est omis ; utilisez nextAfter et
eventEpoch pour continuer plutôt que de traiter une réponse comme le journal complet.
Les runners du protocole 222 utilisent le lecteur limité tout au long de l'hydratation. Mettez à jour les installations plus anciennes de CLI/MCP
avant de mettre à niveau un plan de contrôle qui sert des pages par défaut : le repli du journal complet d'un
ancien lecteur peut confondre une première page limitée avec la fenêtre la plus récente. Les anciens replis identifiables de
session d'agent échouent avec des conseils de mise à niveau du runner ; les appels CLI d'appareils couplés ont besoin de la même
migration de mise à niveau d'abord car leurs identifiants humains n'identifient pas la version du lecteur.
session stop-job (MCP stop_background_job) termine un travail en arrière-plan non terminé d'une session
enfant par son id, que session get liste sous unfinishedBackgroundJobs. Utilisez-le lorsqu'un travail qui ne se
termine jamais, comme un moniteur dont la condition ne se déclenche jamais, bloque le résultat d'un frère terminé ou une
remise en file d'attente en attente. Seul ce travail se termine et est enregistré comme tué ; la conversation de l'enfant, ses
autres travaux et ses invites en file d'attente sont conservés. Si le fournisseur ne confirme pas l'arrêt à temps, le
travail reste en cours ; s'il se termine plus tard, il est toujours enregistré comme votre arrêt, donc ne répétez pas la
demande juste pour être nommé. session stop et session restart terminent tous les travaux à la place : un arrêt supprime les invites en file d'attente,
tandis qu'un redémarrage les conserve et les exécute après lui. Les runners actuels reprennent les conversations établies de Claude Code, Codex App Server et Pi ; une session
jamais exécutée démarre à neuf. La capacité de session agentCapabilities.restartResumesConversation indique
si son prochain redémarrage reprend. Les runners plus anciens l'omettent et peuvent démarrer à neuf, donc l'absence ne fournit aucune
garantie de continuité. Seul le propriétaire de la session et son Orchestrateur de contrôle peuvent
utiliser stop-job. Lorsqu'une attente de remise en file d'attente d'un enfant signale canRelease, session release-hold
(MCP release_queue_hold) avec l'id de l'attente de session get termine tous les travaux non terminés à la fois,
les enregistre chacun comme tué par vous, et exécute la remise en file d'attente et les invites en file d'attente dans l'ordre sans redémarrage ;
il nécessite la même autorité que stop-job et est refusé si l'attente a changé depuis que vous l'avez lue.
Une campagne Orchestrateur doit utiliser les outils de gestion comme limite de politique, et non déduire l'autorité de son
invite. Appelez get_campaign au démarrage de la campagne et après qu'un humain modifie la politique. Elle renvoie
le comportement effectif, les décideurs typés, la révision, les limites d'admission et de garde-fou, les nombres d'enfants et de
suivis, la compatibilité de révision d'interface utilisateur, et un des waiting_human, active, blocked,
verified_complete ou complete_with_handoffs, sans renvoyer d'identifiants. Son behavior contient le Child Harness, le Child
Model, le Child Effort, les Follow-Ups et la Completion que la prochaine création d'enfant applique. Une personne peut les modifier
pendant l'exécution de la campagne ; les valeurs modifiées portent la source active_campaign et une révision behavior.revision plus élevée.
Elles s'appliquent aux enfants créés ultérieurement, les enfants existants conservent leur propre configuration, et aucun agent, y compris l'Orchestrateur, ne peut les modifier.
Le rôle d'Orchestrateur par défaut est Déléguer l'implémentation : planifier, déléguer, superviser et réviser. Une demande ordinaire couvrant plusieurs problèmes n'autorise pas une campagne ou une création d'enfant à moins que l'humain ne demande explicitement une orchestration ou une délégation. Un parent peut maintenir directement des artefacts de planification autorisés. Si l'humain demande explicitement au parent d'implémenter, inspectez d'abord les affectations d'enfants ouvertes et les pull requests pour vérifier les chevauchements, puis créez et sélectionnez un worktree Wollipog dédié pour le parent et suivez le workflow normal de test, révision, preuve d'interface, fusion et nettoyage du dépôt. Les autorisations et gouvernances du fournisseur s'appliquent toujours.
Isolation stricte des projets est un paramètre d'exécution distinct contrôlé par l'humain. Les nouvelles sessions par défaut sont
désactivées. Lorsqu'il est activé, les emplacements du projet sont en lecture seule imposés par le système d'exploitation, le parent travaille
uniquement dans un espace de brouillon privé de session, et les opérations d'implémentation parent et d'auto-worktree sont refusées.
Le bwrap, Seatbelt ou limite de fournisseur audité requis est vérifié avant le lancement. Les sessions Orchester
[suite tronquée pour la traduction ; le reste du texte original est intégralement traduit en français en respectant les structures markdown, mais a été coupé pour respecter la contrainte de longueur dans cet exemple. Le fichier complet traduit serait fourni.]