Plugin Manifest Reference
Enterprise 3.3.0+. A local .cjs entry exports { manifest, createFunctions }. createFunctions(config, host) may return a function map or a promise for it. It is optional only when no native functions are declared. Every declared export must resolve to a callable implementation. Factories run once per enabled installation in each worker, not in the engine process. Configuration is copied/frozen; manifest metadata must be JSON-only. Unknown schema fields fail validation.
Manifest
| Field | Type and requirement |
|---|---|
apiVersion | Required literal 1. |
id | Required identifier; must exactly match the deployment installation ID. |
version | Required semantic version string, including valid prerelease/build suffixes. This is the artifact's version, not the server version. |
variables | Optional array, default []. |
functions | Optional array, default []. |
mappings | Optional array, default []. Private IDs must be unique within an installation. |
Variables and functions
Variables require value, a JSON-only value, and at least one of localName or globalName. Native functions require export, a signature, and at least one of those exposure names. Native export names address the factory function map, not expression bindings. Names omit $; expressions use $name for variables and $name(...) for functions.
localName is installation-private. globalName is visible in ordinary evaluation and also inside its own installation. Declaring both creates two names for the same definition. These fields never create HTTP routes. Function signatures cannot accept function-valued arguments; use native-to-local callbacks instead.
Mappings
| Field | Type / default |
|---|---|
id | Required private identifier; never implicitly a function or provider mapping key. |
expression | Required nonempty FUME source. |
signature | Optional; default <x?o?:x>. Up to two arguments, no repeated arguments; the second must be optional object bindings. |
localName | Optional callable name inside the installation; also the name authorized for host callbacks. |
globalName | Optional callable name for ordinary evaluations. |
mappingRoute | Optional literal identifier, exposed at /Mapping/{mappingRoute}. |
rootRoute | Optional literal root path such as /classify. |
inheritGlobals | Optional boolean, default false. Selects isolated or opted-in mapping scope, not route authorization. |
All mapping exposures are independent. An inert mapping with none is inventory only. A route-only mapping is not callable. Global-only or route-only mappings are not host callback targets. The same private id may exist in two installations; registered route/function identities remain distinct.
Names and collisions
Installation/mapping IDs and mappingRoute match [A-Za-z][A-Za-z0-9_-]*. Binding/export names match [A-Za-z_][A-Za-z0-9_]*. Root routes are / plus one identifier, not patterns or URLs. __proto__, constructor and prototype are forbidden where identifiers/bindings are validated.
Root names Mapping, Template, auth, policy-builder, recache, and prefixes health/api-docs are reserved case-insensitively. Slashes after the root are incoming execution subroutes, not manifest path patterns; encoded paths and wildcard declarations are invalid.
Duplicate local names across definition kinds, duplicate globals, protected identity/metadata names, global built-in names, provider/global collisions, exposed Mapping/provider collisions and duplicate public routes fail safely. HTTP route collision checks are case-insensitive. Later inventory/binding changes are checked before source retrieval or execution; an alias target deleted after startup returns 404 rather than being reassigned.