software.release.manifest

release.software

Samples

64 randomly sampled records from the AT Protocol firehose

software.release.manifest (32 samples)
{
  "$type": "software.release.manifest",
  "artifacts": [
    {
      "$type": "at.happyproto.plugin.v1",
      "apiVersion": "2",
      "capabilities": [
        "spaces:read",
        "spaces:write"
      ],
      "license": "MIT",
      "manifest": {
        "$type": "blob",
        "mimeType": "application/json",
        "ref": {
          "$link": "bafkreid6y2a7rkd6xmqho7lsckj5quqxkeowlwvjtmo5mvlk2i4yzvpk3y"
        },
        "size": 403
      },
      "namespace": "happyview.spaces",
      "package": {
        "$type": "blob",
        "mimeType": "application/wasm",
        "ref": {
          "$link": "bafkreidu6wim6yqt7ahjipai35bcuids2y2ftje5qjbxeyohzhcw7zkwze"
        },
        "size": 272109
      },
      "pluginType": "library",
      "sections": {
        "description": "Gives scripts the same access to permissioned spaces that HappyView's HTTP handlers have. A script can create a space, manage its members, read and write its records, and create invites. Policy checks, LtHash state and commit signing still happen in HappyView.\n\nSpaces are experimental in HappyView, behind the `feature.spaces_enabled` setting.\n\n## Usage\n\n```lua\nlocal spaces = require(\"happyview.spaces\")\n\nlocal space = spaces.create({spaceType = \"app.example.thing\", skey = \"s1\"})\n\nlocal h = spaces.get(space.uri)\nh:write_record({collection = \"app.example.thing\", record = {text = \"hi\"}})\nh:add_member({did = \"did:plc:abc\", access = \"write\"})\n\nlocal page = spaces.query({uri = space.uri, limit = 50})\n```\n\n## What it exposes\n\n- `create`, `accept_invite`, `info(uri)` and `query` at the top level.\n- `get(uri)` returns a handle for one space: `write_record`, `put_record`, `delete_record`, `add_member`, `set_member` (also `put_member`), `remove_member`, `update`, `delete`, `create_invite`, `members`, `is_member`, `access` and `records`.\n- Writes always act as the calling user, with that user's own membership and access level. If the space is hosted on the user's PDS, a write needs their OAuth session. Without it the write fails with `NOT_AUTHORIZED`, since writing only the local copy would leave the two copies out of sync.\n- Reads don't check a space's read policy. `spaces:read` sees every space's members and records, whoever runs the script.\n\n## Capabilities\n\n`spaces:read` and `spaces:write`, both **High tier**. Read covers `info`, `query`, `members`, `access`, `is_member` and `records`. Write covers everything else.\n",
        "installation": "You need HappyView v3 (this plugin's `api_version` is `\"2\"`) and an interpreter plugin (`happyview-lua`, `happyview-javascript` or `happyview-typescript`). Without one, no scripts run and nothing can call this library.\n\nInstalling takes one manifest URL. HappyView fetches the `.wasm` from the same place.\n\n```\nhttps://github.com/happyproto/plugins/releases/download/happyview-spaces-v1.0.0/manifest.json\n```\n\nThat's 1.0.0, the latest release as I write this. Newer ones are on the [releases page](https://github.com/happyproto/plugins/releases).\n\n## Install it\n\nPick one:\n\n1. **Dashboard.** Go to **Settings > Plugins > Add Plugin**, paste the manifest URL, review it and click **Install Plugin**.\n2. **Environment.** Set `PLUGIN_URLS` to `id|url`, optionally with `|sha256:<hash>` on the end. Separate multiple plugins with commas:\n   ```\n   PLUGIN_URLS=happyview-spaces|https://github.com/happyproto/plugins/releases/download/happyview-spaces-v1.0.0/manifest.json\n   ```\n3. **Filesystem.** Put `manifest.json` and `happyview-spaces.wasm` in a directory under `./plugins/`.\n\nThere are no secrets to configure, but spaces are experimental and off by default. Turn on the `feature.spaces_enabled` instance setting (dashboard **Settings**, or the admin API). Until you do, every call fails with `SPACES_DISABLED`.\n\n## Check it worked\n\nIt shows up on **Settings > Plugins**, and `require(\"happyview.spaces\")` in a Lua script (or `import` from `\"happyview.spaces\"` in JavaScript or TypeScript) loads without an error.\n",
        "security": "## Reporting a vulnerability\n\nPlease report vulnerabilities privately through [GitHub's advisory form](https://github.com/happyproto/plugins/security/advisories/new). Don't open a public issue for a vulnerability.\n\nOnly the latest release of this plugin gets fixes.\n\n## What this plugin can do\n\nIt declares `spaces:read` and `spaces:write`, both **High tier**. `spaces:read` reads every space's members and records, without checking the space's own read policy, so treat it as instance-wide read access to spaces. `spaces:write` creates spaces, accepts invites, and makes every mutating call on a space, always as the calling user with that user's own membership and access level.\n\nIt imports exactly the fifteen `host_spaces_*` functions. The loader refuses a module whose imports need more than it declares.\n\nThe plugin runs sandboxed in WASM with no filesystem access, and it only talks to HappyView through the host functions it imports. Policy enforcement, LtHash state and commit signing all stay in HappyView.\n\n## What's worth reporting\n\n- A write that succeeds without the caller having the membership or access level it needs.\n- A write to a PDS-hosted space that lands locally instead of failing without the user's session.\n- Any way to act on a space as a different user.\n"
      }
    }
  ],
  "project": "at://did:plc:mo7vq4jbioxwafy5zkcc3eux/software.release.project/happyview-spaces"
}

