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
array
of string
Optional
Hosts an outbound request may reach, as in today's manifest. The one constraint the capability model already has.
apiVersion
string
Required
'2' or later, as validate_manifest already requires.
maxLength: 16 bytescapabilities
array
of string
Required
The trust contract. The loader cross-checks it against the module's actual imports, so a plugin cannot import what this does not cover.
fileExtensions
array
of string
Optional
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.
maxLength: 8 itemslanguageId
string
Optional
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 bytesnamespace
string
Optional
Libraries only: the require() name, which is unique across installed plugins.
maxLength: 256 bytespluginType
string
Required
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.
auth, library, interpreterView raw schema
{
"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"
}