A human-friendly DSL for ATProto Lexicons mlf.lol

Add mlf unpublish command #85

Merged stavola.xyz
targeting main
Merged opened by and assigned to stavola.xyz
targeting main

Deletes every lexicon the workspace published, using the lol.mlf.package manifest as the list of NSIDs — so we never guess which records on the PDS belong to this workspace. Refuses to proceed if no manifest exists. After record deletes, the manifest record itself is removed.

Interactive confirmation by default; --yes skips. Each deleteRecord is idempotent (already-gone records are logged and skipped). Records whose NSID isn't a descendant of [package].name are skipped even if they appear in the manifest — guards against a hand-edited manifest that names foreign NSIDs. DNS TXT records are intentionally left in place so re-publishing doesn't require re-provisioning DNS.

This pull request has no versions submitted yet.