hello plugin
Phase C Step 9 — proof-of-life plugin used by Server/plugin/plugin_test.go.
Manifest
plugin.json declares the commands, events, and storage capabilities.
The manifest is the only file the default (no--tags wazero) build needs —
the registry persists it into the plugins table without executing the .wasm.
Building the WASM
main.go in this directory implements the full plugin ABI
(allocate, deallocate, list_commands, command_dispatch, on_event).
The pre-built hello.wasm (925 KiB) is checked in, but you can rebuild it:
Prerequisites
| Tool | Version | Notes |
|---|---|---|
| TinyGo | 0.40.1 | Supports Go 1.19–1.25 only |
| Go | 1.25.x | TinyGo 0.40.1 rejects Go 1.26+ |
| wasm-opt | Binaryen 129 | Required by TinyGo for the wasi target |
On Windows, extract TinyGo to e.g. D:\Local-Lab\Coding\Software\tinygo and
add <tinygo>\bin plus <binaryen>\bin to PATH. Then point TinyGo at the
compatible Go SDK:
$env:GOROOT = "$env:USERPROFILE\sdk\go1.25.3" # installed via: go install golang.org/dl/go1.25.3@latest
$env:PATH = "$env:GOROOT\bin;$env:PATH"
Build command
# Run from this directory (Server/plugin/examples/hello/)
tinygo build -o hello.wasm -target wasi ./main.go
Tests
Server/plugin/plugin_test.go exercises the manifest parser and the loader
against this directory. It does not require the .wasm to be present —
manifest-only validation is the default-build coverage path.