Plugin Manifest

The plugin.json file declares your plugin's permissions, exports, and required config. Surfaced to users at install time so they know what they're consenting to.

Example

{
  "name": "telegram-channel",
  "version": "1.0.0",
  "description": "Telegram bot channel for OpenVesper",
  "author": "your name",
  "license": "MIT",
  "openvesperVersion": ">=1.7.0",
  "permissions": ["external", "mutation"],
  "exports": {
    "tools": ["telegram_send", "telegram_reply"],
    "agents": [],
    "channels": ["telegram"]
  },
  "config": {
    "TELEGRAM_BOT_TOKEN": {
      "required": true,
      "type": "string",
      "secret": true,
      "description": "Bot token from @BotFather"
    },
    "TELEGRAM_ALLOWED_CHATS": {
      "required": false,
      "type": "string[]",
      "description": "Comma-separated chat IDs to allow"
    }
  },
  "tags": ["channel", "messaging"],
  "repository": "https://github.com/openvesper/plugin-telegram"
}

Permission categories

PermissionWhat it allows
readRead-only API calls, file reads
externalOutbound API calls (general internet)
mutationSend messages, post, alter remote state
filesystemWrite to user's filesystem
shellRun shell commands

Install-time consent

When user runs vesper plugin install <path>, the CLI summarizes the manifest and asks for confirmation:

๐Ÿ“ฆ telegram-channel v1.0.0
   Telegram bot channel for OpenVesper

Requested permissions:
  - external: make external API calls
  - mutation: perform mutating actions

Exports:
  Tools:    telegram_send, telegram_reply
  Channels: telegram

Required config:
  - TELEGRAM_BOT_TOKEN (string, secret)

Install this plugin? [y/N]

Validating

import { manifestValidator } from "@openvesper/plugin-sdk";

const { valid, errors } = manifestValidator.validate(myManifest);
if (!valid) console.error(errors);

What's next?