{
  "tool": "amphi",
  "name": "L'Amphithéâtre",
  "apiVersion": "1",
  "kind": "realtime",
  "description": "Diffusion en direct un-vers-plusieurs (écran + voix WebRTC en étoile) avec un fil de questions écrites. Un agent peut rejoindre en spectateur, poser des questions et lire le fil en direct. En hôte, l'agent obtient le lien de séance, mais le partage d'écran/voix exige un geste humain.",
  "url": "https://sui-juris.fr/p2p-tools/amphi/",
  "session": {
    "transport": "webrtc-star",
    "joinParam": "id",
    "roles": ["host", "guest"],
    "methods": {
      "host":  { "summary": "Ouvre une séance (rôle présentateur) et renvoie le lien. Le partage écran/voix nécessite un geste utilisateur.", "args": { "start": { "type": "boolean", "required": false } }, "returns": { "room": "identifiant de séance", "link": "lien à partager aux spectateurs" } },
      "join":  { "summary": "Entre dans l'amphithéâtre comme spectateur (naviguer d'abord vers l'URL avec ?id=<room>).", "args": { "name": { "type": "string", "required": false } }, "returns": { "room": "", "link": "" } },
      "send":  { "summary": "Poste une question dans le fil de la salle.", "args": { "text": { "type": "string", "required": true }, "name": { "type": "string", "required": false } }, "returns": { "ok": "bool" } },
      "poll":  { "summary": "Récupère les événements reçus (questions, décompte spectateurs, fin de séance) depuis un curseur seq.", "args": { "since": { "type": "number", "required": false } }, "returns": { "events": "[{type,name,text,n,seq}]", "seq": "curseur courant", "state": "{room,role,live,viewers}" } },
      "leave": { "summary": "Quitte la séance (ferme les connexions).", "args": {}, "returns": { "ok": "bool" } }
    }
  }
}
