exomonad-core 0.1.0

ExoMonad core: effect system, WASM hosting, MCP server, built-in handlers, shared types
Documentation

ExoMonad Core: effect system, WASM hosting, MCP server, built-in handlers, shared types.

Architecture

WASM Guest (Haskell) - pure logic
    │
    │ yield_effect(EffectEnvelope)
    ▼
PluginManager (single host function: yield_effect)
    │
    │ EffectRegistry::dispatch by namespace
    ▼
EffectHandler implementations (git, github, agent, fs, ...)

Features

  • runtime (default): Full runtime with WASM hosting, effect handlers, MCP server, and all service integrations. This is what the exomonad binary uses.
  • Without runtime: Only lightweight UI protocol types (ui_protocol module). Used by exomonad-plugin (Zellij WASM target) which can't link heavy native deps.

Usage

use exomonad_core::{RuntimeBuilder, EffectHandler, EffectResult};
use async_trait::async_trait;

struct MyHandler;

#[async_trait]
impl EffectHandler for MyHandler {
    fn namespace(&self) -> &str { "my_domain" }
    async fn handle(&self, effect_type: &str, payload: &[u8]) -> EffectResult<Vec<u8>> {
        todo!()
    }
}

let runtime = RuntimeBuilder::new()
    .with_effect_handler(MyHandler)
    .with_wasm_bytes(wasm_bytes)
    .build()
    .await?;