O registro de plugins

Nesta página

O registro de plugins é o sucessor descentralizado do marketplace central. Nenhuma autoridade única o possui ou decide quais plugins são listados, e o índice que torna plugins descobríveis — o agregador — é algo que qualquer um pode executar. Quando você aponta seu site para um registro, o painel de administração navega e instala plugins de lá em vez do marketplace.

É construído sobre o AT Protocol, a rede por trás do Bluesky.

Registro vs. marketplace

Tanto o marketplace quanto o registro permitem que um administrador navegue, instale, atualize e remova plugins sandboxed do painel de administração. A experiência de instalação — consentimento de capacidades, verificação de checksum, o runner de sandbox — é a mesma. Diferem em quem controla o catálogo e em quem você confia.

MarketplaceRegistro
ControleUma empresa possui e operaSem proprietário central; qualquer um pode executar um agregador
DescobertaServido pelo serviço marketplaceServido por um agregador que indexa a rede
ModeraçãoO operador verifica listagens e pode removê-lasRotuladores emitem rótulos de remoção e verificação que você escolhe aceitar
Em quem você confiaO operador do marketplaceO agregador para o qual você aponta, mais quaisquer rotuladores que aceitar

Você configura um ou outro para um dado site. Quando experimental.registry está definido, os fluxos de navegação e instalação do admin usam o registro.

Habilitar o registro

O registro requer um sandboxRunner, porque plugins do registro sempre rodam em sandbox. Veja Instalando Plugins para a configuração do runner.

A seguinte configuração aponta um site para o agregador de referência:

import { defineConfig } from "astro/config";
import emdash from "emdash/astro";

export default defineConfig({
  integrations: [
    emdash({
      sandboxRunner: "@emdash-cms/sandbox-cloudflare",
      experimental: {
        registry: "https://registry.emdashcms.com",
      },
    }),
  ],
});

A string URL simples é uma abreviação. Use a forma de objeto quando precisar de um rotulador ou uma política de idade de release:

emdash({
  sandboxRunner: "@emdash-cms/sandbox-cloudflare",
  experimental: {
    registry: {
      aggregatorUrl: "https://registry.emdashcms.com",
      acceptLabelers: "did:plc:emdashverification",
      policy: {
        minimumReleaseAge: "48h",
        minimumReleaseAgeExclude: ["did:plc:yourfirstpartydid"],
      },
    },
  },
})

A URL do agregador deve ser HTTPS em produção (http://localhost é permitido em desenvolvimento).

Opções de configuração

  • acceptLabelers — uma lista separada por vírgulas de DIDs de rotuladores encaminhados ao agregador. Rotuladores aplicam rótulos de remoção e verificação; o agregador filtra e anota resultados de acordo com os que você aceita. Quando não definido, o agregador aplica seu conjunto padrão de operador.
  • policy.minimumReleaseAge — retém releases mais novos que esta idade ao escolher a versão para instalar ou atualizar, ampliando a janela para uma remoção chegar antes que um release comprometido alcance seu site. Aceita uma string de duração ("24h", "7d") ou um número de segundos.
  • policy.minimumReleaseAgeExclude — DIDs isentos da retenção, para publicadores cujo ritmo de release você aceitou explicitamente (como seus próprios plugins first-party). Cada entrada é um DID de publicador simples, ou um par <did>/<slug> para isentar um único pacote. Apenas DIDs são aceitos, não handles.
  1. Abra o painel de administração e navegue até Plugins > Registro.
  2. Navegue ou pesquise. Cada resultado mostra o handle verificado do publicador, a versão mais recente e quaisquer rótulos.
  3. Abra um plugin para ver seu README, capturas de tela, acesso declarado e histórico de releases.
  4. Clique em Instalar e revise o diálogo de consentimento de capacidades.
  5. Confirme.

A instalação verifica os bytes baixados contra o checksum do release, confirma que o id do plugin e versão do bundle correspondem ao release, e confirma que suas capacidades declaradas correspondem ao que você aprovou. Atualizações e desinstalação funcionam como para plugins do marketplace.

Modelo de confiança

O registro é descentralizado, então a confiança é explícita. Antes de ativar um plugin, o EmDash verifica independentemente que o hash dos bytes do artefato corresponde ao checksum do release, que o bundle endereça o id do plugin e versão que declara, e que suas capacidades correspondem ao diálogo de consentimento.

O que ler a seguir