# maat-sdk-derive

Proc-macro derives for the MAAT engine SDK.

This crate provides the compile-time macros plugin authors use to
declare entity types, plugin manifests, event handlers, and predicate
gates without writing the underlying registration boilerplate:

- `#[derive(EntityType)]` — declares a plugin-defined entity type
  with its trait-data fields. Generates `Entity::TYPE_ID`,
  `Entity::blueprint()`, and a `linkme` registration entry.
- `#[plugin(canonical_id = "...", display_name = "...", ...)]` —
  declares the `ModelPlugin` impl's manifest.
- `#[handlers]` — registers a block of event handlers (filter /
  modify / commit / react) at compile time.
- `#[gate]` — declares an `Activatable.when` predicate as a typed
  IR rather than a string.

Use via the umbrella facade [`maat`](https://crates.io/crates/maat),
which re-exports these macros alongside the SDK runtime types.

## Status

Pre-1.0. API surface stable across patch releases but may break on
minor bumps until the engine reaches 1.0.

## Links

- Engine: [github.com/williamweatherholtz/MAAT](https://github.com/williamweatherholtz/MAAT)
- Plugin template: [github.com/williamweatherholtz/maat-plugin-template](https://github.com/williamweatherholtz/maat-plugin-template) (TBA)

## License

Dual MIT or Apache-2.0, at your option.
