Espaces de travail
Le niveau au-dessus des portées : à qui sont destinées les zones d'une instance, et l'espace de travail global.
Décrit Ronne AI Marketplace 0.4.0. Traduite de l'anglais.
Ce qu'est un espace de travail
Un espace de travail est le niveau au-dessus des portées : espace de travail › portée › élément. Il regroupe des portées, et les éléments qu'elles contiennent, pour une équipe ou un groupe, afin qu'une instance puisse en servir plusieurs. Chaque portée appartient à exactement un espace de travail, choisi quand la portée est créée, et l'espace de travail d'un élément est celui de sa portée.
global › @platform › @platform/code-reviewer acme › @acme-infra › @acme/acme-infra/deploy
Hors de global, l'espace de travail fait partie du nom d'un élément : @acme/acme-infra/deploy. Le nom d'une portée est unique dans son espace de travail, donc deux espaces de travail peuvent avoir chacun une portée du même nom (voir Règles de nommage). Un espace de travail et une portée peuvent porter le même nom.
- Dans le catalogue et sur la page d'un élément, l'élément affiche son nom complet, comme
@acme/acme-infra/deploy, et l'adresse de sa page nomme aussi l'espace de travail :/workspaces/acme/items/acme-infra/deploy. Sous son nom, chaque carte et la page de l'élément indiquent aussi son espace de travail, un lien vers la page de celui-ci, et sa portée,globalcompris. Installez-le par son nom complet :rmk install @acme/acme-infra/deploy. - Dès que vous voyez un espace de travail en plus de
global, les Filters du catalogue proposent Workspace, avec les espaces de travail que vous voyez. - Un espace de travail est public ou privé. Toute personne connectée voit les portées et les éléments d'un espace de travail public, les installe et en dépend; ceux d'un espace de travail privé ne sont vus que par ses membres et root. Dans les deux cas, ses membres sont ceux qui y soumettent et révisent.
L'espace de travail global
Chaque instance a un espace de travail appelé global, décrit comme « Everyone on this instance ». Il est public, et il ne peut être ni renommé, ni modifié, ni supprimé. Les portées qui existaient avant les espaces de travail s'y trouvent, et une nouvelle portée y va, à moins qu'un autre espace de travail ne soit choisi.
Tout le monde, sauf root, est membre de global, et personne ne le quitte : un nouvel utilisateur y commence comme user. Son rôle peut y changer, et il peut aussi être ajouté à d'autres espaces de travail.
Le nom global lui est réservé : aucun autre espace de travail ne peut le prendre, mais une portée le peut.
Votre espace de travail personnel
Chacun a un espace de travail à soi, créé avec son compte : un endroit pour construire des éléments pour vous-même, les installer et les essayer, sans rien demander à personne. Il est privé, toujours, et n'est qu'à vous : personne ne peut y être ajouté ni demander à le rejoindre.
- Son nom vient de votre adresse courriel, la partie avant le
@:[email protected]donneana-silva(ouana-silva-2quand il est pris). Ses éléments sont nommés comme ceux de tout espace hors deglobal:@ana-silva/tools/lint. Vous pouvez le renommer. - Workspaces, dans la barre latérale, le liste en premier, comme Personal, avec Manage. Sa page a ses portées, avec Create scope, ainsi que Rename et Edit description : pas de membres, pas de demandes, pas de visibilité à changer, et il n'est jamais supprimé. Le sélecteur d'espaces de travail, en haut de la barre latérale, le montre et ouvre sa page. Vous en êtes l'admin, mais cela ne vous donne pas Users, Audit log et Settings, réservés à root.
- New item, le filtre Workspace du catalogue et
rmk exportle listent en premier, comme Personal.
Publié sans revue
Vous seul et root pouvez voir ou installer ce qu'il contient, donc une deuxième paire d'yeux ne protégerait personne. Ce que vous y soumettez est approuvé aussitôt : le bouton dit Submit, pas Submit for review, et la page de la soumission dit « Approved by you: personal workspaces aren't reviewed. », avec ce qu'elle peut faire listé dessous, comme un réviseur l'aurait vu. Publiez-la quand vous voulez. Elle n'arrive jamais dans la file de revue, et ses versions sont marquées comme non révisées : la page de l'élément dit « Released without review. »
Qui le voit
- Tout autre utilisateur obtient ce qu'obtient un nom qui n'existe pas : ses éléments, sa page et son lien d'adhésion répondent comme inconnus.
- Root voit chaque espace personnel et ses éléments, et peut le renommer, modifier sa description ou y créer une portée, sans en être membre. Le catalogue, la recherche et le marketplace de plugins de root laissent de côté les espaces personnels des autres, sauf si le filtre Workspace en nomme un; la page Workspaces de root les liste dans son onglet Personal, avec leurs propriétaires.
- Ses éléments peuvent dépendre de ses propres éléments et de ceux des espaces publics, et rien à l'extérieur ne dépend d'eux.
- Pour partager une portée, déplacez-la vers un espace de travail d'équipe (voir Déplacer une portée). Si vous y avez déjà publié des versions, quelqu'un d'autre approuve le déplacement, et les révise ainsi.
Travailler dans un seul espace de travail
Le sélecteur d'espaces de travail, en haut de la barre latérale (dans le Menu sur un téléphone ou une tablette), choisit l'espace de travail dans lequel vous travaillez. Au départ, il est sur All workspaces.
- Il liste All workspaces et les espaces de travail dont vous faites partie, votre espace personnel en premier; celui dans lequel vous êtes est coché. Chacun a aussi une flèche qui ouvre sa page, et Manage workspaces ouvre la liste Workspaces.
- Une fois que vous en avez choisi un, le Catalogue, Reviews (tous les onglets) et My submissions ne montrent que cet espace de travail, avec Showing acme only · Show all sous leur titre, et New item commence sur sa première portée. Show all ramène à tous les espaces de travail.
- Il reste choisi sur toutes les pages, dans ce navigateur, jusqu'à ce que vous en choisissiez un autre ou cliquiez sur Show all.
- Le filtre Workspace du Catalogue lui-même, sous Filters, définit le même
?workspace=et liste aussi les espaces de travail publics dont vous ne faites pas partie. Il ne change que ce que cette page affiche : le choix du sélecteur reste, et Show all efface les deux. - L'adresse l'indique : ces pages contiennent
?workspace=acme, donc un lien que vous envoyez montre le même espace de travail à qui l'ouvre, dans les limites de ce que cette personne peut voir.?workspace=sans rien après montre tous les espaces de travail. - C'est un filtre, pas une permission : il change ce que vous voyez, jamais ce que vous pouvez faire. Les nombres à côté de Reviews et Requests dans la barre latérale comptent toujours tous les espaces de travail, pour que rien de ce qui attend ailleurs ne vous échappe. Rien d'autre n'est filtré : Home, Workspaces, les pages des éléments et Requests restent les mêmes.
- Un espace de travail que vous ne pouvez pas voir ne montre rien : le Catalogue affiche « No workspace acme you can see », comme pour un nom qu'aucun espace de travail ne porte.
rmk, le serveur MCP et l'API n'ont pas d'espace de travail courant : utilisez le nom complet de l'élément, ou--workspacequand une commande l'accepte.
Public et privé
Chaque espace de travail est public ou privé. global est toujours public, et les espaces personnels sont toujours privés.
- Public : toute personne connectée voit ses portées et ses éléments, les installe et en dépend.
- Privé : seuls ses membres, quel que soit leur rôle, et root voient ses portées, ses éléments et ses soumissions. Ses éléments affichent un cadenas et
Privateà côté de leur espace de travail, dans le catalogue et sur leur page; ceux d'un espace personnel indiquent(personal).
Pour tous les autres, il n'existe pas
Une personne qui n'est pas membre obtient exactement ce qu'elle obtiendrait pour un nom qui n'existe pas, jamais « interdit », donc personne ne peut découvrir ce que contient un espace de travail privé en essayant des noms :
- Le catalogue, la recherche et la page d'accueil laissent ses éléments de côté, et le filtre Workspace laisse l'espace de travail de côté. La page d'un élément et ses versions répondent « introuvable ».
rmket les outils MCP répondent comme pour un élément inconnu, par exemple@acme/acme-infra/deploy isn't a published item.(voir Installer). Il en va de même pour l'API du registre, les téléchargements d'archives et les marketplaces de plugins.- Un brouillon dans l'une de ses portées affiche « There's no scope @acme/acme-infra you can use. Root and a workspace's admins create scopes. », comme pour une portée qui n'existe pas. Le Used by d'un élément public ne liste pas les éléments privés qui en dépendent.
Dépendances
Les éléments d'un espace de travail privé ne peuvent être des dépendances que d'éléments du même espace de travail. Un élément peut dépendre des éléments de son propre espace de travail et des éléments publics (voir Dépendances). Ainsi, un élément ne cesse jamais de s'installer pour des personnes qui ne peuvent pas voir ce dont il a besoin.
La choisir et la changer
- New workspace demande sa visibilité, avec Public déjà choisi.
- Root la change sur la page de l'espace de travail, avec Make private ou Make public. Les admins d'un espace de travail ne le peuvent pas : cela change ce que tous les autres voient et ce dont ils dépendent.
- Make private liste d'abord ce qu'il rencontre. Tant que des éléments publiés hors de l'espace de travail dépendent de ses éléments, il est refusé, avec ces éléments listés : publiez-les d'abord sans la dépendance. Les soumissions ouvertes à l'extérieur qui en dépendent ne sont qu'un avertissement : elles échoueront à la publication.
- Make public demande d'abord. Les deux changements figurent dans le journal d'audit, par exemple « Made workspace acme private », et prennent effet dès la requête suivante.
Perdre l'accès
Quand une personne est retirée d'un espace de travail privé, ou qu'un espace de travail public devient privé, elle cesse de voir ses éléments dès sa requête suivante : en installer ou en mettre à jour un indique qu'il est introuvable, et il quitte son marketplace de plugins. Rien de ce qu'elle a déjà installé n'est touché.
Ce que « privé » ne fait pas
- Ce n'est pas du chiffrement : la base de données et le stockage contiennent les éléments de tous les espaces de travail ensemble, et quiconque exploite l'instance peut les lire. Root voit tous les espaces de travail.
- Un nom déjà écrit quelque part y reste : dans un fichier de verrouillage, dans un miroir git généré avec
--workspace, ou dans la version d'un élément extérieur qui en dépendait avant que l'espace de travail devienne privé et qui a été retirée. Le journal d'audit, que seul root lit, nomme aussi les éléments privés.
Membres et rôles
Chaque espace de travail a des membres, et chaque membre y a un rôle : user, moderator ou admin (voir Qui peut faire quoi). On peut diriger un espace de travail en tant qu'admin et être simple utilisateur dans un autre. Tout le monde est membre de global. Root travaille dans tous les espaces de travail sans être membre d'aucun.
- Les utilisateurs créent des brouillons, proposent des changements et soumettent dans les portées de l'espace de travail, commentent les leurs et publient les leurs une fois approuvés. Le formulaire de nouveau brouillon et
rmk exportne listent que les portées de vos espaces de travail. - Les modérateurs révisent aussi, approuvent et publient les soumissions de l'espace de travail, s'occupent des versions de ses éléments, et approuvent ou refusent ses demandes d'adhésion. Reviews montre les soumissions des espaces de travail que vous modérez; il apparaît dans la barre latérale dès que vous en modérez un, et le sélecteur d'espaces de travail montre un espace de travail à la fois.
- Les admins y font tout ce que fait un modérateur, et dirigent l'espace de travail : ils ajoutent et retirent ses membres, changent leurs rôles (admins compris), créent ses portées et modifient sa description. En approuvant une demande d'adhésion, ils peuvent faire de la personne un modérateur plutôt qu'un utilisateur. Ils font tout cela sur la page de l'espace de travail; Users, Audit log et Settings sont réservés à root.
- Les autres personnes connectées parcourent, installent et dépendent des éléments d'un espace de travail public, et ne voient pas ceux d'un espace de travail privé. Créer un brouillon, proposer ou soumettre y affiche « You aren't a member of the acme workspace. Ask to join acme to propose changes. », avec un lien Ask to join acme (voir Rejoindre un espace de travail).
Qui gère les membres : root, dans tous les espaces de travail, et les admins de chaque espace de travail, dans le leur. Sur la page d'un espace de travail, l'onglet Members les liste; Add members trouve des personnes par courriel ou par nom et leur donne un rôle; le rôle de chaque membre peut être changé, et Remove le retire après une confirmation. Root définit aussi tous les espaces de travail d'une personne d'un coup depuis Users (voir Administration). Chaque changement figure dans le journal d'audit.
- Personne ne modifie ni ne retire sa propre adhésion, donc un admin ne peut pas s'exclure par erreur : c'est un autre admin ou root qui le fait.
- Personne n'est retiré de
global; son rôle peut quand même y changer. - Root n'est pas membre et ne peut pas être ajouté : root travaille partout. Un utilisateur désactivé garde ses adhésions.
Qui quitte un espace de travail garde ses brouillons et ses soumissions ouvertes : il peut les lire et les retirer, mais pas les modifier, les soumettre ni les publier, et les modérateurs et les admins de l'espace de travail peuvent toujours en décider.
Rejoindre un espace de travail
Toute personne connectée peut demander à rejoindre un espace de travail dont elle ne fait pas partie, et root ou les modérateurs et les admins de l'espace de travail répondent. Le lien d'adhésion est l'adresse de l'instance suivie de /workspaces/<name>/join.
Demander
- Workspaces, dans la barre latérale après Catalogue, liste les espaces de travail que vous voyez :
global(« Everyone »), les publics, et les privés dont vous faites partie, avec votre rôle dans chacun. Un espace de travail public dont vous ne faites pas partie propose Ask to join : ajoutez un message si vous le voulez, jusqu'à 500 caractères, pour la personne qui répondra, et envoyez. - Un espace de travail privé n'est pas listé. Root ou ses modérateurs ou admins vous envoient son lien d'adhésion,
/workspaces/<name>/join, qui affiche le nom et le même formulaire. Le lien ne contient aucun secret : il permet seulement de demander, et c'est une personne qui décide. Il est identique pour un espace de travail privé et pour un nom qu'aucun espace de travail ne porte, avant et après votre demande, donc il ne confirme pas qu'un nom existe. - Votre demande s'affiche comme Requested, avec Cancel, sur la page Workspaces et sur le lien. Celles que vous avez envoyées depuis un lien sont listées sous Your other requests, par nom.
- Un refus « pas membre » renvoie au même formulaire : sous Propose a change sur la page d'un élément, sur un brouillon que vous ne pouvez plus modifier, et dans les résultats de Submit selected.
Répondre
- Root et les modérateurs et les admins de l'espace de travail voient Requests dans la barre latérale, avec le nombre de demandes en attente, tant qu'il y en a (pour root et les admins, les déplacements de portée qui les attendent comptent aussi, et la page les liste sous Scope moves). Cette entrée ouvre Requests to join : toutes les demandes auxquelles ils peuvent répondre, de la plus ancienne à la plus récente, avec leur espace de travail et leur message. Root et les admins d'un espace de travail trouvent aussi ses demandes dans son onglet Requests, sur la page de l'espace de travail.
- Approve ajoute la personne comme user; root et les admins de l'espace de travail peuvent plutôt choisir moderator. Decline peut donner une raison, que la personne voit. Quand deux personnes répondent en même temps, la première réponse compte, et l'autre reçoit « Already answered. »
Après la réponse
- Si votre demande est approuvée, l'espace de travail s'affiche sur votre page Workspaces avec votre rôle. Si elle est refusée, vous voyez la date et la raison, et vous pouvez redemander 7 jours plus tard, ou tout de suite si vous avez été ajouté à l'espace de travail ou retiré de celui-ci depuis.
- Une demande ouverte par espace de travail, et au plus 10 ouvertes à la fois. Vous ajouter directement à l'espace de travail approuve votre demande; désactiver votre compte annule vos demandes.
- Chaque étape (demande, approbation, refus, annulation) figure dans le journal d'audit; le message et la raison, non.
Les créer et les gérer
Tout ce qui concerne les espaces de travail se trouve dans Workspaces, dans la barre latérale (le sélecteur en haut ouvre aussi ceux dont vous faites partie). La page liste les espaces de travail que vous voyez, et le nom de chacun ouvre sa page. La liste de root les a tous, global en premier, avec la description, la visibilité, le nombre de portées et de modérateurs de chacun, admins compris (« None » quand seul root y fait les revues); cherchez par une partie d'un nom ou d'une description, et triez par nom ou par date de création. Deux onglets au-dessus, Shared et Personal, indiquent chacun combien d'espaces de travail correspondent à la recherche; Personal liste les espaces personnels de tous, chacun avec le courriel de son propriétaire (la recherche le trouve aussi).
La page d'un espace de travail est pour tous ceux qui le voient : sa description, sa visibilité, votre rôle (ou Ask to join) et ses portées. Ce que vous pouvez y faire n'apparaît que si vous le pouvez : ses admins et root en voient davantage.
- Scopes (l'onglet par défaut) : Create scope crée une portée dans cet espace de travail, et les icônes de chaque portée modifient sa description ou la déplacent (voir Déplacer une portée), pour root et ses admins. Le déplacement d'une portée s'affiche sous sa description.
- Members, pour root et ses admins, liste le nom, le courriel, le rôle et la date d'ajout de chacun, par nom ou par date d'ajout, 50 par page; cherchez par courriel ou par nom, et filtrez par rôle. Add members trouve des personnes par courriel ou par nom (sauf celles qui y sont déjà, root et les utilisateurs désactivés), permet d'en choisir plusieurs, et leur donne un rôle. Le rôle d'un membre change dès que vous en choisissez un autre, et Remove demande d'abord. Votre propre ligne ne peut pas être changée, et personne n'est retiré de
global. - Requests, pour ceux qui y répondent, liste les demandes d'adhésion ouvertes, de la plus ancienne à la plus récente, avec le message de chacune, et, pour root et ses admins, les déplacements de portées vers lui qui attendent une réponse.
Users, Audit log et Settings sont réservés à root : les admins d'un espace de travail gèrent leur espace depuis sa page, et son ancienne adresse sous /admin ouvre cette page.
- New workspace, réservé à root, dans Workspaces : un nom et une description. Le nom suit les règles des portées (lettres minuscules, chiffres et traits d'union, jusqu'à 64 caractères, sans commencer ni finir par un trait d'union), les noms réservés des portées et
globalsont déjà pris; root et ses admins peuvent le renommer par la suite. Il demande aussi si l'espace de travail est public ou privé, public étant choisi; root peut changer cela par la suite. - Edit description, sur la page d'un espace de travail, est pour root et ses admins. Make private ou Make public, réservé à root, change qui le voit : Make private liste les éléments extérieurs qui en dépendent, et est refusé tant qu'il y en a. La page de
globaln'a rien de cela, ni Rename ni Delete; celle d'un espace personnel n'a que Rename et Edit description. - Rename, sur la page d'un espace de travail, est pour root et ses admins;
globalgarde son nom. Le nouveau nom suit les mêmes règles et ne peut pas être celui d'un autre espace de travail. Ses éléments le prennent :@acme/team/lintdevient@acme-platform/team/lint. Leurs anciens noms continuent de fonctionner pour les installations, les fichiers de verrouillage et les dépendances, etrmkfait passer les projets aux nouveaux noms au fil de leurs mises à jour; dans Claude Code, ils apparaissent comme de nouveaux plugins. Les brouillons et les soumissions pas encore publiés prennent aussi les nouveaux noms. Les liens vers l'espace de travail (sa page et son lien d'adhésion) cessent de fonctionner, tout comme l'ancien nom dansrmk search --workspace,rmk feed build --workspaceet les workflows de CI qui le citent : l'ancien nom devient un nom qu'aucun espace de travail n'a, et un autre espace de travail peut le prendre. Ses membres, ses portées et ses demandes restent. - Delete est réservé à root, et ne fonctionne que tant que l'espace de travail n'a aucune portée (grisé avec « Move or remove its scopes first. ») : déplacez-les d'abord (voir Déplacer une portée). Les demandes de déplacement vers lui sont closes avec lui.
- Créer une portée : sur la page d'un espace de travail, Create scope en crée une dans cet espace de travail, pour root et ses admins; il n'y a pas d'autre endroit pour en créer une. Une portée peut passer à un autre espace de travail par la suite (voir Déplacer une portée).
La création d'un espace de travail, la modification de sa description ou de sa visibilité, son changement de nom, sa suppression, et l'ajout, la modification et le retrait de ses membres sont consignés dans le journal d'audit.
Déplacer une portée
Une portée passe à un autre espace de travail avec tous ses éléments : une équipe reprend une portée, quelque chose construit dans un espace personnel devient celui d'une équipe, ou quelque chose d'éprouvé dans une équipe va dans global, pour tout le monde. Sur la page d'un espace de travail, chaque portée a Move… pour root et les admins de l'espace de travail (pour un espace personnel, son propriétaire).
Qui doit accepter
- Root déplace aussitôt, après deux confirmations : la seconde demande de saisir le nom de la portée.
- Un admin de global qui déplace vers
globaldéplace aussitôt de la même façon. Toute autre personne qui déplace versglobaldemande, et seul root répond. - Un admin de l'espace de travail cible, ou une personne qui déplace vers son propre espace personnel, déplace aussitôt après une confirmation.
- Toute autre personne demande le déplacement, avec un message facultatif : les admins de la cible ou root répondent. Personne ne déplace une portée vers l'espace personnel de quelqu'un d'autre.
- Non révisées : une portée dont des versions publiées n'ont pas été révisées (venues d'un espace personnel) demande toujours, et c'est quelqu'un d'autre que vous qui répond : root, ou un admin de la cible (root seul pour
global). Approuver le déplacement les révise, au nom de cette personne.
La boîte de dialogue Move
Choisissez où, et le nom de la portée là-bas : le sien, sauf si l'espace de travail a déjà une portée de ce nom (« acme already has a scope called infra: pick another name for it there »). À mesure que vous choisissez, elle dit ce qui change : le nouveau nom de chaque élément (@infra/deploy → @acme/infra/deploy), qui les verra et les révisera, le travail ouvert de personnes qui ne sont pas membres de la cible (elles peuvent le lire et le retirer, pas le modifier), les versions non révisées, et ce qui refuse le déplacement. Ce qui se trouve dans un espace de travail que vous ne voyez pas est compté, jamais nommé. Le bouton dit ce qui se passe : Move scope ou Ask to move.
Ce qui refuse un déplacement
- Des éléments publiés hors d'une cible privée qui dépendent des éléments de la portée : ils ne s'installeraient plus pour qui ne voit pas la cible.
- Des versions publiées ou des soumissions de la portée elle-même qui dépendent d'éléments d'un autre espace de travail privé, dont elles ne pourraient pas dépendre là-bas.
- Un nouveau nom qui est l'ancien nom d'un autre élément, ou un nom de portée déjà pris là-bas.
Chacun est vérifié quand vous demandez et de nouveau quand quelqu'un approuve, ce qui laisse alors la demande ouverte avec la liste de ce qui la refuse. Les soumissions ouvertes hors de la cible qui dépendent de la portée sont un avertissement : elles échoueront à la publication.
Répondre
Les demandes attendent sur la page Requests, sous Scope moves, et dans l'onglet Requests de la cible : la portée et ses éléments, d'où et vers où, son nom là-bas, qui a demandé, le message, et ce qui la refuserait maintenant. Approve vérifie de nouveau et déplace; Decline peut donner une raison, affichée sur la ligne de la portée. D'ici là, la ligne dit « Moving to acme », avec Cancel pour qui a demandé et les admins de l'espace de travail. Une portée a un seul déplacement en attente à la fois. Si la personne qui a demandé n'est plus admin de l'espace de travail de la portée au moment de l'approbation, la demande est annulée.
Après le déplacement
- Ses éléments ont les noms de la cible. Leurs anciens noms continuent de fonctionner pour les installations, les fichiers de verrouillage et les dépendances, et
rmkfait passer les projets aux nouveaux à mesure qu'ils se mettent à jour; dans Claude Code, ils apparaissent comme de nouveaux plugins. Ramenée, une portée reprend ses anciens noms. - Qui les voit suit la cible, dès la requête suivante : qui ne voit pas la cible obtient « introuvable », et ses installations ne se mettent plus à jour. Ses modérateurs et admins révisent les soumissions ouvertes, qui désignent désormais les éléments par leurs nouveaux noms.
- Les versions, les étiquettes et les décomptes de téléchargements ne changent pas. Chaque étape est dans le journal d'audit.