at.happyproto.plugin.releaseExtension

happyproto.at

{
  "$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
}

Validate Record

Validate a record against at.happyproto.plugin.releaseExtension

Validation Options
Treat any remaining unresolved references as valid

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.

  • 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 …

  • 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.

  • com.emdashcms.experimental.package.release recordnot from the namespace authority

    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.

Lexicon Garden

@