[package]
name        = "maat-sdk-derive"
description = "Proc-macro derive for maat-sdk entities — generates `Entity` impls from annotated structs."
version.workspace      = true
edition.workspace      = true
rust-version.workspace = true
license.workspace      = true
repository.workspace   = true
authors.workspace      = true
readme      = "README.md"
keywords    = ["maat", "game-engine", "tabletop", "plugin", "macros"]
categories  = ["game-development", "development-tools::procedural-macro-helpers"]
publish     = true

[lib]
proc-macro = true

[dependencies]
proc-macro2 = "1"
syn = { version = "2", features = ["full", "extra-traits", "visit"] }
quote = "1"
blake3 = "1"

[dev-dependencies]
maat = { path = "../maat-vtt", package = "maat-vtt" }
maat-sdk = { path = "../sdk", features = ["wire"] }
# S25 Phase 5d-2-prep — `ModelPlugin` / `SetupContext` / etc. live in
# engine. Tests reach for them.
# S25 Phase 5e — `#[capability_plugin]` macro tests need the `wire`
# feature so `maat_sdk::wire::CapabilityFrame` and the
# `engine::plugin::CapabilityPlugin` trait surface are available.
maat-engine = { path = "../engine", features = ["wire"] }
# P6 regression guard — `tests/p6_native_path_populates_decls.rs`
# asserts a shipped native plugin's manifest reports populated
# `declared_handlers`. If the native linkme walker regresses to
# empty (as wasm32 does today), this test catches it.
maat-checkers = { path = "../../plugins/games/checkers" }
postcard = { version = "1", features = ["alloc"] }
serde = { version = "1", features = ["derive"] }
async-trait = "0.1"
tokio = { version = "1", features = ["macros", "rt"] }
