at.happyproto.plugin.releaseExtension
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "The HappyView-specific half of a release, carried at extensions['at.happyproto.plugin.releaseExtension']. It is the plugin manifest, moved into the signed record so a consent screen renders without downloading the module. It is not trusted: the loader checks it against the module's plugin_info export and its import section, so a release that misstates what its WASM does is refused exactly as a checksum mismatch is.",
"properties": {
"allowedHosts": {
"description": "Hosts an outbound request may reach, as in today's manifest. The one constraint the capability model already has.",
"items": {
"maxLength": 256,
"type": "string"
},
"type": "array"
},
"apiVersion": {
"description": "'2' or later, as validate_manifest already requires.",
"maxLength": 16,
"type": "string"
},
"capabilities": {
"description": "The trust contract. The loader cross-checks it against the module's actual imports, so a plugin cannot import what this does not cover.",
"items": {
"maxLength": 128,
"type": "string"
},
"type": "array"
},
"fileExtensions": {
"description": "Interpreters only: the file extensions a project's scripts in this language use, without the dot, as in the manifest's `extensions`. A project maps `getArtifact.lua` to the interpreter claiming `lua`, so a client that installs from the registry needs this to build that map without downloading the module. Optional, because releases published before it existed carry none.",
"items": {
"maxLength": 16,
"minLength": 1,
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"languageId": {
"description": "Interpreters only: what scripts.script_type holds. Lowercase alphanumerics plus '-' and '_', starting with a letter, because the value has to survive a column, a URL and an editor mode name.",
"maxLength": 64,
"type": "string"
},
"namespace": {
"description": "Libraries only: the require() name, which is unique across installed plugins.",
"maxLength": 256,
"type": "string"
},
"pluginType": {
"description": "Every type requires an api_version of '2' or later and must declare its capabilities; there is no lower-version fallback for any of them.",
"knownValues": [
"auth",
"library",
"interpreter"
],
"type": "string"
}
},
"required": [
"pluginType",
"apiVersion",
"capabilities"
],
"type": "object"
}
},
"id": "at.happyproto.plugin.releaseExtension",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mo7vq4jbioxwafy5zkcc3eux - CID
-
bafyreicdfhnnp4rlompy3nko7h2vqfrjzt2u5vddwsb6q3zm6behs4blte - Indexed At
- 2026-10-19 18:20 UTC
- AT-URI
-
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.plugin.releaseExtension
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
at.happyproto.plugin.v1 object
A HappyView plugin, as one entry in a software.release.manifest's `artifacts`. It carries the module and its manifest.json as blobs, so they are verified by their CIDs, and the manifest's facts in the signed record, so …
-
at.happyproto.plugin.release record
One version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.
-
Plugin package release record. EXPERIMENTAL: this NSID is part of the experimental phase of the EmDash plugin registry. The stable namespace target is com.emdashcms.package.release.