core data model and parser for lepiter knowledge bases stored as page json files.
scope
- scans a lepiter directory and builds a metadata index keyed by page id.
- loads and parses individual pages lazily by id.
- converts page snippet trees into a stable block-oriented node model.
- preserves unknown node types as [
Node::Unknown] to keep consumers resilient. - provides a plugin sdk for external snippet renderers (
pluginmodule).
example
use lepiter_core::KnowledgeBase;
# fn main() -> anyhow::Result<()> {
let index = KnowledgeBase::open("./lepiter")?;
for page in index.sorted_pages() {
println!("{} - {}", page.id, page.title);
}
# Ok(())
# }
plugin sdk
use lepiter_core::plugin::{PluginRequest, PluginResponse};
use lepiter_core::lepiter_plugin_main;
fn handle(req: PluginRequest) -> PluginResponse {
if req.typ != "wardleyMap" {
return PluginResponse::error("unsupported type");
}
PluginResponse::ok(vec!["example".to_string()])
}
lepiter_plugin_main!(handle);