Parser manifest fields
Generated by scripts/gen-manifest-reference.py from build/parser-plugin.schema.json. Do not edit by hand: change the schema, then run the script.
Generated page. It is built from
build/parser-plugin.schema.json, the schema thatscripts/validate-parser-plugin.pychecks every manifest against.SPEC.mdsection 2 is the normative text; where they differ,SPEC.mdwins.
Manifest for a Poka parser plugin (SPEC.md, interface version 1). Fields the desktop host deserialises without a default (ExtensionManifest / WasmConfig in poka-interfaces) are required here, so a manifest that passes cannot fail to load there.
Fields
| Field | Type | Required | Constraints | Meaning |
|---|---|---|---|---|
id |
string | yes | pattern ^[a-z0-9]+(-[a-z0-9]+)*$ |
Canonical poka-<name>. |
name |
string | yes | min length 1 | Display name shown in the app, e.g. Csv Preview. |
version |
string | yes | pattern ^[0-9]+\.[0-9]+\.[0-9]+$ |
SemVer. |
kind |
"parser" |
yes | Never a viewer. | |
file_extension |
string | yes | pattern ^(\.[^\s]+)?$ |
Extension routed here, e.g. .svg. Required because the host has no default for it; empty when the parser is routed by filename or aliases only, or is disabled. |
filename |
string | no | min length 1 | Exact filename routed here, for formats with no extension (Doxyfile, PKGBUILD). |
aliases |
array of strings | no | unique items | Further extensions/filenames routed here. They are routing claims like file_extension: another enabled manifest must not claim the same key. |
viewer |
one of a fixed list | no | Composed viewer: the host pipes this parser's output into the named shared viewer (SPEC section 5). Must be one of the viewers poka-viewers ships (poka-viewers/viewers/*/plugin.json); scripts/test-parser-plugin.py checks this list against a sibling poka-viewers checkout when one is present. | |
disabled |
boolean | no | default false |
Host skips registration when true, so the manifest cannot win a route; it must still conform, and must say why in disabled_reason. |
disabled_reason |
string | no | Host diagnostic explaining why registration is disabled; required when disabled is true. | |
role |
"parser" |
no | Legacy host role override, consistent with kind. | |
abi |
integer | no | min 1 | Runtime ABI version, not the spec interface version; omitted means newest supported by the host. |
wasm |
object | yes | The module and its caps. | |
wasm.path |
string | yes | min length 1 | The .wasm filename, relative to the manifest directory. |
wasm.sha256 |
string | yes | pattern ^([a-f0-9]{64})?$ |
Empty until packaged. |
wasm.size |
integer | yes | min 0 | 0 until packaged. |
wasm.memory_mb |
integer | yes | min 2; max 1024 | MiB. A Rust wasm32-wasip1 module starts with a 1 MiB stack plus its data, at least 17 pages, so 1 can never instantiate. |
wasm.max_time_ms |
integer | yes | min 1 | Wall-clock budget in milliseconds. The host stops the module when it runs out. |
Rules across fields
- An enabled parser must be routable: a nonempty file_extension, a filename, or at least one alias. A disabled manifest may declare no route.
Viewers a manifest can name
poka-3d-viewerpoka-chart-viewerpoka-code-viewerpoka-diff-viewerpoka-ebook-viewerpoka-font-viewerpoka-image-with-meta-viewerpoka-metadata-card-viewerpoka-pdf-viewerpoka-slide-viewerpoka-svg-viewerpoka-table-viewerpoka-text-viewerpoka-tree-viewerpoka-vector-viewerpoka-workbook-viewer