feat(lexicon): lexicon resolution and publishing, permission sets in atproto-lexgen #130
Labels
No labels
breaking-change
bug
documentation
duplicate
enhancement
good first issue
help wanted
performance
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/ATProto.NET#130
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of the v0.7.0 update cycle (wave 6). Lexicon resolution and publication per the Lexicon spec, plus a leaner
atproto-lexgen. The owner opted in to this scope.Runtime (
ATProtoNet)com.atproto.lexicon.schemarecord model (rkey = the NSID) andcom.atproto.lexicon.resolveLexicon({nsid}→{cid, schema, uri}).ILexiconResolver: DNS_lexicon.<reversed authority>TXTdid=…→ DID → PDS →getRecord(com.atproto.lexicon.schema, nsid), with no hierarchical DNS walk. Includes a short cache and aresolveLexiconpath through a service. It uses the identity resolver and its SSRF policy.AtProtoScopes.Include(...)can optionally check that a permission set exists.atproto-lexgenpermission-setdefinitions:blob/account/identity; no wildcards; the rpcaud/inheritAudrules);Include(...)helpers.publish: write lexicons ascom.atproto.lexicon.schemarecords to a repo through a PDS (authenticated putRecord, rkey = NSID), and check or print the required_lexiconDNS TXT record. The currentpublishonly copies files into a local folder after a diff.resolve <nsid>: fetch a published lexicon.migrate: evaluate it honestly. If it only prints stubs, either make it produce something useful or remove it, and document why.nulldef type (dropped from the language in 2025-11). Forspacedefs, warn on*incollectionsand follow the proposal onnamelength.TypeMapper.GetLexiconType/InferStringFormat/ToCamelCase/NsidToFilePath/ParseTypeValue;CSharpEmitter.Emit(LexiconDocument),LexiconEmitter.JsonOptions;Program.cs, which has 0% coverage.CHANGELOG
Added(the resolver, permission sets, publish/resolve) andBreaking changes(CLI changes).