at.happyproto.plugin.releaseExtension

happyproto.at

Documentation

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.

main object

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 bytes
capabilities 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 items
languageId 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 bytes
namespace string Optional

Libraries only: the require() name, which is unique across installed plugins.

maxLength: 256 bytes
pluginType 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.

Known values: auth, library, interpreter
View 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"
}

Lexicon Garden

@