UTTORI ASM ยท IN DEVELOPMENT
Plugin contracts
Preserve the public plugin lifecycle and target contracts when authoring a plugin.
- Default-export an
AssemblerPlugincreated withdefinePlugin()from@uttori/asm-core/plugin. Declare a unique manifest ID, version, andPLUGIN_API_VERSION. - Validate options before activation. Name every contribution and alias to avoid collisions.
- Register immutable contributions during activation. Allocate mutable state through session slots.
- Implement bounds-safe decoding and explicit encoder sizing. A decoder-only architecture cannot serve as an assembly target.
- Release external resources through the plugin disposal contract. Hosts dispose sessions before disposing the manager/environment they own.
- Import public core entry points. Do not import files from another package's internal source tree.
Before publishing, test malformed options, repeated sessions, decoder bounds, encode/decode vectors,
and disposal. Run npm pack, install that archive in a separate project, and repeat the one-byte
example using the installed package name. Document requirements, setup, API, limits, and license.