vagus-plugin-protocol 0.1.0

Wire schema for the vagus plugin NDJSON contract (shared by vagus core and the vagus-plugin SDK)
Documentation
  • Coverage
  • 54.05%
    20 out of 37 items documented0 out of 5 items with examples
  • Size
  • Source code size: 11.86 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 561.56 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 11s Average build duration of successful builds.
  • all releases: 11s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • vasovagal/vagus
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • xrl

Wire schema for the vagus plugin contract — the language-agnostic protocol a vagus-<name> plugin speaks back to vagus core over stdout.

This crate is intentionally tiny and dependency-light (serde only). It is shared by both vagus core (which parses the events) and the vagus-plugin SDK (which emits them) so the on-the-wire shape can never drift between the two. Non-Rust plugins ignore this crate and just emit the documented JSON; see docs/plugin-contract.md.

The contract in one paragraph

Core spawns vagus-<name> as a child with the subcommand name stripped from argv, stdin/stderr inherited, stdout piped, and the env vars set. The plugin streams newline-delimited JSON [Event]s on stdout (machine channel) and writes human logs to stderr. Any stdout line that does not parse as a known [Event] is echoed verbatim by core (so trivial text-only plugins still work). On a clean exit, core indexes every [Event::Note] path it saw.