Identity
pluginIdis the immutable identity.- The runtime action identity is the combination
pluginId + local action id. - Action IDs are unique within the same manifest.
- The runtime cannot change identity through a request payload.
Runtime
Setting keys use lower camelCase.
secret and oauth fields cannot carry a default value; raw credentials are not written into normal settings or the manifest.
The manifest should declare only the permission descriptors it needs. The runtime grant set is computed as declared ∩ user-granted.
Platforms and system declarations
platforms lists the desktop platforms the plugin runs on: windows, macos, linux. Without the field there is no platform restriction. evox-plugin pack also writes this list to the package root manifest.
A trusted-node (T1) plugin declares the programs it runs and the system paths it touches:
commandis a bare program name looked up on PATH. Paths, arguments and shell syntax are rejected.pathis absolute (/…), home-relative (~/…) or relative to a Windows environment variable (%APPDATA%\…);..segments are rejected.*matches within one segment; a path ending in/covers everything below it.accessisreadorwrite.- A
sandbox-js(T2) plugin cannot declare commands or paths; T2 has no such access at all.
Icon (glyph)
The plugin and each action can choose their own icon. If none is declared, both show
the default code icon; an action without a glyph falls back to the plugin glyph.
The full list of valid names is in
PLUGIN_GLYPH_NAMES (@evox/plugin-protocol). Adding a name to the list is a host-side change; if the glyph you need is missing, open a request.Conditional setting visibility (visibleWhen)
A setting can be shown only while another setting has a certain value.
keymust point to another setting in the samesettingsSchema. A reference to a key that does not exist, or to the field itself, gets the manifest rejected — both would silently hide the field forever.- The comparison is case-insensitive.
- If the referenced setting’s value is empty, that setting’s
defaultis used; in the example above, on a key that was never touchedpresetdefaults totests, so thepromptfield starts hidden. - The saved value of a hidden field is not deleted; when the user switches back to the option that satisfies the condition, they find the old value.
