Skip to main content

Module wire_manifest

Module wire_manifest 

Source
Expand description

The wire-level argument type a plugin manifest declares.

Guest plugins describe their signatures as JSON. Every loader that reads a manifest — the Extism loader and the Component-Model (uni-plugin-wasm) loader — has to agree on that schema, or the same manifest loads under one runtime and is rejected by the other.

They did not agree. Each loader carried its own WireArgType and the two had drifted: Extism’s had Primitive, CypherValue, Vector and Variadic; the Component-Model loader’s had only the first two. Because both use #[serde(tag = "kind", deny_unknown_fields)], a manifest declaring kind: "vector" or kind: "variadic" deserialized fine over Extism and failed to parse under the Component-Model loader.

The type lives here so there is one schema. It carries the union of what the two loaders needed from their derives: Serialize (Extism round-trips manifests), Deserialize (both parse them), and PartialEq + Eq (Extism’s export tests match on values).

Mapping to the internal crate::traits::scalar::ArgType stays in each loader, since the error types differ.

Enums§

WireArgType
Wire-level argument type shipped by a plugin manifest.