Riot-Dienste
Serviceloop
- Verwende zuerst
riot-contributorfür den Repository-Workflow, die Handhabung von nicht bereinigtem Arbeitsverzeichnis und Validierungserwartungen. - Arbeite aus dem spezifischen Website-/Diensteverzeichnis; jeder Dienst besitzt seine eigenen
package.json,bun.lock,tsconfig.jsonund normalerweisewrangler.toml. - Verwende
bun run <script>anstelle der direkten Verwendung von Tools, wenn ein Skript existiert. - Bewahre service-spezifische Lockfiles auf. Füge keinen JS-Workspace auf Repository-Ebene hinzu, es sei denn, es wird explizit verlangt.
- Behandle Bereitstellungen, Remote-Migrationen, Live-E2E-Tests, Token-Änderungen, DNS-Änderungen und Änderungen an Produktionsdaten als Operationen, die eine explizite Benutzerfreigabe erfordern.
- Bevorzuge lokale Prüfungen und Fakes; Live-Tests sind durch service-spezifische Umgebungsvariablen opt-in.
Dienstzuordnung
sites/api.pkgs.ml: Paket-Registry-Steuerungsebene Worker. Besitzt Veröffentlichung/Authentifizierung/Suche/Ansichten/Ereignisse, D1-Migrationen, Drizzle-Schema, R2-Speicherschlüssel, Warteschlangen, Durable-Object-Veröffentlichungskoordination und D1-Backup-Workflow.sites/cdn.pkgs.ml: CDN Worker über Paketartefakten, Sparse-Index-Dokumenten, Riot/OCaml-Binärmetadaten und Zugriffsanalysen. Verwendet Registry-Typen/Speicherhilfen aus../api.pkgs.ml/srcwieder.sites/docs.pkgs.ml: Generierter Paketdokumentationsdienst. Serviert Dokumentation aus R2, konsumiert Paket-veröffentlichte/verarbeitete Warteschlangen, zeichnet Pipeline-Läufe/Ereignisse in der Registry-D1 auf und verwendet Cloudflare Sandbox-Container für die docs/build-Verifikation.sites/pkgs.ml: Öffentliche Paket-Registry-Webanwendung, Astro + Cloudflare-Adapter + React-Inseln. Liest Registry-Ansichts-APIs und Sparse-Index-Dokumente.sites/riot.ml: Hauptstatische Riot-Website, Astro + Tailwind, Pages-artige Bereitstellung.sites/get.riot.ml: Installationsskript-Weiterleitungs-/Proxy-Worker.
Cloudflare-Werkzeuge
- Verwende Wrangler für den Lebenszyklus von Worker/Astro-Diensten:
wrangler dev,wrangler deploy,wrangler d1 migrations apply,wrangler pages deploy,wrangler typesund konfigurationsgesteuerte lokale Entwicklung. - Halte die dienstlokale
wrangler-Abhängigkeit aktuell und durch die Lockdatei fixiert, anstatt dich auf eine globale Installation zu verlassen. - Verwende die einheitliche
cfCLI nur für API-/Ressourceninspektion oder Operationen, die sie derzeit bereitstellt, insbesondere Konto, Zone, DNS, D1 API, R2 API, Warteschlangen API, Workers API Metadaten und Schemaerkennung. - Bevor du
cffür echte Cloudflare-Änderungen verwendest, führenpx cf auth whoamiaus und überprüfe die Befehlsstruktur mitnpx cf agent-context <product>odernpx cf schema <command...>. - Ersetze Wrangler-Bereitstellungs-/Entwicklungs-/Migrationsskripte nicht durch
cf, es sei denn, der dienstspezifische Befehl wurde lokal verifiziert und unterstützt dasselbe konfigurationsgesteuerte Verhalten.
Konfiguration und Bindungen
- Halte
wrangler.toml, exportierteEnvTypeScript-Schnittstellen und Test-Fake-Umgebungen synchron. - Bevorzuge explizite
Env-Schnittstellen in Worker-Einstiegspunkten und gemeinsam genutzten Modulen. - Platziere Standardwerte, die keine Geheimnisse sind, in
[vars]; halte Geheimnisse in.env, Wrangler-Secrets oder von Cloudflare verwalteten Geheimnissen. - Füge für D1-Schemaänderungen in
api.pkgs.mlSQL-Migrationen untersites/api.pkgs.ml/migrations/hinzu und aktualisieresrc/schema.ts/DB-Hilfen zusammen. - Der D1-Zugriff zur Laufzeit erfolgt über Drizzle-Hilfen in
api.pkgs.ml/src/db.ts,metadata-db.ts,pipeline-db.ts,access-db.tsoder einem eng benannten Geschwistermodul. - R2-Objektschlüsselverträge leben in
api.pkgs.ml/src/storage.ts; aktualisiere CDN/API/Web-Nutzer und Tests gemeinsam bei Schlüsseländerungen. - Die Ereignisnutzlastform der Registry ist der benutzersichtbare Dienstverlauf. Füge neue Ereignistypen zu
api.pkgs.ml/src/types.ts, DB-Serialisierung, Ansichten und Tests hinzu.
Testen
- Führe
bun run checkdes geänderten Dienstes aus, bevor du fertig bist. - Führe
bun run testaus, wenn der Dienst lokale Tests definiert. - Führe
bun run deploy,bun run migrate:remoteoder Live-test:e2enicht aus, es sei denn, es wird explizit angefordert. - Für
api.pkgs.mlverwenden lokale TestsFakeR2Bucket,FakeD1Database,FakeQueueundFakeExecutionContextaustests/helpers.ts. - Für
cdn.pkgs.mlverwende Registry-Test-Fakes wieder, anstatt Cloudflare SDK-Mocks zu erfinden. - Für
docs.pkgs.mlbevorzuge Fake-Pipeline-Ausführer und Warteschlangen-Drain-Helfer; bestätige dauerhafte Reihenfolge durch Datenbanksequenz beim Testen von Ereignisströmen. - Führe für Astro-Dienste
bun run checkaus; erwarte, dass Astro.astro-Typdateien als Teil der Prüfung neu generiert.
Webarbeit
- Passe den bestehenden UI-Stack jedes Dienstes an.
pkgs.mlverwendet Astro-Serverausgabe, React-Inseln, Tailwind und Cloudflare-Adapter;docs*.mlverwenden Starlight, wo zutreffend;riot.mlist eine statische Astro-Website. - Halte die ersten Bildschirme als tatsächliche Produkt-/Dienstoberflächen, nicht als Marketing-Platzhalter.
- Verwende vorhandene Komponenten, Layouts, CSS-Token, Schriftarten und Routen-Konventionen, bevor du Abstraktionen hinzufügst.
- Bevorzuge für Registry-Webänderungen Registry-Ansichts-APIs in
sites/pkgs.ml/src/lib/web-views.tsund Sparse-Index-Hilfen inpackage-index.ts.
Betriebssicherheit
- Behandle Produktionsendpunkte als echt:
api.pkgs.ml,registry.pkgs.ml,cdn.pkgs.ml,pkgs.ml,docs.pkgs.ml,docs.riot.ml,play.riot.ml,riot.mlundget.riot.ml. - Führe niemals Remote-D1-Wiederherstellung/Export/Import, DNS-Schreibvorgänge, Routen-/Domain-Schreibvorgänge, Bereitstellungen oder Token-Operationen ohne explizite Benutzeranweisung aus.
- Wenn ein Live-Smoke-Test angefordert wird, lies zuerst die README/Umgebungsgates dieses Dienstes und gib an, welche Umgebungsvariablen den Test destruktiv oder authentifiziert machen.