scarab-plugin-api 0.3.3

Plugin API for Scarab terminal emulator: traits, manifest schema, and host bindings for building Scarab plugins
Documentation
# scarab-plugin-api

Plugin API for the [Scarab](https://github.com/raibid-labs/scarab) terminal
emulator. Defines the `Plugin` trait, manifest schema, host bindings, and
shared types that 3rd-party plugins build against.

> **Status: pre-1.0.** The API surface is in active development; expect
> breaking changes between 0.x minor versions until 1.0.

## What this crate provides

- The `Plugin` trait (lifecycle hooks: `on_load`, `on_output`, `on_input`,
  `on_remote_command`, …).
- `PluginManifest` schema with `Capability` and `FusabiModule` declarations.
- `HostBindings` — ECS-safe bindings with capability checks, quotas, and
  rate-limiting that plugins use to talk back to the host.
- Shared types: `MenuItem`, `RenderItem`, `KeyTable`, `FocusableRegion`, etc.

Plugins themselves are typically authored in [Fusabi](https://github.com/fusabi-lang/fusabi)
(`.fsx` source for hot-reloadable client UI scripts; `.fzb` compiled bytecode
for daemon-side hooks). Native Rust plugins are also possible by implementing
the `Plugin` trait directly when the host loader supports them.

## Versioning

Tracks the Scarab workspace version. The `API_VERSION` constant in `lib.rs`
is the version plugin manifests check against for compatibility.

## License

Dual-licensed under either:

- Apache License, Version 2.0 ([LICENSE-APACHE]../../LICENSE-APACHE)
- MIT License ([LICENSE-MIT]../../LICENSE-MIT)

at your option.