Repository navigation
feat: modèles d'agent, carte live, journal et réveil du bot Grok - #294
Merged
Merged
Conversation
… et réveil du bot Grok - Bibliothèque de 5 modèles (/deploy-verify, /figure-it-out, /watch-page, /swarm, /reflect) : 3 étapes fixes, une règle, lancement en un bouton - Carte live par run (texte d'état, étapes/workers, pastilles) — site et Android - Outil record_decision + journal (quoi, pourquoi, preuve lien/chemin, issue) fusionné avec les reçus - Réglage Bot Grok (URL + clé chiffrées, jamais renvoyées), bouton Réveiller, garde SSRF de page-watch - Arène : limite documentée (pas de choix de modèle par worker)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Modèles d'agent (playbooks), carte live, journal et réveil du bot Grok
Objectif : lancer un travail d'agent en un bouton, voir sa progression réelle en direct
et pouvoir réveiller un bot Grok externe quand un run ou une mise en ligne échoue.
Tout réutilise l'existant : Coordinateur du projet (
agent_runs), workers (delegate_task),événements (
agent_run_events), reçus d'accord (approval_receipts), garde SSRF de page-watch,secret_boxpour les secrets.1. Bibliothèque de modèles
GET /api/v1/playbooks— catalogue statique (apps/server/src/playbooks.rs) :/deploy-verify/figure-it-out/watch-page/swarm/reflectChaque modèle : description, 3 étapes fixes, une règle, un champ facultatif d'une ligne.
POST /api/v1/projects/{project}/playbooks/{id}/run{goal?}→ message au Coordinateur(commande, 3 étapes, règle, consignes outils) puis démarrage immédiat du run, marqué
agent_runs.playbook = id. 409 si le Coordinateur travaille déjà.2. Carte live
GET /api/v1/agent/runs/{run}/live— calcul pur (compute_live) depuis le run, ses workers(
parent_run_uuid), ses événements et ses reçus :status_text: outil en cours (« Vérifie https://… »), jalon, « En file d'attente… », « 2 worker(s) en cours… », « Terminé », « Échec : … ».steps[3]:pending | running | ok | failed | skipped | missing. Une étape n'estokque si l'agent l'anotée avec une preuve (
record_decision). Run terminé sans preuve →missing, verdictincomplete./swarm: l'étape 3 suit les workers réels.workers[],counters(actions OK / en échec, workers, décisions),decisions[].Site : tuile Modèles (hub Agents du projet) → modale ; carte aussi dans « En cours » pour un run de modèle.
Android : tuile Modèles sur la page app → feuille. Sondage toutes les 2,5 s tant que le run vit.
3. « Montre-moi ton travail »
Nouvel outil agent
record_decision {what, why, evidence, outcome: ok|failed|skipped, step?}.La preuve est refusée si ce n'est pas un seul lien http(s) ou un chemin (pas de paragraphe, pas de
javascript:).Le journal fusionne ces décisions et les reçus d'accord du run (preuve =
/app/receipts#<uuid>).4. Arène — limite assumée (non livrée)
Une arène honnête (plusieurs agents, juge d'une autre famille de modèles) suppose de choisir le modèle par worker.
delegate_taskne le permet pas aujourd'hui : tous les workers utilisent le modèle du projet. Plutôt qu'un fauxjuge, l'arène n'est pas proposée. À faire : paramètre
modelpar worker + juge imposé d'un autre fournisseur.5. Réveil du bot Grok
Réglage par espace : Réglages → Bot Grok (URL du webhook + clé d'envoi).
secret_box) ; l'API ne renvoie jamais la clé ni l'URL complète (seulementhttps://hôte/…).https://publique uniquement ; la résolution DNS passe par la même garde que page-watch (adressesprivées, loopback, link-local, métadonnées cloud refusées), redirections non suivies, pas de proxy.
Boutons « Réveiller le bot Grok » : carte live, run en échec dans « En cours », mise en ligne en échec
(Déploiements). Bouton « Tester » dans le réglage. Le résultat (HTTP, message) s'affiche sous le bouton.
POST /api/v1/grok-bot/wake{project_uuid, run_uuid?, deployment_uuid?, message?}envoie :Pour une mise en ligne,
runvaut{"type": "deployment", "uuid", "status", "title" (message du commit), "error"};nullpour un réveil simple ou un test (projectvaut aussinullpourdevforge.test).Réponse 2xx = réveil accepté ; 401/403 = clé refusée ; 3xx = redirection refusée.
Tests
(127.0.0.1, 10.x, 169.254.169.254, http://), en-têtes de clé, redirection non suivie, clé jamais renvoyée.
lib/run-live.test.ts,components/RunLiveCard.test.tsx.PlaybooksTest(parsing, pastilles, preuve).