did:plc:mo7vq4jbioxwafy5zkcc3eux | at://did:plc:mo7vq4jbioxwafy5zkcc3eux/software.release.manifest/3myuujr7grv22

at.happyproto.plugin.v1 (nested within software.release.manifest) (32 samples)
{
  "$type": "software.release.manifest",
  "artifacts": [
    {
      "$type": "at.happyproto.plugin.v1",
      "apiVersion": "2",
      "capabilities": [
        "spaces:read",
        "spaces:write"
      ],
      "license": "MIT",
      "manifest": {
        "$type": "blob",
        "mimeType": "application/json",
        "ref": {
          "$link": "bafkreid6y2a7rkd6xmqho7lsckj5quqxkeowlwvjtmo5mvlk2i4yzvpk3y"
        },
        "size": 403
      },
      "namespace": "happyview.spaces",
      "package": {
        "$type": "blob",
        "mimeType": "application/wasm",
        "ref": {
          "$link": "bafkreidu6wim6yqt7ahjipai35bcuids2y2ftje5qjbxeyohzhcw7zkwze"
        },
        "size": 272109
      },
      "pluginType": "library",
      "sections": {
        "description": "Gives scripts the same access to permissioned spaces that HappyView's HTTP handlers have. A script can create a space, manage its members, read and write its records, and create invites. Policy checks, LtHash state and commit signing still happen in HappyView.\n\nSpaces are experimental in HappyView, behind the `feature.spaces_enabled` setting.\n\n## Usage\n\n```lua\nlocal spaces = require(\"happyview.spaces\")\n\nlocal space = spaces.create({spaceType = \"app.example.thing\", skey = \"s1\"})\n\nlocal h = spaces.get(space.uri)\nh:write_record({collection = \"app.example.thing\", record = {text = \"hi\"}})\nh:add_member({did = \"did:plc:abc\", access = \"write\"})\n\nlocal page = spaces.query({uri = space.uri, limit = 50})\n```\n\n## What it exposes\n\n- `create`, `accept_invite`, `info(uri)` and `query` at the top level.\n- `get(uri)` returns a handle for one space: `write_record`, `put_record`, `delete_record`, `add_member`, `set_member` (also `put_member`), `remove_member`, `update`, `delete`, `create_invite`, `members`, `is_member`, `access` and `records`.\n- Writes always act as the calling user, with that user's own membership and access level. If the space is hosted on the user's PDS, a write needs their OAuth session. Without it the write fails with `NOT_AUTHORIZED`, since writing only the local copy would leave the two copies out of sync.\n- Reads don't check a space's read policy. `spaces:read` sees every space's members and records, whoever runs the script.\n\n## Capabilities\n\n`spaces:read` and `spaces:write`, both **High tier**. Read covers `info`, `query`, `members`, `access`, `is_member` and `records`. Write covers everything else.\n",
        "installation": "You need HappyView v3 (this plugin's `api_version` is `\"2\"`) and an interpreter plugin (`happyview-lua`, `happyview-javascript` or `happyview-typescript`). Without one, no scripts run and nothing can call this library.\n\nInstalling takes one manifest URL. HappyView fetches the `.wasm` from the same place.\n\n```\nhttps://github.com/happyproto/plugins/releases/download/happyview-spaces-v1.0.0/manifest.json\n```\n\nThat's 1.0.0, the latest release as I write this. Newer ones are on the [releases page](https://github.com/happyproto/plugins/releases).\n\n## Install it\n\nPick one:\n\n1. **Dashboard.** Go to **Settings > Plugins > Add Plugin**, paste the manifest URL, review it and click **Install Plugin**.\n2. **Environment.** Set `PLUGIN_URLS` to `id|url`, optionally with `|sha256:<hash>` on the end. Separate multiple plugins with commas:\n   ```\n   PLUGIN_URLS=happyview-spaces|https://github.com/happyproto/plugins/releases/download/happyview-spaces-v1.0.0/manifest.json\n   ```\n3. **Filesystem.** Put `manifest.json` and `happyview-spaces.wasm` in a directory under `./plugins/`.\n\nThere are no secrets to configure, but spaces are experimental and off by default. Turn on the `feature.spaces_enabled` instance setting (dashboard **Settings**, or the admin API). Until you do, every call fails with `SPACES_DISABLED`.\n\n## Check it worked\n\nIt shows up on **Settings > Plugins**, and `require(\"happyview.spaces\")` in a Lua script (or `import` from `\"happyview.spaces\"` in JavaScript or TypeScript) loads without an error.\n",
        "security": "## Reporting a vulnerability\n\nPlease report vulnerabilities privately through [GitHub's advisory form](https://github.com/happyproto/plugins/security/advisories/new). Don't open a public issue for a vulnerability.\n\nOnly the latest release of this plugin gets fixes.\n\n## What this plugin can do\n\nIt declares `spaces:read` and `spaces:write`, both **High tier**. `spaces:read` reads every space's members and records, without checking the space's own read policy, so treat it as instance-wide read access to spaces. `spaces:write` creates spaces, accepts invites, and makes every mutating call on a space, always as the calling user with that user's own membership and access level.\n\nIt imports exactly the fifteen `host_spaces_*` functions. The loader refuses a module whose imports need more than it declares.\n\nThe plugin runs sandboxed in WASM with no filesystem access, and it only talks to HappyView through the host functions it imports. Policy enforcement, LtHash state and commit signing all stay in HappyView.\n\n## What's worth reporting\n\n- A write that succeeds without the caller having the membership or access level it needs.\n- A write to a PDS-hosted space that lands locally instead of failing without the user's session.\n- Any way to act on a space as a different user.\n"
      }
    }
  ],
  "project": "at://did:plc:mo7vq4jbioxwafy5zkcc3eux/software.release.project/happyview-spaces"
}

did:plc:mo7vq4jbioxwafy5zkcc3eux | at://did:plc:mo7vq4jbioxwafy5zkcc3eux/software.release.manifest/3myuujr7grv22

Lexicon Garden

@