Language SDKs for building nullapt WASM skills.
| Language | Package | Status |
|---|---|---|
| Rust | nullapt-sdk (crates.io) |
stable |
| TypeScript/Node | @nullapt/sdk (npm) |
stable |
| Go | github.com/nullapt/sdk/go (pkg.go.dev) |
beta |
# Cargo.toml
[dependencies]
nullapt-sdk = "0.1"
extism-pdk = "1"use nullapt_sdk::prelude::*;
#[derive(Deserialize)]
struct Input { query: String }
#[derive(Serialize)]
struct Output { result: String }
#[plugin_fn]
pub fn my_tool(input: Json<Input>) -> FnResult<Json<Output>> {
Ok(Json(Output { result: format!("got: {}", input.query) }))
}Build:
cargo build --target wasm32-wasip1 --release
cp target/wasm32-wasip1/release/my_skill.wasm skill.wasmnpm install @nullapt/sdkimport { validateManifest } from '@nullapt/sdk';
import skillJson from './SKILL.json';
validateManifest(skillJson); // throws if invalidgo get github.com/nullapt/sdk/gopackage main
import "github.com/nullapt/sdk/go/pdk"
//export my_tool
func myTool() int32 {
input := pdk.Input()
pdk.Output([]byte("result: " + string(input)))
return 0
}Build:
tinygo build -o skill.wasm -target wasi .See CONTRIBUTING.md.