Struct PluginManifest
pub struct PluginManifest {Show 13 fields
pub name: String,
pub version: String,
pub description: Option<String>,
pub author: Option<String>,
pub wasm_path: Option<String>,
pub wasm_sha256: Option<String>,
pub capabilities: Vec<PluginCapability>,
pub provides: Option<String>,
pub permissions: Vec<PluginPermission>,
pub config_schema: Option<Value>,
pub signature: Option<String>,
pub publisher_key: Option<String>,
pub egress: PluginEgressDeclaration,
}Expand description
A plugin’s declared manifest (loaded from manifest.toml alongside the .wasm).
Fields§
§name: StringPlugin name (unique identifier)
version: StringPlugin version
description: Option<String>Human-readable description
Author name or organization
wasm_path: Option<String>Path to the .wasm file (relative to manifest). Required for tool/channel/memory/observer plugins; optional (and ignored) for skill-only plugins, which carry no WASM payload.
wasm_sha256: Option<String>Lowercase or uppercase hexadecimal SHA-256 of the exact WASM payload. Required for executable plugins when signature policy is strict.
capabilities: Vec<PluginCapability>Capabilities this plugin provides
provides: Option<String>The compiled-in channel id this plugin mirrors, when it is a drop-in
for a built-in channel: the snake_case config id ("telegram",
"gmail_push").
When set, the host admits one logical instance per configured and
enabled [channels.<id>.<alias>] and binds each to that alias, instead
of the single [channels.plugin.<alias>] declaration a novel channel
plugin uses. Canonical channel config stays the one home for those
settings: a mirror never gets a second config surface.
None (the default) is a novel plugin with no built-in equivalent.
permissions: Vec<PluginPermission>Permissions this plugin requests
config_schema: Option<Value>Draft 2020-12 JSON Schema for this plugin’s private config object.
Required exactly when config_read is requested.
Direct top-level string properties marked x-secret: true are withheld
from public config and served through the scoped secrets import during
tool execution or channel service calls. Channel calls obtain the
remaining typed public object through the scoped config import.
signature: Option<String>Ed25519 signature over the canonical manifest (base64url-encoded). Set by the plugin publisher when signing the manifest.
publisher_key: Option<String>Hex-encoded Ed25519 public key of the publisher who signed this manifest.
egress: PluginEgressDeclarationDestinations this plugin declares it needs.
This is a signature-covered attestation of intent, never a grant:
nothing here confers network reach. The effective allowlist is the
operator’s plugins.entries[].egress_hosts. Keeping the two apart is
what shuts the self-grant path — an unsigned component that writes its
own [egress] table still reaches nothing.
Trait Implementations§
Source§impl Clone for PluginManifest
impl Clone for PluginManifest
Source§fn clone(&self) -> PluginManifest
fn clone(&self) -> PluginManifest
1.0.0 (const: unstable) · §fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more