lexicons #
Vendored copies of the upstream schemas the CMS references. My own dev.roe.*
schemas are not here: they are written in TypeScript in ../lexicons.ts
with airspace, which derives the record types, the
collection clients and the OAuth scopes from the same definitions.
The files under community/ are verbatim copies of
Lexicon Community schemas,
checked against the com.atproto.lexicon.schema records published at
did:plc:mtr7qrqtcyseedx3jyr5o7db:
community.lexicon.app.defs—#link,#image,#statusand#aspectRatio, used bydev.roe.project,dev.roe.usesItem,dev.roe.talkanddev.roe.amainstead of home-grown equivalents.community.lexicon.location.address— the body ofdev.roe.location.
The files under site/standard/ are copies of the
standard.site schemas published at
did:plc:re3ebnp5v7ffagz6rb6xfei4. shared/standard-site.ts turns
site.standard.publication and site.standard.document into collections, which
the build-time sync writes to. com/atproto/label/defs.json is here because
both of them reference #selfLabels.
Refresh them from upstream when the shared defs change.
pnpm lex:genregenerates the TypeScript inshared/lex/from these files.lexicons.tsreferences the output directly (l.ref(() => appDefs.image)).pnpm lex:publishwrites eachdev.roe.*schema to the PDS as acom.atproto.lexicon.schemarecord, reading them fromlexicons.ts. Schemas outside thedev.roeauthority are never republished under my DID. It readsNUXT_ATPROTO_PASSWORDfrom.env; the DID and PDS endpoint are resolved from the handle. Add--dry-runto see the plan without credentials.
Third-party resolution also needs a DNS TXT record for the dev.roe authority
(reverse the NSID minus its final segment):
_lexicon.roe.dev TXT "did=<did of the repo the schemas were published to>"
pnpm lex:publish prints the exact value to use.
Resolution is not hierarchical, so any future authority (e.g. dev.roe.cms)
needs its own _lexicon.cms.roe.dev record.