Atelier de plugins
L'écran Atelier de plugins vous permet d'écrire un manifeste Plugin (capacités, bac à sable, permissions, artefact OCI signé), de le vérifier selon le contrat plugin-manifest et de l'enregistrer : le registre vérifie la signature. Chemin dans le portail : /studio/plugins. Il sert aux développeurs et aux administrateurs du tenant qui publient des plugins ; le pack lui-même est créé et signé par la CI du pack.
Ce que montre l'écran
- À gauche, la liste des plugins (
GET /v1/plugins), paginée, avec Nouveau en haut. Une liste vide affiche Aucun plugin pour l'instant. - Onglet Éditeur : Manifeste (JSON) vérifié en direct selon le schéma JSON
plugin-manifest, les problèmes de l'éditeur, JSON invalide : ..., les boutons Valider sur le serveur et Créer ou Enregistrer comme nouvelle version, le résultat de validation et la réponse du registre. - Onglet Test, une fois un plugin enregistré ouvert : Statut dans le registre avec le bouton Lire le statut (vérification, runtime du bac à sable et déploiement).
- Le manifeste de départ
new-plugincontientartifact(référence OCI, empreinte, type de média),signature(empreinte, signataire),capabilities(un outil),sandbox(gvisor, réseaudeny_all, système de fichiers racine en lecture seule, limites de CPU, de mémoire et de durée) etpermissions. - Ouvrir un plugin lit son manifeste depuis
GET /v1/plugins/{name}.
Actions
| Bouton ou action | Ce qu'il fait | Appel API | Rôles |
|---|---|---|---|
| Nouveau | Charge le manifeste de départ new-plugin. | Aucun | Tout le monde |
| Clic sur un plugin de la liste | Charge son manifeste enregistré. | GET /v1/plugins/{name} | Tout utilisateur connecté |
| Valider sur le serveur | Valide le manifeste selon plugin-manifest. | POST /v1/contracts/{name}/validate | Tout utilisateur connecté |
| Créer | Enregistre le plugin ; le registre vérifie la signature de l'artefact. | POST /v1/plugins | tenant_admin, developer |
| Enregistrer comme nouvelle version | Enregistre le manifeste en augmentant de un le dernier numéro de metadata.version. | POST /v1/plugins | tenant_admin, developer |
| Lire le statut (onglet Test) | Lit la vérification, le runtime du bac à sable et le déploiement du plugin. | GET /v1/plugins/{name}/status | Relation lecteur sur le plugin |
| Réessayer (état d'erreur) | Relit la liste ou les schémas. | GET /v1/plugins ou GET /v1/contracts/{name} | Tout utilisateur connecté |
Rôles
Le portail active les boutons d'enregistrement pour STUDIO_WRITERS (tenant_admin, developer). Le Control Plane accepte tenant_admin, developer et application_owner sur POST /v1/plugins (WRITE_ROLES, services/control-plane/src/eai/domains/plugins/routes.py) et enregistre l'appelant comme propriétaire du plugin. GET /v1/plugins/{name}/status demande la relation lecteur sur le plugin. L'installation d'un plugin ne se fait pas ici : elle reste dans le catalogue.
Tâches courantes
Enregistrer un plugin construit par la CI
- Partir du modèle de départ. Cliquez sur Nouveau. Résultat attendu : le manifeste
new-plugin. En cas d'échec : rechargez la page. - Référencer l'artefact. Le registre vérifie ce que la CI a produit. Copiez la référence OCI, l'empreinte et la signature fournies par la CI du pack dans
spec.artifactetspec.signature. Résultat attendu : Aucun problème détecté par l'éditeur. En cas d'échec : une empreinte s'écritsha256:suivi de 64 caractères hexadécimaux. - Régler le bac à sable et les permissions. Gardez le réseau fermé sauf besoin du plugin. Résultat attendu : un JSON valide. En cas d'échec : corrigez la ligne citée par le problème.
- Valider sur le serveur. Cliquez sur Valider sur le serveur. Résultat attendu : Valide selon contracts/v1. En cas d'échec : lisez la liste des erreurs.
- Créer. Cliquez sur Créer. Résultat attendu : le message Enregistré en version 0.1.0 et la réponse avec
apply_status. En cas d'échec : voir Dépannage.
Vérifier le statut dans le registre
- Ouvrir le plugin. Cliquez dessus dans la liste. Résultat attendu : l'onglet Test apparaît. En cas d'échec : enregistrez-le d'abord.
- Lire le statut. Ouvrez Test et cliquez sur Lire le statut. Résultat attendu : le JSON avec la vérification, le runtime et le déploiement. En cas d'échec :
plugin_not_foundsignifie que le plugin n'est pas enregistré.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
Erreur invalid_signature (401) | La signature ne correspond pas à l'artefact. | Reprenez l'empreinte et la signature produites par la CI. |
Erreur plugin_blocked (403) | Le plugin est bloqué par le registre. | Demandez à un responsable sécurité la raison du blocage. |
Erreur invalid_manifest (422) | Le manifeste ne respecte pas le contrat. | Corrigez les champs listés dans errors. |
Erreur pack_requires_marketplace (422) | L'artefact est un pack, installé par la marketplace. | Publiez-le plutôt dans le Catalogue de packs. |
Erreur plugin_not_found (404) sur le statut | Le plugin n'est pas enregistré. | Enregistrez-le d'abord. |