Serviços Riot
Ciclo de Serviço
- Use
riot-contributorprimeiro para fluxo de trabalho do repositório, manipulação de árvore suja e expectativas de validação. - Trabalhe a partir do diretório específico do site/serviço; cada serviço possui seu próprio
package.json,bun.lock,tsconfig.jsone geralmentewrangler.toml. - Use
bun run <script>em vez de invocar ferramentas diretamente quando existir um script. - Preserve lockfiles por serviço. Não adicione um workspace JS na raiz do repositório a menos que seja explicitamente solicitado.
- Trate deploys, migrações remotas, testes e2e ao vivo, alterações de tokens, alterações de DNS e alterações em dados de produção como operações que exigem aprovação explícita do usuário.
- Prefira verificações locais e fakes primeiro; testes ao vivo são opcionais através de variáveis de ambiente específicas do serviço.
Mapa de Serviços
sites/api.pkgs.ml: Worker do plano de controle do registro de pacotes. Possui publicar/auth/buscar/visualizações/eventos, migrações D1, esquema Drizzle, chaves de armazenamento R2, filas, coordenação de publicação de Durable Objects e fluxo de trabalho de backup D1.sites/cdn.pkgs.ml: Worker CDN sobre artefatos de pacotes, documentos de índice esparso, metadados binários Riot/OCaml e análises de acesso. Reutiliza tipos de registro/auxiliares de armazenamento de../api.pkgs.ml/src.sites/docs.pkgs.ml: serviço de documentação gerada de pacotes. Serve docs do R2, consome filas de pacotes publicados/processados, registra execuções/eventos de pipeline no D1 do registro e usa contêineres Cloudflare Sandbox para verificação de construção de docs.sites/pkgs.ml: aplicativo web público do registro de pacotes, Astro + adaptador Cloudflare + ilhas React. Lê APIs de visualização do registro e documentos de índice esparso.sites/riot.ml: site estático principal do Riot, Astro + Tailwind, implantação estilo Pages.sites/get.riot.ml: Worker de redirecionamento/proxy do script de instalação.
Ferramentas Cloudflare
- Use Wrangler para ciclo de vida de serviços Worker/Astro:
wrangler dev,wrangler deploy,wrangler d1 migrations apply,wrangler pages deploy,wrangler typese desenvolvimento local orientado por configuração. - Mantenha a dependência
wranglerlocal do serviço atualizada e fixada pelo lockfile em vez de depender de uma instalação global. - Use a CLI unificada
cfapenas para inspeção de API/recursos ou operações que ela atualmente expõe, especialmente conta, zona, DNS, API D1, API R2, API de filas, metadados da API Workers e descoberta de esquema. - Antes de usar
cfpara mutações reais no Cloudflare, executenpx cf auth whoamie inspecione a forma do comando comnpx cf agent-context <product>ounpx cf schema <command...>. - Não substitua scripts de deploy/dev/migração do Wrangler por
cfa menos que o comando específico do serviço tenha sido verificado localmente e suporte o mesmo comportamento orientado por configuração.
Configuração e Bindings
- Mantenha
wrangler.toml, interfaces TypeScriptEnvexportadas e ambientes fake de teste sincronizados. - Prefira interfaces
Envexplícitas em entrypoints de Worker e módulos compartilhados. - Coloque defaults não secretos em
[vars]; mantenha segredos em.env, segredos Wrangler ou segredos gerenciados pelo Cloudflare. - Para alterações de esquema D1 em
api.pkgs.ml, adicione migrações SQL emsites/api.pkgs.ml/migrations/e atualizesrc/schema.ts/auxiliares DB juntos. - O acesso D1 em tempo de execução passa por auxiliares Drizzle em
api.pkgs.ml/src/db.ts,metadata-db.ts,pipeline-db.ts,access-db.tsou um arquivo irmão com nome restrito. - Os contratos de chave de objeto R2 ficam em
api.pkgs.ml/src/storage.ts; atualize consumidores CDN/API/web e testes juntos ao alterar chaves. - A forma do payload de evento do registro é histórico de serviço voltado ao usuário. Adicione novos tipos de evento em
api.pkgs.ml/src/types.ts, serialização DB, visualizações e testes.
Testes
- Execute
bun run checkdo serviço alterado antes de finalizar. - Execute
bun run testquando o serviço definir testes locais. - Não execute
bun run deploy,bun run migrate:remoteoutest:e2eao vivo a menos que explicitamente solicitado. - Para
api.pkgs.ml, testes locais usamFakeR2Bucket,FakeD1Database,FakeQueueeFakeExecutionContextdetests/helpers.ts. - Para
cdn.pkgs.ml, reutilize fakes de teste do registro em vez de inventar mocks do SDK Cloudflare. - Para
docs.pkgs.ml, prefira executores de pipeline fake e auxiliares de drenagem de fila; afirme ordenação durável por sequência do banco de dados ao testar fluxos de eventos. - Para serviços Astro, execute
bun run check; espere que Astro regenere arquivos de tipo.astrocomo parte da verificação.
Trabalho Web
- Combine com a stack de UI existente de cada serviço.
pkgs.mlusa saída de servidor Astro, ilhas React, Tailwind e adaptador Cloudflare;docs*.mlusam Starlight quando aplicável;riot.mlé um site Astro estático. - Mantenha primeiras telas como superfícies reais de produto/serviço, não placeholders de marketing.
- Use componentes, layouts, tokens CSS, fontes e convenções de rota existentes antes de adicionar abstrações.
- Para alterações web do registro, prefira APIs de visualização do registro em
sites/pkgs.ml/src/lib/web-views.tse auxiliares de índice esparso empackage-index.ts.
Segurança Operacional
- Trate endpoints de produção como reais:
api.pkgs.ml,registry.pkgs.ml,cdn.pkgs.ml,pkgs.ml,docs.pkgs.ml,docs.riot.ml,play.riot.ml,riot.mleget.riot.ml. - Nunca execute restore/export/import D1 remoto, gravações DNS, gravações de rota/domínio, deploys ou operações de token sem direção explícita do usuário.
- Se um teste de fumaça ao vivo for solicitado, leia o README/env gates desse serviço primeiro e indique quais variáveis de ambiente tornam o teste destrutivo ou autenticado.