at.happyproto.plugin.releaseExtension
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.
Details · object
| Kind | object |
|---|---|
| Authority | plugin.happyproto.at |
| Indexed |
Checks
Validunlimited-stringdefs.main.properties.pluginTypeNo maxLength, maxGraphemes or format limits this string.
{
"$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
}