hm-plugin-sdk 0.0.1

Authoring SDK for hm plugins. Wraps extism-pdk with hm-specific traits and macros.
Documentation

Authoring SDK for hm plugins.

Plugins build to cdylib and target wasm32-wasip1. The canonical plugin entry point is the [register_plugin!] macro, which wires every capability the plugin implements to the right Extism export.

use hm_plugin_sdk::*;
use hm_plugin_protocol::*;

struct MyExec;
impl StepExecutor for MyExec {
    fn run(&self, input: ExecutorInput) -> Result<StepResult, PluginError> {
        host::log(Level::Info, &format!("running {}", input.step.key));
        Ok(StepResult { exit_code: 0, committed_snapshot: None, artifacts: vec![] })
    }
}

register_plugin!(
    manifest = PluginManifest {
        api_version: HM_PLUGIN_API_VERSION,
        name: "my-exec".into(),
        version: semver::Version::parse("0.1.0").unwrap(),
        description: "demo".into(),
        capabilities: vec![Capability::StepExecutor(StepExecutorSpec {
            runner: "demo".into(), default: false, step_schema: None,
        })],
        required_host_fns: vec!["hm_log".into()],
        config_schema: None,
        allowed_hosts: vec![],
    },
    executor = MyExec,
);